Raspberry Pi - GPIO 连接器
Raspberry Pi - GPIO 连接器
Section titled “Raspberry Pi - GPIO 连接器”Raspberry Pi 的标志性特性之一(最初不包括 Pico 微控制器)是通用输入/输出(General Purpose Input/Output, GPIO)排针。这排引脚允许 Pi 通过连接到电子元件,如 LED、传感器、按钮、电机(通过驱动板)和其他集成电路来与物理世界交互。
40 针排针
Section titled “40 针排针”所有现代 Raspberry Pi 型号(从 Pi 1 Model B+ 开始)都具有标准的 40 针排针。理解每个引脚的功能对于电子项目至关重要。
关键引脚类型:
- 电源引脚: 为外部组件提供电源。有 +5V 和 +3.3V 引脚。
- 接地引脚(GND): 提供电路的通用 0V 参考点。
- 通用输入/输出引脚(GPIO): 这些是可编程引脚。每个引脚都可以配置为输入(读取传感器/按钮的信号)或输出(发送信号控制 LED/电机)。它们工作在 3.3V 逻辑电平。
- 特殊功能引脚: 一些 GPIO 引脚具有标准通信协议(如 I2C、SPI 和 UART)的替代功能。
引用引脚有两种常见方式:
- 物理引脚编号(Board Pin Numbering): 从排针上物理引脚的 1 到 40 进行计数,从左上角开始向下,然后从右上角开始向下(当 USB/以太网端口朝向您时)。
- BCM(Broadcom)引脚编号(BCM Pin Numbering): 指的是 Broadcom 处理器使用的 GPIO 通道号(例如 GPIO17, GPIO22)。这是在
gpiozero和RPi.GPIO等软件库中最常使用的编号方案。
了解您的代码或图表使用的是哪种编号方案至关重要。您可以在 Pi 上直接打开终端并运行以下命令来查看交互式引脚布局图:
pinout此命令会显示两种编号方案、当前功能和电压电平。
GPIO 安全规则 - 重要!
Section titled “GPIO 安全规则 - 重要!”不遵守这些规则可能会永久损坏您的 Raspberry Pi:
- 切勿向任何 GPIO 引脚连接超过 3.3V 的电压。 将 5V 直接连接到 GPIO 输入引脚会将其损坏。
- 不要从 GPIO 引脚抽取过大的电流。 每个配置为输出的引脚只能安全地提供少量电流(通常最高 16mA)。所有 GPIO 引脚的总电流抽取不应超过约 50mA。
- 为 LED 使用限流电阻。 将 LED 与适当的电阻(例如 220-330 欧姆)串联,以防止它们从 GPIO 引脚抽取过大的电流。
- 不要从 3.3V 电源引脚抽取过大的电流。 从 3.3V 引脚的总电流抽取通常应保持在 50-100mA 以下(请检查特定型号规格)。功耗大的组件应使用 5V 引脚或外部电源。
- 不要将引脚短接在一起,特别是电源引脚和接地引脚。 在通电前仔细检查接线。
- 避免在 Pi 通电时连接/断开电线(防静电措施也很重要)。
在 Python 中使用 GPIO
Section titled “在 Python 中使用 GPIO”Python 是在 Pi 上控制 GPIO 引脚最常用的语言。有几个库可用:
gpiozero(推荐给初学者)
Section titled “gpiozero(推荐给初学者)”gpiozero 为 LED、按钮、传感器和电机等常见组件提供了简单、面向对象的接口。它自动处理许多底层设置,默认使用 BCM 引脚编号。它通常预装在 Raspberry Pi OS 桌面版中。
安装(如果需要):
sudo apt updatesudo apt install python3-gpiozero示例:闪烁一个连接在 GPIO17 和 GND 之间(带有电阻)的 LED:
from gpiozero import LEDfrom time import sleep
led = LED(17) # Use BCM pin number
while True: led.on() # Turn LED on sleep(1) # Wait 1 second led.off() # Turn LED off sleep(1) # Wait 1 secondRPi.GPIO(低级控制)
Section titled “RPi.GPIO(低级控制)”此库提供对 GPIO 功能更直接的控制(设置引脚模式、上拉/下拉电阻、检测边缘)。它允许使用 BCM 或物理引脚编号。需要更明确的设置和清理。
安装(如果需要):
sudo apt updatesudo apt install python3-rpi.gpio示例:使用 RPi.GPIO 闪烁一个 LED(BCM 编号):
import RPi.GPIO as GPIOimport time
LED_PIN = 17
GPIO.setmode(GPIO.BCM) # Use BCM pin numberingGPIO.setup(LED_PIN, GPIO.OUT) # Set pin as output
try: while True: GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on time.sleep(1) GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off time.sleep(1)except KeyboardInterrupt: # Allows clean exit with Ctrl+C passfinally: GPIO.cleanup() # Reset GPIO pins特殊功能接口(I2C、SPI、UART)
Section titled “特殊功能接口(I2C、SPI、UART)”许多传感器和外围设备使用标准通信协议,如 I2C、SPI 或 UART。这些接口在使用前需要启用。
启用这些接口最简单的方法是使用 Raspberry Pi 配置工具:
- 从桌面环境:应用程序菜单 -> 首选项 -> Raspberry Pi 配置 -> 接口选项卡。
- 从命令行:运行
sudo raspi-config,导航到“接口选项”,选择接口(I2C、SPI、串行端口),然后选择“启用”。 - 启用接口后重新启动您的 Pi,以使更改完全生效。
I2C(集成电路间总线)
Section titled “I2C(集成电路间总线)”一种两线协议(SDA - 数据线,SCL - 时钟线),常用于传感器(温度、压力、加速度计)、RTC 模块和 OLED 显示屏。多个设备可以共享同一总线,每个设备都有唯一的地址。
- 引脚: 通常是 GPIO2 (SDA) 和 GPIO3 (SCL)。查看
pinout命令。 - 工具: 安装
i2c-tools(sudo apt install i2c-tools)。使用sudo i2cdetect -y 1命令扫描总线并查找已连接设备的地址。 - Python: 使用
smbus2库 (sudo apt install python3-smbus)。
SPI(串行外设接口)
Section titled “SPI(串行外设接口)”一种四线协议(MOSI, MISO, SCLK, CE),常用于与 ADC 转换器、SD 卡读卡器和某些显示器等设备进行更快的通信。
- 引脚: 通常是 GPIO10 (MOSI), GPIO9 (MISO), GPIO11 (SCLK), GPIO8 (CE0), GPIO7 (CE1)。查看
pinout命令。 - Python: 使用
spidev库 (sudo apt install python3-spidev或pip install spidev)。
UART(串行端口)
Section titled “UART(串行端口)”一种两线协议(TX - 发送,RX - 接收),用于点对点串行通信,常用于连接 GPS 模块、其他微控制器或访问 Pi 的控制台。
- 引脚: 通常是 GPIO14 (TXD) 和 GPIO15 (RXD)。查看
pinout命令。 - 配置: 通过
raspi-config启用时,选择您是否希望通过串行端口访问登录 Shell(这将禁用其用于一般用途),或者仅为您的程序启用硬件串行端口。 - 设备: 主要硬件 UART 通常显示为
/dev/serial0(根据型号和配置,它通常链接到/dev/ttyS0或/dev/ttyAMA0)。 - Python: 使用
pyserial库 (sudo apt install python3-serial)。 - 测试: 使用
minicom(sudo apt install minicom) 来发送/接收数据,例如minicom -b 9600 -o -D /dev/serial0(将 9600 替换为正确的波特率)。