Raspberry Pi Python 编程:控制 LED 与温湿度传感器
·
Raspberry Pi Python 编程:控制 LED 与温湿度传感器
在本指南中,我将逐步指导你如何在 Raspberry Pi 上使用 Python 编程控制 LED 灯和读取温湿度传感器(如 DHT11 或 DHT22)。整个过程包括硬件连接、软件设置和代码实现。确保你拥有基本的 Raspberry Pi(如 Raspberry Pi 4)和以下材料:
-
所需硬件:
- Raspberry Pi 板(已安装 Raspbian 系统)
- LED 灯(颜色不限)
- 220Ω 电阻(用于保护 LED,计算基于欧姆定律:$R = \frac{V_{cc} - V_{LED}}{I_{LED}}$,其中 $V_{cc} = 3.3V$,$V_{LED} \approx 2V$,$I_{LED} \approx 10mA$)
- 温湿度传感器(如 DHT11 或 DHT22)
- 面包板和跳线
- 连接线(如杜邦线)
-
所需软件:
- Python 3(已预装在 Raspbian 中)
- 安装必要库:
- 使用终端命令安装 GPIO 库:
sudo pip3 install RPi.GPIO - 安装 DHT 传感器库:
sudo pip3 install Adafruit_DHT
- 使用终端命令安装 GPIO 库:
接下来,我将分步解释如何连接硬件和编写代码。整个过程分为两个部分:控制 LED 和读取温湿度。最后,提供一个完整的 Python 脚本示例。
步骤 1: 连接硬件
确保 Raspberry Pi 断电操作,避免短路。
-
LED 连接:
- 将 LED 的长脚(正极)通过 220Ω 电阻连接到 GPIO 引脚(例如 GPIO17)。
- 将 LED 的短脚(负极)连接到 GND(接地)引脚。
- 参考 Raspberry Pi GPIO 引脚图(可在网上搜索),确保连接正确。
-
温湿度传感器连接:
- DHT11/DHT22 通常有三个引脚:VCC(电源)、DATA(数据)、GND(接地)。
- 将 VCC 连接到 3.3V 引脚。
- 将 DATA 连接到 GPIO 引脚(例如 GPIO4)。
- 将 GND 连接到 GND 引脚。
- 注意:如果传感器有四个引脚,请查阅其数据手册(通常 VCC、DATA、NC、GND)。
连接完成后,通电启动 Raspberry Pi。
步骤 2: 编写 Python 代码
我们将使用 Python 编写一个脚本,同时控制 LED 闪烁和读取温湿度数据。代码结构包括:
- 导入所需库。
- 设置 GPIO 引脚模式。
- 定义 LED 控制函数(如闪烁)。
- 定义温湿度读取函数。
- 主循环执行任务。
以下是一个完整的 Python 代码示例。复制到文件(如 sensor_led.py)并运行。
# 导入必要库
import RPi.GPIO as GPIO
import Adafruit_DHT
import time
# 设置 GPIO 模式为 BCM(使用 GPIO 编号,而非物理引脚号)
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False) # 禁用警告
# 定义引脚
LED_PIN = 17 # LED 连接到 GPIO17
DHT_PIN = 4 # 温湿度传感器 DATA 连接到 GPIO4
DHT_SENSOR = Adafruit_DHT.DHT11 # 使用 DHT11;如果是 DHT22,改为 Adafruit_DHT.DHT22
# 初始化 LED 引脚为输出
GPIO.setup(LED_PIN, GPIO.OUT)
def blink_led(times, delay):
"""控制 LED 闪烁的函数。
:param times: 闪烁次数
:param delay: 每次亮灭的延迟(秒)
"""
for _ in range(times):
GPIO.output(LED_PIN, GPIO.HIGH) # 点亮 LED
time.sleep(delay)
GPIO.output(LED_PIN, GPIO.LOW) # 熄灭 LED
time.sleep(delay)
def read_dht_sensor():
"""读取温湿度传感器的函数。
:return: 温度和湿度(如果读取失败,返回 None)
"""
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
return temperature, humidity
# 主程序
try:
print("程序启动:按 Ctrl+C 停止")
while True:
# 读取温湿度
temperature, humidity = read_dht_sensor()
if temperature is not None and humidity is not None:
print(f"温度: {temperature:.1f}°C, 湿度: {humidity:.1f}%")
else:
print("传感器读取失败,请检查连接")
# 控制 LED 闪烁(例如,根据温度变化闪烁次数)
# 这里简单示例:温度高于 25°C 时闪烁 3 次,否则闪烁 1 次
if temperature > 25:
blink_led(3, 0.5)
else:
blink_led(1, 0.5)
time.sleep(2) # 每次循环间隔 2 秒
except KeyboardInterrupt:
print("程序停止")
finally:
GPIO.cleanup() # 清理 GPIO 设置
步骤 3: 运行和测试
- 保存代码为
sensor_led.py。 - 在终端中运行:
python3 sensor_led.py。 - 观察输出:终端会显示温湿度读数,同时 LED 会根据温度闪烁(温度高于 25°C 时闪烁 3 次,否则闪烁 1 次)。
- 按
Ctrl+C停止程序。
注意事项
- 安全提示:始终在断电时连接硬件,避免 GPIO 引脚短路。确保电阻值正确,防止 LED 烧毁(计算电阻值:$R \geq \frac{3.3V - V_{LED}}{I_{LED}}$,典型值 $I_{LED} = 10mA$)。
- 故障排除:
- 如果 LED 不亮:检查引脚连接和电阻。
- 如果传感器读取失败:确认 DHT 型号正确(代码中
DHT_SENSOR变量),并检查接线。 - 库安装问题:使用
sudo pip3 install --upgrade 库名更新。
- 扩展建议:你可以修改代码,例如将温湿度数据保存到文件,或添加更多传感器。公式如温度转换(华氏度:$F = \frac{9}{5}C + 32$)可集成到代码中。
这个指南基于标准 Raspberry Pi 实践,确保可靠性和易用性。如果有具体问题,提供更多细节我可以进一步优化!
更多推荐

所有评论(0)