顯示具有 Embedded Boards-Raspberry Pi (樹梅派) 標籤的文章。 顯示所有文章
顯示具有 Embedded Boards-Raspberry Pi (樹梅派) 標籤的文章。 顯示所有文章

2015年10月15日 星期四

Raspberry Pi:安裝Apache、PHP、Mariadb


1.更新套件資訊
pi@raspberrypi ~ $ sudo apt-get update & sudo apt-get upgrade

2.安裝 Apache 、 PHP 、Mariadb
pi@raspberrypi ~ $ sudo apt-get install apache2 php5 libapache2-mod-php5 php5-mysql mariadb-server mariadb-client

3.測試是否安裝成功
修改 /etc/apache2/sites-enabled/000-default.conf
pi@raspberrypi ~ $ sudo /etc/apache2/sites-enabled/000-default.conf
DocumentRoot /var/www/

重啟 Apache
 pi@raspberrypi ~ $ sudo systemctl restart apache2.services

在 /var/www/ 目錄下 新增 index.php
 pi@raspberrypi ~ $ sudo vim /var/www/index.php
<?php
phpinfo();
?>

成功畫面如下:


Mariadb 成功畫面如下:



參考文獻:http://www.htpcguides.com/install-wordpress-on-raspberry-pi-with-raspbian/






2015年10月7日 星期三

Raspberry Pi GPIO (四) 使用 C 控制 LED

這是個簡單的範例,所以就沒有接上保護的電路,直接實作,但是
如果接錯線讓板子燒掉的話,請自行負責。

首先將 3.3V (pin 1) 接到 LED的正端,然後接上保護電阻 (220~1K),
最後接上 GPIO0 (pin 11)。

打開終端機,用 pi 執行以下指令:

pi@raspberrypi ~ $ vim blink.c

#include <stdio.h>
#include < wiringPi.h>
#define    LED        0

int main (void)
{
        printf ("Raspberry pi blink\n") ;

        wiringPiSetup () ;
        pinMode (LED, OUTPUT) ;

        for (;;)
        {
        digitalWrite (LED, HIGH) ;   // On
        delay (500) ;            // mS
        digitalWrite (LED, LOW) ;    // Off
        delay (500) ;
        }
        return 0 ;
}
存檔後就可以執行以下指令來執行程式:
pi@raspberrypi ~ $ gcc -o blink blink.c –lwiringPi
pi@raspberrypi ~ $ sudo ./blink

實際影片:

https://youtu.be/Ei08Dl4VXys






參考文獻:http://wiringpi.com/examples/quick2wire-and-wiringpi/install-and-testing/

Raspberry Pi 安裝 WiringPi控制GPIO

WiringPi包含命令列的gpio函數庫工具,可以使用程式控制gpio,透過shell scripts讀寫。

1.      安裝git-core 套件,在安裝之前先更新及升級套件。

pi@raspberrypi ~ $ sudo apt-get update
pi@raspberrypi ~ $ sudo apt-get upgrade
pi@raspberrypi ~ $ sudo apt-get install git-core 

2.      使用Git 下載程式

git clone git://git.drogon.net/wiringPi 

3.      取得最新版本

pi@raspberrypi ~ $ cd wiringPi
pi@raspberrypi ~ / wiringPi $ git pull origin 

4.      如果已經是最新版本,可以執行以下指令:

pi@raspberrypi ~ $ cd wiringPi
pi@raspberrypi ~ / wiringPi $ sudo ./build

5.      測試WiringPi是否安裝完成

顯示版本:出現一些版權宣言,並告知這個軟體是免費的
pi@raspberrypi ~ / wiringPi $ gpio -v
gpio version: 2.29
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:  
Type: Model B, Revision: 2, Memory: 512MB, Maker: Egoman 
Device tree is enabled.
This Raspberry Pi supports user-level GPIO access.
    -> See the man-page for more details

顯示目前所有GPIO的輸入或輸出狀態
pi@raspberrypi ~ / wiringPi $ sudo gpio readall
   



參考網頁:
http://atceiling.blogspot.tw/2014/02/raspberry-pi-wiringpi-gpio.html#.VhTXvPmqpBc




