樹莓派 - GPIO 聯結器
在這裡,我們將學習樹莓派中的 GPIO(通用輸入輸出)聯結器。
GPIO 引腳圖
樹莓派強大的功能之一就是那一排 GPIO(通用輸入輸出)引腳,而 GPIO 引腳圖則是對這些 GPIO 引腳的互動式參考。
下圖顯示了一個 40 引腳 GPIO 接頭,它存在於所有當前的樹莓派電路板上:
該圖的來源是 www.raspberrypi.org
電壓
從上圖可以看出,電路板上有兩個 5V 引腳和兩個 3.3V 引腳。它還有一些接地引腳 (0V)。所有這些引腳都是不可配置的。
輸出
GPIO 引腳可以指定為輸出引腳。設定為輸出引腳的引腳可以設定為 3.3V(高)或 0V(低)。
輸入
GPIO 引腳可以指定為輸入引腳。設定為輸入引腳的引腳可以讀取為 3.3V(高)或 0V(低)。您可以使用內部上拉或下拉電阻。
您可以在上圖中看到,GPIO2 和 GPIO3 引腳具有固定的上拉電阻,但對於其他引腳,您可以在軟體中進行配置。
替代功能
GPIO 引腳可以與各種替代功能一起使用。其中,有些功能可在所有引腳上使用,而其他功能則僅在特定引腳上使用。
PWM:脈衝寬度調製
軟體 PWM 可用於所有引腳,而硬體 PWM 可用於 GPIO12、GPIO13、GPIO18 和 GPIO19。
SPI:序列外圍介面
SPI 可用於以下引腳:
SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7) SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
I2C:積體電路間通訊
I2C 可用於以下引腳:
Data: (GPIO2); Clock (GPIO3) EEPROM Data: (GPIO0); EEPROM Clock (GPIO1)
序列埠
序列埠功能可在以下引腳使用:
TX(GPIO14) RX(GPIO15)
將 GPIO 連線到樹莓派
以下是一些簡單的規則,可以降低在使用 GPIO 聯結器時損壞樹莓派電路板的風險:
不要嘗試在任何 GPIO 引腳上施加超過 3.3V 的電壓。
每個輸出不要嘗試超過 3mA 的電流。雖然您可以使用更多電流,但為了延長 Pi 電路板的使用壽命,您應限制在 3mA 以內。
樹莓派電路板通電時,不要用螺絲刀戳 GPIO 聯結器。
5V 電源足以滿足您的樹莓派。不要嘗試提供超過該電壓的電源。
不要嘗試從 3.3V 供電引腳總共汲取超過 50mA 的電流。
GPIO 引腳的輸出
要設定 GPIO 引腳的輸出並使用 Python 讀取輸入值,您需要安裝 **RPi.GPIO** python 庫。
安裝 RPi.GPIO python 庫
要安裝 RPi.GPIO python 庫,請在樹莓派的終端視窗中輸入以下命令:
sudo apt-get install python-dev sudo apt-get install python-rpi.gpio
幾乎所有最新版本的發行版都已預裝 RPi.GPIO。在這種情況下,上述命令將將其更新到最新版本。
I2C 裝置
讓我們檢查一下如何使 I2C 與樹莓派一起工作。
情況 1:使用 Adafruit Occidentalis 0.2 或更高版本
如果您使用的是 Adafruit Occidentalis,則無需執行任何操作。因為此發行版已預先配置了 I2C 支援。
情況 2:使用 Raspbian
如果您使用的是 Raspbian,則需要進行以下配置更改:
首先,使用以下命令編輯檔案 **`/etc/modules`**:
sudo nano /etc/modules
現在,我們需要將以下幾行新增到此檔案的末尾:
i2c-bcm2708 i2c-dev
接下來,我們需要編輯名為 **`/etc/modprobe.d/raspi-blacklist.conf`** 的檔案,並透過新增 `#` 來註釋掉以下行:
blacklist i2c-bcm2708 #blacklist i2c-bcm2708
完成後,使用以下命令安裝 Python I2C 庫:
sudo apt-get install python-smbus
現在,重新啟動您的樹莓派,它將準備好 I2C。
查詢 I2C 地址
有一個 I2C 裝置連線到樹莓派電腦,您想了解其地址。
為此,我們需要安裝 i2c-tools,如下所示:
sudo apt-get install i2c-tools
完成後,將您的 I2C 裝置連線到您的樹莓派電路板並執行以下命令:
sudo i2cdetect -y 1
這裡,我們需要注意以下兩點:
首先,如果您有較新的發行版,則很有可能它已經安裝了 i2c-tools。
其次,如果您正在使用舊的版本 1 電路板,請在上方的程式碼行中將 1 更改為 0。
序列外圍介面 (SPI)
讓我們檢查一下如何使用 SPI(序列外圍介面)匯流排與樹莓派一起工作。
情況 1:使用 Adafruit Occidentalis 0.2 或更高版本
如果您使用的是 Adafruit Occidentalis,則無需執行任何操作,因為此發行版已預先配置了 SPI 支援。
情況 2:使用 Raspbian
如果您使用的是 Raspbian,則需要進行以下配置更改:
首先,使用以下命令編輯檔案 **`/etc/modules`**:
sudo nano /etc/modules
現在,我們需要將以下幾行新增到此檔案的末尾:
spidev
接下來,我們需要編輯名為 **`/etc/modprobe.d/raspi-blacklist.conf`** 的檔案,並透過新增 **`#`** 來註釋掉以下行:
blacklist spi-bcm2708 #blacklist spi-bcm2708
完成後,使用以下命令安裝 Python 庫以透過 Python 程式進行通訊:
cd ~ sudo apt-get install python-dev git clone git://github.com/doceme/py-spidev cd py-spidev/ sudo python setup.py install
現在,重新啟動您的樹莓派,它將準備好 SPI。
序列埠
假設您想使用樹莓派電路板上的序列埠,即 Rx 和 Tx 引腳,但它被 Linux 作業系統用作控制檯連線。要停用此功能,我們需要註釋掉名為 **`/etc/inittab`** 的檔案中的某一行。
使用以下程式碼行開啟此檔案:
sudo nano /etc/inittab
現在,透過向下滾動到此檔案的末尾來查詢以下行:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
現在,我們需要使用 `#` 來註釋掉此行:
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
現在,儲存此檔案並重新啟動您的樹莓派。
從 Python 訪問序列埠
我們還可以使用 Python 使用樹莓派電路板上的序列埠,即 Rx 和 Tx 引腳。為此,我們需要安裝 **PySerial** 庫,如下所示:
sudo apt-get install python-serial
建議在使用 **PySerial** 之前停用(如上所述)樹莓派的序列控制檯。
測試序列埠
一旦開始使用序列埠,您可能希望從終端會話傳送和接收序列命令。為此,我們需要安裝 **Minicom**,如下所示:
sudo apt-get install minicom
建議在使用 **Minicom** 之前停用(如上所述)樹莓派的序列控制檯。
現在 Minicom 已安裝,我們可以使用以下命令啟動與連線到 GPIO 聯結器的 RXD 和 TXD 引腳的序列裝置的序列通訊會話:
minicom -b 9600 -o -D /dev/ttyAMA0
在此命令中,`-b` 後面是波特率,`-D` 後面是序列埠。我們應該使用與我們正在通訊的服務中設定的相同的波特率。