樹莓派GPIO 基礎(一)
樹莓派3B+ 引腳圖:
其中:
- 標註了數字的引腳都能夠用作GPIO;
- 標註了其他名稱的引腳也有一些其他特殊用途標註了其他名稱的引腳也有一些其他特殊用途;
- SDA 和SCL 引腳構成I2C 介面;
- MOSI,MISO,SCKL 用於SPI 介面;
- GPIO 所有輸入輸出都使用3.3 V;
- GPIO 引腳可以被用作數字輸入或數字輸出,這兩種操作電壓都是3.3 V;
- 樹莓派與Arduino 不同,其沒有任何模擬輸入,要進行模擬輸入必須使用額外的模數轉換器(ADC),或為其外接介面板,又或接到Arduino 或aLaMode 板上。
1. 保證安全
- 不要在GPIO 的任何引腳上加高於3.3 V 的電壓;
- 每個輸出不要引出超過3mA 的電流。否則會縮短樹莓派壽命;
- 當樹莓派在開機狀態時,不要使用螺絲刀或其他金屬物戳GPIO 介面;
- 不要使用高於5V 的電壓為樹莓派供電;
- 不要從3.3V 的供電引腳引出總額超過50mA 電流;
- 不要從5V 的供電引腳引出總額出超過250mA 的電流。
2. 安裝PRi.GPIO
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
該庫使用Python 封裝原生C 程式碼的方式使IO 儘可能快。
3. 配置I2C
由於我使用的是Raspbian,所以我需要修改一些相應配置
編輯檔案/etc/modules
:
sudo nano /etc/modules
檔案末尾新增:
i2c-bcm2708
i2c-dev
再看看/etc/modprobe.d/raspi-blacklist.conf
這個檔案中是否有如下這句話:
blacklist i2c-bcm2708
若有,則在其前面新增#
,將其註釋
最後安裝Python I2C 庫:
sudo apt-get install python-smbus
重啟即可使用I2C
4. 使用I2C Tools
安裝並使用i2c-tools:
sudo apt-get install i2c-tools
將I2C 裝置連線到樹莓派上並執行命令:
sudo i2cdetect -y 1
若I2C 是可用的,則會出現I2C 裝置地址圖
i2cDetect 是一個診斷工具,適合在使用一個新的I2C 裝置的第一時間執行它
5. 配置SPI
我使用的是Raspbian,故需要做一些相應的配置修改
編輯檔案/etc/modules
:
sudo nano /etc/modules
檔案末尾新增:
spidev
再看看/etc/modprobe.d/raspi-blacklist.conf
這個檔案中是否有如下這句話:
blacklist spi-bcm2708
若有,則在其前面新增#
,將其註釋
樹莓派的SPI 特性也被Python 庫所支援,該庫允許在Python 程式中進行SPI 通訊。要安裝該庫,首先安裝Git:
cd ~
sudo apt-get install python-dev
git clone git://github.com/doceme/py-spidev
cd py-spidev/
sudo python setup.py install
重啟樹莓派就能使用SPI 了
6. 釋放串列埠
當不需要通過控制檯線纜連線樹莓派,而是通過wifi 或乙太網連線時,可將串列埠釋放,使得我們可以連線諸如GPS 等外圍裝置到串列埠:
sudo nano /etc/inittab
但我的樹莓派根本就沒有這個檔案
找到這一行:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 VT100
並註釋:
#TO:23:respawn:/sbin/getty -L ttyAMAO 115200 VT100
7. 安裝PySerial 以從Python 訪問串列埠
安裝PySerial 庫:
sudo apt-get install python-serial
庫的使用非常容易,以下語法能夠建立一個連線:
ser = serial.Serial(DEVICE, BAUD)
其中,DEVICE 是連線到串列埠的裝置,BAUD 是數字表示的波特率,例如:
ser = serial.Serial('/dev/ttyAMA0', 9600)
一旦建立連線,即可傳送資料:
ser.write('some text')
監聽響應通常使用包含讀取和列印的迴圈:
while True:
print(ser.read())
8. 安裝Minicom 測試串列埠
安裝Minicom:
sudo apt-get install minicom
Minicom 安裝好後,可使用如下命令開啟一個與連線到GPIO 介面的RXD 與TXD 引腳的序列裝置之間的序列通訊會話:
minicom -b 9600 -o -D /dev/ttyAMA0
-b 之後的引數表示波特率,-D 之後的是串列埠。
波特率應與要通訊的裝置所設定的波特率相同
該命令會開啟一個Minicom 會話,此時要做的就是開啟local echo,這樣就可以看到輸入的命令
按下Ctrl-A,然後再按Z
按下E,開啟local echo
此時輸入的任何內容都會被髮送到序列裝置,並且任何來自序列裝置的內容也都會顯示出來。
Minicom 在檢視來自序列裝置的訊息或檢查裝置是否工作方面是一個非常不錯的工具。