Raspberry Pi 設置無線網路 (USB WiFi: Tenda RT5370)


1. 確認硬體資訊,使用 RT5370這張無線網卡做設定。建議使用的網卡有在清單中,才可隨插即用。

pi@raspberrypi ~ $ lsusb
          
Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

2. 查看目前無線網路設定,一開始還沒連接上無線網路,所以狀態會是 “off”。

pi@raspberrypi ~ $ iwconfig wlan0
        
wlan0             IEEE 802.11bgn ESSID:off/any
                       Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
                       Retry short limit:7 RTS thr:off Fragment thr:off
                        Power Management:off

3. 掃描無線網路,我們會根據掃描結果來設定無線網路。假設本例的 SSID 為AAA,加密方式為 WPA2,使用的 pre-shared key 為1234567890。

pi@raspberrypi ~ $ sudo iwlist wlan0 scan
        
Cell 03 - Address: B8:55:10:E4:30:9C
               Channel:5
                Frequency:2.432 GHz (Channel 5)
                Quality=65/70 Signal level=-45 dBm
                Encryption key:on
                ESSID:"AAA "
                Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s9 Mb/s; 12 Mb/s; 18 Mb/s
                Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s 

4. 修改 /etc/wpa_supplicant/wpa_supplicant.conf

pi@raspberrypi:~$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
        
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
                  ssid="AAA"
                  psk="123456789"proto=RSNkey_mgmt=WPA-PSKpairwise=CCMP auth_alg=OPEN
} 

5. 停用 wlan0 網卡。

pi@raspberrypi ~ $ sudo ifdown wlan0

6. 啟用 wlan0 網卡。

pi@raspberrypi ~ $ sudo ifup wlan0

7. 查尋 IP 位址,成功取得 192.168.1.14

pi@raspberrypi ~ $ ifconfig wlan0
        
wlan0   Link encap:Ethernet HWaddr c8:3a:35:c5:55:76
             inet addr:192.168.1.14 Bcast:192.168.1.255 Mask:255.255.255.0
             inet6 addr: fe80::7469:1703:e2e3:3afa/64 Scope:Link
             UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
             RX packets:155 errors:0 dropped:0 overruns:0 frame:0
            TX packets:105 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000
            RX bytes:34789 (33.9 KiB) TX bytes:13588 (13.2 KiB) 

Reference:

2015年9月30日 星期三

Raspberry Pi 網路卡驅動問題 (USB WiFi: TOTOLINK N150UA)

網路卡驅動問題

在 Raspberry Pi 2 上使用TOTOLINK N150UA此型號之USB網卡,發生網卡無法驅動,以下為解決之步驟。

使用 lsusb 有裝置訊息,但無法使用
pi@rjcpi ~ $ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 005: ID 148f:7601 Ralink Technology, Corp.
Bus 001 Device 006: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 007: ID 0461:4de2 Primax Electronics, Ltd
Bus 001 Device 008: ID 0461:0010 Primax Electronics, Ltd HP Keyboard

從上述結果得知網卡ID為以下所示
Bus 001 Device 005: ID 148f:7601 Ralink Technology, Corp.

使用dmesg發現驅動錯誤
pi@rjcpi ~ $ dmesg | grep mt7601
[    4.805772] mt7601u 1-1.5:1.0: ASIC revision: 76010001 MAC revision: 76010500
[    4.821366] mt7601u 1-1.5:1.0: Direct firmware load for mt7601u.bin failed with error -2
[    4.836151] mt7601u: probe of 1-1.5:1.0 failed with error -2
[    4.848095] usbcore: registered new interface driver mt7601u

上述中發現缺少 mt7601u.bin 此檔案
因此,下載 mt7601u.bin 至 /lib/firmware/ 此目錄下
下載指令為
sudo wget https://github.com/porjo/mt7601/raw/master/src/mcu/bin/MT7601.bin -O /lib/firmware/mt7601u.bin


重新啟動後,即可使用

參考資料:
https://www.raspberrypi.org/forums/viewtopic.php?t=119095&p=808311

