Raspberry Pi GPIO控制入门:引脚识别、编程与实战项目

GPIO是什么?

GPIO(General-Purpose Input/Output)是树莓派上的通用输入输出引脚,相当于树莓派与外部世界的“接口”——你可以用它控制LED亮灭、驱动电机转动,也能读取传感器的数据(比如温湿度、人体红外)。树莓派4B有40个GPIO引脚,每个引脚都有特定功能,但大部分可以作为通用引脚自由使用。

Raspberry Pi GPIO控制入门:引脚识别、编程与实战项目

先搞懂引脚编号:BOARD vs BCM

新手最容易栽在“引脚编号”上——树莓派的GPIO有两种编号方式,一定要选一种并坚持用

BOARD编号(物理引脚) BCM编号(芯片引脚) 功能描述
11 GPIO17 通用IO
12 GPIO18 PWM输出
13 GPIO27 通用IO
15 GPIO22 通用IO
16 GPIO23 通用IO
18 GPIO24 通用IO
22 GPIO25 通用IO
  • BOARD:按物理引脚顺序编号(从左到右、从上到下数),适合新手(不用记芯片编号)。
  • BCM:按Broadcom芯片的内部编号,编程时更常用(比如Python库默认用BCM)。

举个例子:如果你要接LED到“BOARD 11”引脚,对应的BCM编号是GPIO17——编程时用GPIO.setmode(GPIO.BCM),然后指定引脚为17即可。

准备工具:新手必买清单

控制GPIO不需要复杂器材,基础套装就能玩起来:
– 树莓派(推荐4B或Zero W,系统用Raspberry Pi OS)
– 面包板+杜邦线(公对公、公对母,方便连接)
– LED灯(任意颜色,长脚是阳极,短脚是阴极)
– 电阻(220Ω~1kΩ,保护LED不被烧坏)
– 传感器(可选:HC-SR501人体红外、DHT11温湿度)

第一次玩GPIO:控制LED闪烁

先从最简单的“LED闪烁”开始,学会电路连接和基础编程。

电路连接步骤(以BCM 17为例):

  1. 树莓派断电(重要!避免短路)。
  2. LED长脚(阳极)接杜邦线,连到树莓派的GPIO17(BOARD 11)。
  3. LED短脚(阴极)接电阻一端,电阻另一端接树莓派的GND(比如BOARD 6)。
  4. 通电树莓派,准备编程。

Python代码(用RPi.GPIO库):

先安装库:

sudo apt update && sudo apt install python3-rpi.gpio

然后写一个blink.py

import RPi.GPIO as GPIO
import time

# 1. 设置引脚编号方式(选BCM)
GPIO.setmode(GPIO.BCM)
# 2. 定义LED连接的引脚(BCM 17)
LED_PIN = 17
# 3. 设置引脚为输出模式(要控制LED亮灭,所以是OUT)
GPIO.setup(LED_PIN, GPIO.OUT)

try:
    print("LED开始闪烁,按Ctrl+C退出...")
    while True:
        GPIO.output(LED_PIN, GPIO.HIGH)  # 输出高电平→点亮LED
        time.sleep(1)                    # 等待1秒
        GPIO.output(LED_PIN, GPIO.LOW)   # 输出低电平→熄灭LED
        time.sleep(1)                    # 等待1秒
except KeyboardInterrupt:
    # 4. 清理GPIO设置(避免下次使用出错)
    GPIO.cleanup()
    print("程序退出,GPIO已清理")

运行代码(需要sudo权限,因为GPIO需要root访问):

sudo python3 blink.py

看到LED每秒闪烁一次?恭喜你,完成了第一个GPIO项目!

常见问题:新手踩过的坑

1. LED不亮?检查这3点:

  • 编号错了:用了BCM 17却接了BOARD 12?重新核对引脚表!
  • 正负极反了:LED长脚没接GPIO?把LED反过来试试。
  • 没接电阻:直接连LED会短路,赶紧加220Ω电阻!

2. 提示“Permission denied”?

