树莓派因其强大的功能、低廉的价格和易于上手的特性,成为了DIY爱好者和入门级开发者的宠儿。GPIO(通用输入输出)是树莓派最核心的功能之一,它允许我们通过编程控制外部设备。本文将详细介绍树莓派GPIO扩展板的接口编号技巧,帮助你轻松上手GPIO应用。
一、GPIO接口概述
GPIO接口是树莓派上的一组引脚,用于输入和输出信号。这些引脚可以连接到各种传感器、电机、显示屏等外部设备。树莓派有多个GPIO扩展板,如Breadboard、HAT等,每种扩展板的GPIO接口编号和功能略有不同。
二、GPIO接口编号规则
1. 树莓派4B GPIO接口编号
树莓派4B是最新的树莓派型号,其GPIO接口编号如下:
| 编号 | 名称 | 类型 | 功能 |
|---|---|---|---|
| 2 | SDA | 输出 | I2C数据 |
| 3 | SCL | 输出 | I2C时钟 |
| 4 | GPIO 4 | 输入/输出 | GPIO |
| 5 | GPIO 17 | 输入/输出 | GPIO |
| 6 | GPIO 27 | 输入/输出 | GPIO |
| 7 | GPIO 22 | 输入/输出 | GPIO |
| 8 | GPIO 10 | 输入/输出 | GPIO |
| 9 | GPIO 0 | 输入/输出 | GPIO |
| 10 | GPIO 1 | 输入/输出 | GPIO |
| 11 | GPIO 5 | 输入/输出 | GPIO |
| 12 | GPIO 6 | 输入/输出 | GPIO |
| 13 | GPIO 12 | 输入/输出 | GPIO |
| 14 | GPIO 13 | 输入/输出 | GPIO |
| 15 | GPIO 19 | 输入/输出 | GPIO |
| 16 | GPIO 26 | 输入/输出 | GPIO |
| 17 | GPIO 23 | 输入/输出 | GPIO |
| 18 | GPIO 24 | 输入/输出 | GPIO |
| 19 | GPIO 8 | 输入/输出 | GPIO |
| 20 | GPIO 28 | 输入/输出 | GPIO |
| 21 | GPIO 29 | 输入/输出 | GPIO |
| 22 | GPIO 31 | 输入/输出 | GPIO |
| 23 | GPIO 3 | 输入/输出 | GPIO |
| 24 | GPIO 2 | 输入/输出 | GPIO |
| 25 | GPIO 7 | 输入/输出 | GPIO |
| 26 | GPIO 15 | 输入/输出 | GPIO |
| 27 | GPIO 21 | 输入/输出 | GPIO |
| 28 | GPIO 16 | 输入/输出 | GPIO |
| 29 | GPIO 14 | 输入/输出 | GPIO |
| 30 | GPIO 30 | 输入/输出 | GPIO |
| 31 | GPIO 1 | 输入/输出 | GPIO |
2. 树莓派3B+ GPIO接口编号
树莓派3B+的GPIO接口编号与树莓派4B基本相同,只是在编号上有所调整:
| 编号 | 名称 | 类型 | 功能 |
|---|---|---|---|
| 1 | SDA | 输出 | I2C数据 |
| 2 | SCL | 输出 | I2C时钟 |
| 3 | GPIO 3 | 输入/输出 | GPIO |
| 4 | GPIO 4 | 输入/输出 | GPIO |
| 5 | GPIO 17 | 输入/输出 | GPIO |
| 6 | GPIO 22 | 输入/输出 | GPIO |
| 7 | GPIO 27 | 输入/输出 | GPIO |
| 8 | GPIO 10 | 输入/输出 | GPIO |
| 9 | GPIO 0 | 输入/输出 | GPIO |
| 10 | GPIO 1 | 输入/输出 | GPIO |
| 11 | GPIO 5 | 输入/输出 | GPIO |
| 12 | GPIO 6 | 输入/输出 | GPIO |
| 13 | GPIO 12 | 输入/输出 | GPIO |
| 14 | GPIO 13 | 输入/输出 | GPIO |
| 15 | GPIO 19 | 输入/输出 | GPIO |
| 16 | GPIO 26 | 输入/输出 | GPIO |
| 17 | GPIO 23 | 输入/输出 | GPIO |
| 18 | GPIO 24 | 输入/输出 | GPIO |
| 19 | GPIO 8 | 输入/输出 | GPIO |
| 20 | GPIO 28 | 输入/输出 | GPIO |
| 21 | GPIO 29 | 输入/输出 | GPIO |
| 22 | GPIO 31 | 输入/输出 | GPIO |
| 23 | GPIO 3 | 输入/输出 | GPIO |
| 24 | GPIO 2 | 输入/输出 | GPIO |
| 25 | GPIO 7 | 输入/输出 | GPIO |
| 26 | GPIO 15 | 输入/输出 | GPIO |
| 27 | GPIO 21 | 输入/输出 | GPIO |
| 28 | GPIO 16 | 输入/输出 | GPIO |
| 29 | GPIO 14 | 输入/输出 | GPIO |
| 30 | GPIO 30 | 输入/输出 | GPIO |
3. 树莓派3B GPIO接口编号
树莓派3B的GPIO接口编号与树莓派4B和3B+略有不同,具体如下:
| 编号 | 名称 | 类型 | 功能 |
|---|---|---|---|
| 1 | SDA | 输出 | I2C数据 |
| 2 | SCL | 输出 | I2C时钟 |
| 3 | GPIO 3 | 输入/输出 | GPIO |
| 4 | GPIO 4 | 输入/输出 | GPIO |
| 5 | GPIO 17 | 输入/输出 | GPIO |
| 6 | GPIO 27 | 输入/输出 | GPIO |
| 7 | GPIO 22 | 输入/输出 | GPIO |
| 8 | GPIO 10 | 输入/输出 | GPIO |
| 9 | GPIO 0 | 输入/输出 | GPIO |
| 10 | GPIO 1 | 输入/输出 | GPIO |
| 11 | GPIO 5 | 输入/输出 | GPIO |
| 12 | GPIO 6 | 输入/输出 | GPIO |
| 13 | GPIO 12 | 输入/输出 | GPIO |
| 14 | GPIO 13 | 输入/输出 | GPIO |
| 15 | GPIO 19 | 输入/输出 | GPIO |
| 16 | GPIO 26 | 输入/输出 | GPIO |
| 17 | GPIO 23 | 输入/输出 | GPIO |
| 18 | GPIO 24 | 输入/输出 | GPIO |
| 19 | GPIO 8 | 输入/输出 | GPIO |
| 20 | GPIO 28 | 输入/输出 | GPIO |
| 21 | GPIO 29 | 输入/输出 | GPIO |
| 22 | GPIO 31 | 输入/输出 | GPIO |
| 23 | GPIO 3 | 输入/输出 | GPIO |
| 24 | GPIO 2 | 输入/输出 | GPIO |
| 25 | GPIO 7 | 输入/输出 | GPIO |
| 26 | GPIO 15 | 输入/输出 | GPIO |
| 27 | GPIO 21 | 输入/输出 | GPIO |
| 28 | GPIO 16 | 输入/输出 | GPIO |
| 29 | GPIO 14 | 输入/输出 | GPIO |
| 30 | GPIO 30 | 输入/输出 | GPIO |
4. 树莓派2B GPIO接口编号
树莓派2B的GPIO接口编号与树莓派3B和3B+基本相同,只是在编号上有所调整:
| 编号 | 名称 | 类型 | 功能 |
|---|---|---|---|
| 1 | SDA | 输出 | I2C数据 |
| 2 | SCL | 输出 | I2C时钟 |
| 3 | GPIO 3 | 输入/输出 | GPIO |
| 4 | GPIO 4 | 输入/输出 | GPIO |
| 5 | GPIO 17 | 输入/输出 | GPIO |
| 6 | GPIO 27 | 输入/输出 | GPIO |
| 7 | GPIO 22 | 输入/输出 | GPIO |
| 8 | GPIO 10 | 输入/输出 | GPIO |
| 9 | GPIO 0 | 输入/输出 | GPIO |
| 10 | GPIO 1 | 输入/输出 | GPIO |
| 11 | GPIO 5 | 输入/输出 | GPIO |
| 12 | GPIO 6 | 输入/输出 | GPIO |
| 13 | GPIO 12 | 输入/输出 | GPIO |
| 14 | GPIO 13 | 输入/输出 | GPIO |
| 15 | GPIO 19 | 输入/输出 | GPIO |
| 16 | GPIO 26 | 输入/输出 | GPIO |
| 17 | GPIO 23 | 输入/输出 | GPIO |
| 18 | GPIO 24 | 输入/输出 | GPIO |
| 19 | GPIO 8 | 输入/输出 | GPIO |
| 20 | GPIO 28 | 输入/输出 | GPIO |
| 21 | GPIO 29 | 输入/输出 | GPIO |
| 22 | GPIO 31 | 输入/输出 | GPIO |
| 23 | GPIO 3 | 输入/输出 | GPIO |
| 24 | GPIO 2 | 输入/输出 | GPIO |
| 25 | GPIO 7 | 输入/输出 | GPIO |
| 26 | GPIO 15 | 输入/输出 | GPIO |
| 27 | GPIO 21 | 输入/输出 | GPIO |
| 28 | GPIO 16 | 输入/输出 | GPIO |
| 29 | GPIO 14 | 输入/输出 | GPIO |
| 30 | GPIO 30 | 输入/输出 | GPIO |
三、GPIO编号技巧
1. 使用GPIO引脚图
树莓派官网提供了详细的GPIO引脚图,可以帮助你快速了解各个引脚的功能。你可以通过树莓派官网下载对应的引脚图,并将其打印出来,方便查阅。
2. 利用树莓派图形界面
树莓派操作系统提供了图形界面,你可以通过图形界面查看各个GPIO引脚的状态。在Raspbian操作系统下,安装gpiozero库,然后使用以下命令查看GPIO引脚状态:
import gpiozero
pins = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
for pin in pins:
state = gpiozero.Pin(pin).value
print(f'GPIO {pin}: {state}')
3. 编程查看GPIO状态
如果你熟悉编程,可以通过编程来查看GPIO引脚的状态。以下是一个Python示例,使用RPi.GPIO库查看GPIO 17的状态:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
pin = 17
try:
GPIO.setup(pin, GPIO.OUT)
while True:
state = GPIO.input(pin)
print(f'GPIO {pin}: {state}')
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
四、GPIO应用实例
下面是一个使用GPIO控制LED灯的简单实例:
import RPi.GPIO as GPIO
import time
LED_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH)
time.sleep(1)
GPIO.output(LED_PIN, GPIO.LOW)
time.sleep(1)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
在这个例子中,我们使用GPIO 17控制一个LED灯。程序运行后,LED灯会每隔1秒闪烁一次。
五、总结
本文详细介绍了树莓派GPIO扩展板的接口编号规则,并提供了GPIO编号技巧和应用实例。通过学习本文,相信你已经掌握了GPIO编号技巧,可以轻松上手GPIO应用。祝你编程愉快!