2014年7月28日 星期一

Raspberry Pi GPIO (二) 控制按鍵、LED

附圖為我們 控制按鍵、LED的電路圖

圖中用Pin 11(GPIO 0)控制LED / Pin 7(GPIO 7)控制按鍵開關

把電路圖接好後,就可以準備把程式寫成一個檔案,這邊我是命名為switch_led_double.py

     
  
   #switch_led_double.py
 
   import RPi.GPIO as GPIO
   import time
   GPIO.setmode(GPIO.BOARD)
  
   switch=7
   led=11
   i=0
 
   print "Setup Switch Pin 7 is a input"
   GPIO.setup(switch,GPIO.IN)
   print "Setup Switch Pin 11 is a output"
   GPIO.setup(led,GPIO.OUT)
  
   while True:
           input=GPIO.input(switch)
           if (input):
                   i+=1
                   print ("Button is on("+str(i)+")")
                   GPIO.output(led,GPIO.HIGH)
                   time.sleep(0.1)
                   GPIO.output(led,GPIO.LOW)
           time.sleep(0.05)
   GPIO.cleanup()
結果影片:
當我們按一下,或是連續按,LED都會呈現亮滅的的動作

2014年7月26日 星期六

Raspberry Pi GPIO (三) 控制伺服馬達


首先我們來了解一下伺服馬達的控制方式,伺服馬達與步進馬達雖然功能相似,但控制原理卻大大不同。

標準的伺服馬達上會有三條控制線,分別為:VCC,GND,還有訊號線。VCC 與 GND 用於提供內部直流馬達及控制線路所需的能源,電壓通常介於 4 ~ 6 V 之間,電壓大小差別在於扭力的大小,和轉動速度的快慢。

而訊號線則是用來控制馬達的轉動.,輸入的訊號為 PWM ,也就是脈衝寬度調變,伺服馬達的角度就是由 PWM 的 Duty Cycle 去控制,以我用的 S03T 2BBMG 作為範例:



下面為這顆馬達的控制規格:



這顆馬達在規格上是寫可以控制到180度,但是實際上它只能轉動170度,還有千萬不要送超過馬達控制角度的訊號給伺服馬達,這樣會使馬達受損,齒輪組損壞。

基本上我們送出的PWM必須要在 1 秒內產生 50 個波以上才能夠讓伺服馬達運作,而我使用的 Python 中可以透過以下程式去設定:
pwm_motor = GPIO.PWM(p,50)
pwm_motor.start(0)
在這當中 p 為輸出的腳位號碼,50 則是頻率(Hz),而 start(0) 則是設定一開始的Duty Cycle為 0,由於 Python 控制的是 Duty Cycle 的百分比,所以我們必須把上面表格中的頻寬轉為百分比才能使用。

由於我們是使用 50Hz 的 PWM,所以 1 個波的時間為:

1 / 50 =  0.02 = 20 ms

再來就可以計算頻寬的百分比了

+90度:( 0.8 ms / 20 ms ) * 100 = 4
+60度:( 0.9 ms / 20 ms ) * 100 = 4.5
    0度:( 1.5 ms / 20 ms ) * 100 = 7.5
-60度:( 2.1 ms / 20 ms ) * 100 = 10.5
-90度:( 2.2 ms / 20 ms ) * 100 = 11

接下來就是硬體電路的部分:

伺服馬達的 VCC 使用外接電池盒( 6 V ) 然後 GND 與 電池盒的 GND 還有 RPI 的 GND 必須接在一起達到共地,然後訊號腳的部分,我們使用可以送出PWM的第12腳作為 GPIO,如下圖所示:



實際電路:


再來是我測試用的程式,我讓伺服馬達由 +90度 => 0度 => -90度 去做循環,下面為我的程式碼:

#!/usr/bin/python
import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
MotorPin=12
GPIO.setup(MotorPin,GPIO.OUT)
pwm_motor = GPIO.PWM(MotorPin, 50)
pwm_motor.start(7.5)

while True:
        for a in range(100):
                pwm_motor.ChangeDutyCycle(4)
                time.sleep(0.01)
                print a
