树莓派 - 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` 后面是串口。我们应该使用与我们正在通信的服务中设置的相同的波特率。

广告