在树莓派中配置和使用GPIO. 何时触发: 需要对 LED, Button 这类简单外设进行控制时, 需要对 Servo, Motors 进行简单控制时, 或需要直接控制GPIO时. 不要触发: 当硬件载体不是树莓派时, 当需要精确控制 Servo, Motors时.
如果需要了解有关 GPIO 硬件的信息, 请参阅 GPIO 硬件.
使用 gpiozero 库可以轻松地用 Python 控制 GPIO 设备.
gpiozero 是其他 GPIO 库(RPi.GPIO, pigpio, lgpio)的封装。它提供了一个通用的 API,这样就可以使用任何适合的后端库,而无需更改代码。
随着树莓派硬件(特别是 Raspberry Pi 5)的架构演变, lgpio 正在逐渐取代 RPi.GPIO 成为新的标准.
自 Release 2.0 (2023-09-12) 起, lgpio 是 gpiozero 的默认后端.
RPi.GPIO 是树莓派早期的经典 GPIO 库, 直接通过访问硬件寄存器(/dev/mem)来控制引脚.
而 lgpio 是基于现代 Linux 内核的 gpiochip 接口开发的库, 不依赖特定的硬件地址.
gpiozero 在树莓派操作系统中已经默认安装.
如果发现没有安装, 则执行下列命令进行安装:
bash
sudo apt update
sudo apt install python3-gpiozero
rpi-lgpio 在莓派操作系统中已经默认安装.
如果发现没有安装, 则需要检查 RPi.GPIO 是否已经安装了。
因为不能在同一 Python 环境中同时安装 rpi-lgpio 和 rpi-gpio, 因为这两个包都试图安装一个名为 RPi.GPIO 的模块
如果硬件是 Raspberry Pi 5 之前的系列, 可以直接使用 RPi.GPIO.
否则需要先卸载 RPi.GPIO:
bash
sudo apt remove python3-rpi.gpio
再执行下列命令进行安装 rpi-lgpio:
bash
sudo apt update
sudo apt install python3-rpi-lgpio
如果硬件是 Raspberry Pi 5 或之后的系列, 则 RPi.GPIO 已经不能使用, 必须需要安装 rpi-lgpio
RPi.GPIO 在旧版的莓派操作系统中已经默认安装.
如果发现没有安装, 因为 RPi.GPIO 已经不推荐使用,如果 Linux 内核支持 gpiochip, 则直接安装 rpi-lgpio.
否则执行下列命令进行安装 RPi.GPIO:
bash
sudo apt update
sudo apt install python3-rpi.gpio
gpiozero 是一个用于树莓派 GPIO 设备的简单接口.
该库包含了许多简单日常组件的接口,还有一些更复杂的东西,比如传感器、模数转换器、全彩 LED、机器人套件等等.
python
from gpiozero import Button
from time import sleep
button = Button(17, pull_up=True)
while True:
if button.is_pressed:
print(按钮被按下!)
sleep(0.1)
python
from gpiozero import LED
from time import sleep
led = LED(18)
python
from gpiozero import Button, LED
from signal import pause
button = Button(17)
led = LED(18)
pause() # 保持程序运行,等待事件
python
from gpiozero import PWMLED, Servo
from time import sleep
lgpio 是树莓派的现代GPIO库, 使用 /dev/gpiochip Linux标准接口, 是gpiozero的默认后端.
仅当遇到 gpiozero 实现不了的复杂需求时, 才能使用它.
python
import lgpio
python
import lgpio
h = lgpio.gpiochip_open(0)
lgpio.gpiochip_close(h)
python
import lgpio
import time
h = lgpio.gpiochip_open(0)
⚠️ 注意: tx_servo 使用软件定时,会有轻微抖动,仅适合测试。长期使用建议配置硬件PWM。
python
import lgpio
def callback(chip, gpio, level, timestamp):
中断回调函数
level: 0=低电平, 1=高电平, 2=边沿变化
print(fGPIO {gpio} 状态变为 {level})
h = lgpio.gpiochip_open(0)
lgpio.gpiochip_close(h)
参考文档:
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 raspberry-pi-gpio-1776171990 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 raspberry-pi-gpio-1776171990 技能
skillhub install raspberry-pi-gpio-1776171990
文件大小: 6.28 KB | 发布时间: 2026-4-15 13:10