#       pwm_motor.stop()
        for b in range(100):
                pwm_motor.ChangeDutyCycle(7.5)
                time.sleep(0.01)
                print b
#       pwm_motor.stop()
        for c in range(100):
                pwm_motor.ChangeDutyCycle(11)
                time.sleep(0.01)
                print c
#       pwm_motor.stop()
        for d in range(100):
                pwm_motor.ChangeDutyCycle(7.5)
                time.sleep(0.01)
                print d

實際影片:


2014年7月22日 星期二

Raspberry Pi 設定國內鏡像站


RPI成功開啟後,預設的鏡像站在國外,連線速度會受到影響,
所以我們必須加入國內的鏡像站,連結網址如下:

http://forum.cse.yzu.edu.tw/Linux/raspberrypi/

這個網站架設了RPI各種系統版本的鏡像站,而我們使用的是debian的版本(raspbian)

首先編輯鏡像站的設定檔,指令如下:

sudo vim /etc/apt/sources.list

然後加入以下內容:

deb http://ftp.cse.yzu.edu.tw/Linux/raspbian/raspbian/ jessie main contrib non-free rpi

最後更新套件清單即可,指令如下:

sudo apt-get update

如果沒有出 error,那我們就可以使用國內的鏡像站去下載安裝套件了

2014年7月21日 星期一

Raspberry Pi GPIO ( 一 ) 使用 Python 控制 LED


在實作之前先來看看 RPI 的 I / O 腳

RPI 上面共有 26 支 GPIO 腳位 ( 2 x 13 ) ,如下圖:


雖然有 26 個腳位 ,但有 6 支針腳是沒有用到的,所以實際上只有 26 - 6 = 20 支腳可以用

在使用這些腳位的時候要非常小心,因為 RPI 上面並沒有保護電路,所以千萬不能直接輸入
 3.3 V 以上的電壓到任一腳位上,運氣好只燒掉 1 支腳 ,運氣不好整塊板子就死掉了!!
所以最好在接到任何負載之前,先接到緩衝器 (Buffer) 或二極體以免回衝。

=======================================================================

接下來就是 GPIO 控制 LED 的部分:

由於這是個簡單的範例,所以就沒有接上保護的電路,直接實作,但是
如果接錯線讓板子燒掉的話,請自行負責喔!!

首先將 3.3V (pin 1) 接到 LED的正端,然後接上保護電阻 (220~1K),
最後接上 GPIO0 (pin 11) ,這樣硬體的部分就完成了,如下圖:


再來就是程式的部分,我是使用 Python 來控制 GPIO:

由於新版的 Raspbian 已經內建 GPIO 套件了,所以不用下載安裝

打開終端機,用 pi 執行以下指令:

sudo python

就會看到下面的訊息

Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

進入 Python 的命令列之後

先匯入 GPIO & 時間 函式庫
>>>import RPI.GPIO as GPIO
>>>import time

定義使用RPI的腳位編號
>>>GPIO.setmode(GPIO.BOARD)

設定輸出腳位
>>>GPIO.setup(11, GPIO.OUT)

讓 Pin 11 輸出 Low,這個時候就可以看到 LED亮起來了
>>>GPIO.output(11, GPIO.LOW)

讓 Pin 11 輸出 High,這樣就可以關掉LED
>>>GPIO.output(11, GPIO.HIGH)

要離開 Python 要輸入以下命令
>>>exit()

實際影片:



再來就可以把我們剛剛輸入的指令寫成檔案來執行:

vim XXX.py

#!/usr/bin/python

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)

ledPin=11

print "Setup Pin 11 is Output..."

GPIO.setup(ledPin,GPIO.OUT)

print "Starting..."

while True:

        GPIO.output(ledPin,GPIO.HIGH)

        print "Set Output HIGH"

        time.sleep(1)

        GPIO.output(ledPin,GPIO.LOW)

        print "Set Output LOW"

        time.sleep(1)


存檔後就可以執行以下指令來執行我們的程式:

sudo python XXX.py

實際影片:

















Raspberry Pi 初始設定


