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