传感器就是机器的"感觉器官"——按键是触觉、温湿度是体感、红外是"看"有没有东西挡路。这篇用树莓派最常用的 GPIO Zero 库,把按键输入、温湿度读取、红外避障三类传感器讲明白,让小车真的开始"感觉"世界。
GPIO Zero:树莓派读传感器的官方库
GPIO Zero 是树莓派官方推荐的 Python 库,专门封装 GPIO 外设操作,树莓派系统默认预装(Raspberry Pi OS Desktop 和 Lite 都带),对常用外设做了友好封装,用起来非常省事。如果默认装坏了,用 apt 重装:
sudo apt update
sudo apt install python3-gpiozero
其他系统也可以 pip 装:sudo pip3 install gpiozero。下面用它逐个搞定三类传感器。
按键:最简单的"开关"输入
按键本质就是一个开关,按下接通、松开断开。GPIO Zero 把按键封装成 Button 类,接到任意 GPIO 引脚(比如 2 号)就能用:
from gpiozero import Button
from time import sleep
btn = Button(2) # 按键接 GPIO 2,另一脚接地
while True:
if btn.is_pressed:
print("按下啦!")
else:
print("松开")
sleep(0.2)
btn.is_pressed 返回按键是不是按着;btn.when_pressed 还能绑定"按下瞬间"的回调函数。做小车时,常见用法是:按键当启动/急停开关——按一下车跑,再按一下停,比拔线安全多了。
温湿度传感器:读环境数据
常见的是 DHT11/DHT22 这类温湿度传感器,一根信号线就能把温度和湿度传回树莓派。GPIO Zero 里对应 DHT11 / DHT22 类(部分版本需单独装跟 adafruit-circuitpython-dht 相关依赖),用法基本一致:
from gpiozero import DHT11
from time import sleep
dht = DHT11(4) # 温湿度传感器接 GPIO 4
while True:
temp = dht.temperature
hum = dht.humidity
print("温度:", temp, "°C 湿度:", hum, "%")
sleep(2)
dht.temperature、dht.humidity 直接读出温度和湿度。注意 DHT 这类传感器需要 稳定供电和接线正确,信号线上经常要加个上拉电阻,否则读数不稳定甚至读不到——这也是很多人"明明接对了却读不出数据"的常见坑。
红外避障:让小车"看见"障碍
红外避障传感器(很多小车配套的 3 线红外/循迹模块)检测前方有没有障碍物,输出一个高/低电平。GPIO Zero 里 DistanceSensor(超声波) 对应距离,而红外这类"数字开关型"传感器,其实用 Button(输入) 的方式读就行:
from gpiozero import Button
ir = Button(17) # 红外避障模块输出脚接 GPIO 17(注意电平是否反相)
while True:
if ir.is_pressed:
print("前方有障碍!")
else:
print("前方通畅")
有了"前方有没有东西"这个信号,配合电机控制就能做最基础的避障小车:遇障停下、转向、再前进。这就是传感器让机器的"逻辑"活起来的起点——先感觉,再判断,后动作。
从小传感器到真智能
单个传感器读完只是"读到数据",真正的智能是把它们组合起来做决策:红外避障 + 编码器闭环 + 温湿度监控(给树莓派散热参考),再配合 OpenClaw 这类智能体,就能用自然语言指挥小车"遇到障碍绕过去"。跑跑啦的全自动智能小车整机就集成了避障、循迹、编码器精准控制,传感器模块可以按需扩展。想自己搭传感器扩展,可以看我们传感器模块和智能小车产品。淘宝店:paopaola.taobao.com。
小提示:按键、红外这类"开关型"传感器用 Button 类读最方便;DHT 温湿度要保证供电和上拉电阻,否则读数不稳。
(本文整理自 Raspberry Pi 树莓派官方文档《GPIO Zero》与 GPIO Zero 官方文档,CC BY-SA 4.0,来源:https://shumeipai.nxez.com/doc-zhcn/docs/program/gpio/gpiozero)


微信联系
淘宝联系