RPI 第一次開機的時候,需要做初始化的設定,畫面如下圖:


Expand Filesystem:將SD卡除了開機磁區的剩餘空間作格式化,讓使用者可以運用

Change User Password:變更使用者的密碼,這裡的使用者是RPI的預設使用者 "pi" 不是 root

Enable Boot to Desktop:是否要在開機的時候直接進入 X 視窗模式

Internationalisation Options:這個裡面有三項設定,分別為語系,時區,還有鍵盤的設定

   Change Locale > en_GB.Utf-8 拿掉,選擇 en_US.Utf-8
            > 中文的部分選擇 zh_TW.UTF-8即可 (不過很少用到)

   Change Timezone > Asia > Taipei

   Change Keybord Layout > 選擇自己鍵盤的型號(不知道就選Generic 105-key (Intl) PC)
                                              > Other > English (US) > English (US) > NO AltGr key
                                              > No compose key (歐系鍵盤才有)
                   > 接下來會出現下圖的畫面,看你要不要留下 X 視窗
                                                      直接跳出的快捷鍵


Enable Camera:開啟 Camera 的功能,這個地方等要用再打開就好

Add to Rastrack:加入 Rastrack 的大家族 (看個人喜好)

Overclock:超頻功能( 如果板子的散熱做得好的話可以試看看 )

Advanced Options:進階選項,在這個裡面有幾項比較重要的設定必須做

   Hostname > 更改主機名稱,預設都是 raspberry pi 不修改的話難免會跟別人衝到
   
   Memory Split > 分記憶體給硬體加速,如果只使用文字介面的話給最低就好了
                              > 如果是要在 X 視窗跑軟體,建議給到 128 或 256
   
   SSH > 這個打開之後才能在 Win 使用 putty 連線到 RPI 


最後點選 Finish ,然後重開機設定就會生效了,如果之後還需要修改設定的話,請下
   
   sudo raspi-config  就可以進入設定畫面了


Author:Icewnful











2014年7月20日 星期日

Raspberry Pi 修改解析度


由於RPI的螢幕輸出是HDMI的解析度

所以我們使用轉VGA的螢幕通常無法正常顯示

首先將植入系統的SD卡插回電腦,然後開啟唯一可以讀的到"X"槽

裡面會看到一個 config.txt 的檔案,如下圖所示:


接下來使用 Word Pad 將它打開 (使用記事本格式會跳掉)

修改以下內容:

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=16

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
hdmi_drive=2


參數定義:

hdmi_group:用於指定要使用 CEA 或 DMT 的格式去設定解析度
hdmi_mode:使用 1024x768 且為 60 Hz 的解析度 
hdmi_drive:設定要驅動 DVI (1) 或 HDMI (2) 

Author:Icewnful







Raspberry Pi 植入 raspbian 系統


首先我們需要準備以下物品:

     Raspberry Pi 主板
        SD卡(8G/16G/32G皆可)
        HDMI轉VGA轉接頭
        網路線
        USB鍵盤

接下來到下方網站下載我們要植入的映像檔:

        http://forum.cse.yzu.edu.tw/Linux/raspberrypi/



        選擇Raspbian "wheezy" 的版本下載即可

再來就是要植入映像檔了,這個地方有兩種方式:
   
        1. 如果是Linux的系統請直接參考 Dr lee 's blog ,下方為連結網址:
     
            http://pominglee.blogspot.tw/2013/01/raspberry-pi-sd-card.html

        2. 如果要使用Windows植入,請先下載 win32diskimager,下載後安裝即可
            下方為連結網址:

            http://sourceforge.net/projects/win32diskimager/
     
        2.1 將SD卡使用讀卡機連接到你的電腦上,這時候要看好跳出來的是哪個槽
     
        2.2 開啟win32diskimager , 開啟畫面如下:


           
            Device 的地方選取我們的SD卡顯示的"X"槽
            Image File 則選我們剛剛下載的映像檔
            最後只要Write下去等它跑完就OK了
         
切記Device的地方要選對,不然選到C或D槽,還Write下去東西就再見了


Author:Icewnful