运行脚本时加sudo——GPIO属于系统资源,需要管理员权限。

3. 按Ctrl+C退出后,LED还亮着?

没加GPIO.cleanup()!这个函数会把引脚恢复到默认状态,一定要加在except里。

实战项目1:人体红外传感器控制LED

用HC-SR501人体红外传感器做个“有人来了就亮灯”的小装置,更贴近实际应用。

元件与连接:

  • HC-SR501传感器:VCC接树莓派5V,GND接GND,OUT接BCM 18(BOARD 12)。
  • LED:连接方式和之前一样(BCM 17)。

Python代码:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

# 定义引脚
PIR_PIN = 18  # 人体红外传感器的OUT引脚
LED_PIN = 17   # LED引脚

# 设置PIR为输入模式(读传感器数据),LED为输出模式
GPIO.setup(PIR_PIN, GPIO.IN)
GPIO.setup(LED_PIN, GPIO.OUT)

try:
    print("传感器初始化中...(2秒)")
    time.sleep(2)  # 传感器需要2秒预热
    print("开始检测人体...")
    while True:
        if GPIO.input(PIR_PIN) == GPIO.HIGH:
            print("有人!LED亮5秒")
            GPIO.output(LED_PIN, GPIO.HIGH)
            time.sleep(5)  # 保持亮5秒
        else:
            GPIO.output(LED_PIN, GPIO.LOW)
        time.sleep(0.1)  # 减少CPU占用
except KeyboardInterrupt:
    GPIO.cleanup()

运行后,走到传感器前,LED会自动亮5秒——是不是很有成就感?

实战项目2:DHT11温湿度检测

用DHT11传感器读取环境温湿度,数据会打印在终端上。

元件与连接:

  • DHT11传感器:VCC接5V,GND接GND,DATA接BCM 4(BOARD 7)。

安装库:

sudo pip3 install adafruit-circuitpython-dht

Python代码:

import adafruit_dht
import board
import time

# 初始化DHT11传感器(DATA引脚接board.D4→BCM 4)
dht11 = adafruit_dht.DHT11(board.D4)

try:
    while True:
        try:
            # 读取温湿度
            temperature = dht11.temperature
            humidity = dht11.humidity
            print(f"当前温度: {temperature}°C, 湿度: {humidity}%")
        except RuntimeError:
            # 传感器偶尔会读错数据,忽略重试
            print("读取错误,重试...")
            time.sleep(2)
            continue
        time.sleep(5)  # 每5秒读一次
except KeyboardInterrupt:
    print("退出程序")

运行后,终端会每隔5秒输出一次温湿度——你可以把数据存到文件里,或者推送到手机(进阶玩法)。

进阶:用GPIO Zero简化编程

如果你觉得RPi.GPIO库太繁琐,可以试试GPIO Zero——它是树莓派官方推荐的简化库,代码更简洁:

比如控制LED闪烁,用GPIO Zero只要3行:

from gpiozero import LED
from time import sleep

led = LED(17)  # 直接指定BCM编号
while True:
    led.toggle()  # 切换LED状态(亮→灭→亮)
    sleep(1)

是不是比RPi.GPIO简单多了?新手可以从GPIO Zero入门,再学底层库。

安全提示:别搞坏树莓派!

  1. 不要接5V到GPIO:GPIO引脚最大承受3.3V,接5V会烧坏芯片!
  2. 断电再接线:带电插拔元件容易短路,轻则烧元件,重则烧树莓派。
  3. 用合适的电源:树莓派4B需要5V/3A的电源,用手机充电器可能导致电压不稳。

最后:继续玩点更酷的

学会了基础,可以尝试更复杂的项目:
– 用GPIO控制步进电机(比如让小风扇转起来)。
– 用继电器控制家电(比如自动开关灯)。
– 结合MQTT,用手机远程控制GPIO。

GPIO是树莓派的“灵魂”——通过它,你可以把树莓派变成任何智能设备的核心。慢慢玩,你会发现更多乐趣!

原创文章,作者:,如若转载,请注明出处:https://zube.cn/archives/328

(0)