Raspberry Pi 简明教程
Raspberry Pi - GPIO Connector
在本文中,我们将学习树莓派中的 GPIO(通用输入输出)连接器。
GPIO Pinout
树莓派的一个强大功能是 GPIO(通用输入输出)引脚的行,而 GPIO 引脚排列是这些 GPIO 引脚的交互式参考。
下图显示了 40 针 GPIO 接头,它位于所有当前树莓派板上 −
图表来源 www.raspberrypi.org
Alternative Functions
GPIO 引脚可与各种替代功能配合使用。其中,有些适用于所有引脚,而另一些则适用于特定引脚。
PWM: Pulse-width modulation
软件 PWM 适用于所有引脚,而硬件 PWM 适用于 GPIO12、GPIO13、GPIO18 和 GPIO19。
SPI: Serial Peripheral Interface
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: Inter-integrated Circuit
I2C 适用于以下引脚 −
Data: (GPIO2); Clock (GPIO3)
EEPROM Data: (GPIO0); EEPROM Clock (GPIO1)
Serial
串行功能适用于以下引脚 −
TX(GPIO14)
RX(GPIO15)
Connect GPIO to Raspberry Pi
以下是在使用 GPIO 连接器时减少树莓派电路板损坏风险的一些简单规则 −
-
请勿尝试在任何 GPIO 引脚上放置超过 3.3V。
-
每个输出引脚不要尝试提取 3mA 以上的电流。虽然可以提取更多的电流,但为了延长 Pi 板的使用寿命,应该将提取的电流限制在 3mA 以内。
-
当 Raspberry Pi 板通电时,不要用螺丝刀去戳 GPIO 接头。
-
5V 的电源已经足够为 Raspberry Pi 供电。不要尝试提供更大的电源。
-
3.3V 供电引脚不能提取超过 50mA 的总电流。
Output of GPIO pins
要使用 Python 设置 GPIO 引脚的输出,并读取输入值,需要安装 RPi.GPIO Python 库。
Install RPi.GPIO python library
要在 Raspberry Pi 的终端窗口中安装 RPi.GPIO Python 库,键入以下命令:
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
几乎所有最新的发行版都已安装了 RPi.GPIO,如果已经安装,上述命令会将其更新到最新版本。
I2C Device
我们来检查如何让 I2C 在 Raspberry Pi 上运行。
Case 1: Using Adafruit Occidentalis 0.2 or later
如果您正在使用 Adafruit Occidentalis,则无需执行任何操作。原因是该发行版已预先配置了 I2C 支持。
Case 2: Using 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
现在,重新引导 Raspberry Pi,它将做好使用 I2C 的准备。
Serial Peripheral Interface (SPI)
让我们检查一下如何将 SPI(串行外设接口)总线与 Raspberry Pi 一起使用。
Case 1: Using Adafruit Occidentalis 0.2 or later
如果您使用 Adafruit Occidentalis,则不必执行任何操作,因为此发行版预先配置了 SPI 支持。
Case 2: Using Raspbian
如果您正在使用 Raspbian,则需要进行以下配置更改:
首先,使用以下命令编辑 /etc/modules 文件:
sudo nano /etc/modules
现在,我们需要在该文件末尾添加以下行:
spidev
接下来,我们需要编辑名为 /etc/modprobe.d/raspi-blacklist.conf *and comment out the following line by adding a *# 的文件:
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
现在,重新启动 Raspberry Pi,它将为 SPI 做好准备。
Serial Port
假设您想在 Raspberry Pi 开发板上使用串行端口(即 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
现在,保存此文件并重新启动 Raspberry Pi。
Access serial port from Python
我们还可以通过使用 Python 在 Raspberry Pi 开发板上使用串行端口(即 Rx 和 Tx 引脚)。为此,我们需要按照如下方式安装 PySerial 库:
sudo apt-get install python-serial
建议在使用 PySerial 之前禁用(如我们上面所做)Raspberry Pi 的串行控制台。
Test the serial port
一旦开始使用串口,您可能希望从终端会话发送和接收串口命令。为此,我们需要按照如下方式安装 Minicom :
sudo apt-get install minicom
在使用 Minicom 之前,建议禁用(如上所述)Raspberry Pi 的串行控制台。
现在 Minicom 已安装完毕,我们可以使用以下命令用与 GPIO 连接器的 RXD 和 TXD 引脚相连的串行设备启动串行通信会话:
minicom -b 9600 -o -D /dev/ttyAMA0
在此,在上面的命令中,-b 后面是波特率,-D 后面是串行端口。我们应该使用与我们正在通信的服务上设置的相同波特率。