from machine import Pin
from time import sleep
import dht
# Pin 配置
DHT_PIN1 = 15 # 第一个DHT22传感器连接的引脚
DHT_PIN2 = 2 # 第二个DHT22传感器连接的引脚
DHT_PIN3 = 4 # 第三个DHT22传感器连接的引脚
RELAY_PIN = 16 # 继电器控制引脚
# 初始化 DHT 传感器
dht1 = dht.DHT22(Pin(DHT_PIN1)) # 初始化第一个 DHT22 传感器
dht2 = dht.DHT22(Pin(DHT_PIN2)) # 初始化第二个 DHT22 传感器
dht3 = dht.DHT22(Pin(DHT_PIN3)) # 初始化第三个 DHT22 传感器
# 初始化继电器
relay = Pin(RELAY_PIN, Pin.OUT) # 配置继电器控制引脚为输出
relay.value(0) # 初始化时,继电器为 OFF(关闭)
print("MicroPython ESP32 与 DHT22 传感器和继电器控制系统")
while True:
try:
# 读取第一个传感器的温度和湿度
dht1.measure() # 开始读取
temp1 = dht1.temperature() # 获取温度值
hum1 = dht1.humidity() # 获取湿度值
# 读取第二个传感器的温度和湿度
dht2.measure()
temp2 = dht2.temperature()
hum2 = dht2.humidity()
# 读取第三个传感器的温度和湿度
dht3.measure()
temp3 = dht3.temperature()
hum3 = dht3.humidity()
# 显示读取的温度和湿度数据
print("\n=== 传感器数据 ===")
print(f"传感器 1 - 温度: {temp1:.2f} C, 湿度: {hum1:.2f} %")
print(f"传感器 2 - 温度: {temp2:.2f} C, 湿度: {hum2:.2f} %")
print(f"传感器 3 - 温度: {temp3:.2f} C, 湿度: {hum3:.2f} %")
# 计算三个传感器的平均温度
avg_temp = (temp1 + temp2 + temp3) / 3.0
print(f"温度平均值: {avg_temp:.2f} C")
# 如果平均温度大于 30°C,开启继电器
if avg_temp > 30.0:
relay.value(1) # 开启继电器
print("继电器开启")
else:
relay.value(0) # 关闭继电器
print("继电器关闭")
except Exception as e:
print("读取传感器失败:", e) # 如果读取传感器数据失败,显示错误信息
sleep(2) # 每隔2秒钟重新读取一次传感器数据