豆包语音助手:ESP32-S3与温湿度传感器的联动控制
【代码】豆包语音助手:ESP32-S3与温湿度传感器的联动控制。
·
ESP32-S3与温湿度传感器联动控制方案
一、硬件选型
- 主控芯片:ESP32-S3(双核处理器,WiFi/BLE5.0,丰富IO接口)
- 传感器推荐:
- DHT22(精度±0.5°C,量程-40~80°C)
- SHT30(I²C接口,精度±2%RH)
- AM2301B(电容式,响应时间<2s)
二、电路连接
ESP32-S3 温湿度传感器
────────────────────────────
3V3 → VCC
GND → GND
GPIO21 → DATA (单总线协议)
或
GPIO22 → SCL (I²C协议)
GPIO23 → SDA (I²C协议)
三、核心代码实现
#include <DHT.h>
#define DHTPIN 21 // 数据引脚
#define DHTTYPE DHT22 // 传感器型号
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
float humidity = dht.readHumidity();
float temp = dht.readTemperature();
if (isnan(humidity) || isnan(temp)) {
Serial.println("读取失败!");
return;
}
Serial.print("湿度: ");
Serial.print(humidity);
Serial.print("%\t温度: ");
Serial.print(temp);
Serial.println("°C");
// 联动控制逻辑
if (temp > 30.0) {
digitalWrite(15, HIGH); // 触发散热设备
} else if (humidity < 40.0) {
digitalWrite(16, HIGH); // 触发加湿设备
}
delay(2000); // 2秒采样间隔
}
四、联动控制逻辑
-
温度控制:
- 当 $T > T_{\text{max}}$ 时:启动散热装置
- 当 $T < T_{\text{min}}$ 时:启动加热装置 $$ \text{控制函数} = \begin{cases} 1 & T \geq 30^\circ\text{C} \ 0 & T < 25^\circ\text{C} \end{cases} $$
-
湿度控制:
- 当 $H > H_{\text{max}}$ 时:启动除湿
- 当 $H < H_{\text{min}}$ 时:启动加湿 $$ \Delta H = k_p (H_{\text{set}} - H) + k_i \int (H_{\text{set}} - H) dt $$
五、进阶功能
-
物联网集成:
# MQTT数据上传示例 import paho.mqtt.publish as publish publish.single("home/sensor/temp", payload=str(temp), hostname="broker.emqx.io") -
低功耗优化:
- 启用ESP32深度睡眠模式
- 采样间隔动态调整:$t_{\text{sleep}} = 60 \times (2 - \frac{\Delta T}{5})$ 分钟
-
安全机制:
- 传感器失效检测:连续3次读取失败触发警报
- 数值突变过滤:$ |x_t - x_{t-1}| > 5 \Rightarrow \text{数据丢弃} $
六、调试建议
- 使用逻辑分析仪验证单总线时序
- 添加串口数据可视化:
# Python串口绘图 import matplotlib.pyplot as plt ser = serial.Serial('COM3', 115200) while True: data = ser.readline().decode().strip().split('\t') plt.plot(float(data[0]), float(data[1]), 'ro') plt.pause(0.05)
注意事项:
- 单总线设备需加4.7kΩ上拉电阻
- 控制继电器时添加续流二极管
- 工业环境建议使用RS485接口传感器
- 温湿度补偿公式:$H_{\text{real}} = H + 0.01 \times (T-25) \times H$
更多推荐



所有评论(0)