樹莓派 - GPIO 聯結器



在這裡,我們將學習樹莓派中的 GPIO(通用輸入輸出)聯結器。

GPIO 引腳圖

樹莓派強大的功能之一就是那一排 GPIO(通用輸入輸出)引腳,而 GPIO 引腳圖則是對這些 GPIO 引腳的互動式參考。

下圖顯示了一個 40 引腳 GPIO 接頭,它存在於所有當前的樹莓派電路板上:

GPIO Pinout

該圖的來源是 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` 後面是序列埠。我們應該使用與我們正在通訊的服務中設定的相同的波特率。

廣告
© . All rights reserved.