ESP8266-12S 智能温湿度监控系统

0 阅读3分钟

ESP8266-12S 智能温湿度监控系统

项目简介

本项目基于 ESP8266-12S 开发板,结合 DHT11 温湿度传感器,实现了一套完整的物联网环境监测解决方案。系统通过 MQTT 协议实时上传环境数据,同时利用 InfluxDB 时序数据库进行数据持久化存储,适用于智能家居、农业大棚、工业监控等场景。

系统架构

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│   DHT11     │────▶│  ESP8266-12S │────▶│  MQTT Broker│
│  温湿度传感器│     │              │     │   (EMQX)    │
└─────────────┘     └──────┬───────┘     └─────────────┘
                           │
                           ▼
                    ┌──────────────┐
                    │  InfluxDB    │
                    │  时序数据库   │
                    └──────────────┘

技术栈

技术组件说明
硬件平台ESP8266-12S WiFi 模块
传感器DHT11 温湿度传感器
通信协议MQTT over TLS/SSL (8883 端口)
消息中间件EMQX Cloud
时序数据库InfluxDB Cloud
时间同步NTP 协议 (阿里云 NTP 服务器)
安全认证BearSSL + Digicert CA 证书

核心功能

1. 数据采集

  • 温度采集(单位:摄氏度)
  • 湿度采集(单位:百分比)
  • WiFi 信号强度(RSSI)
  • 设备运行时间戳

2. 数据传输

  • MQTT 发布:通过加密通道实时推送传感器数据
  • InfluxDB 写入:持久化存储历史数据用于分析

3. 网络特性

  • WiFi STA 模式:连接主路由器获取互联网
  • WiFi AP 模式:创建热点供其他设备接入
  • 自动重连机制:断线后自动恢复连接
  • 睡眠禁用:保持持续在线状态

4. 安全机制

  • TLS/SSL加密传输(MQTT over SSL)
  • X.509 证书验证
  • MQTT 账号密码认证

MQTT Topic 设计

Topic方向描述数据格式
mqtt-topic/home发布温湿度数据{"temp":xx,"hum":xx,"time":xxx}
mqtt-topic/wifi_status发布WiFi 状态{"rssi":xx,"uptime":xx,"time":xxx}
mqtt-topic/online_status订阅/发布设备在线状态{"mac":"x.x.x.x"}

InfluxDB 数据模型

measurement: wifi_status
  tags: ssid
  fields: rssi, uptime

measurement: home
  tags: room
  fields: temp, hum

硬件连接

ESP8266 引脚DHT11 引脚说明
GPIO4 (D2)DATA单向串行数据
3.3VVCC电源
GNDGND接地

代码结构

main.ino
├── setup()           // 初始化 WiFi、MQTT、传感器、时间同步
├── loop()            // 主循环:数据采集与上报
├── connectToMQTT()   // MQTT 连接建立(含 SSL 证书验证)
└── syncTime()        // NTP 时间同步

关键配置项

// WiFi 配置
const char* ssid = "your_ssid";
const char* password = "your_password";

// MQTT 配置
const char* mqtt_server = "broker_address";
const int mqtt_port = 8883;  // SSL 端口

// InfluxDB 配置
#define INFLUXDB_URL "https://your-influxdb-url"
#define INFLUXDB_TOKEN "your_token"
#define INFLUXDB_ORG "your_org"
#define INFLUXDB_BUCKET "your_bucket"

依赖库

使用 Arduino IDE 安装以下库:

ESP8266WiFi          // ESP8266 官方 WiFi 库
Adafruit_Sensor      // 传感器统一接口
DHT_Unified          // DHT 系列传感器驱动
PubSubClient         // MQTT 客户端
WiFiUDP             // UDP 网络支持
NTPClient           // NTP 时间同步
InfluxDbClient      // InfluxDB 客户端
InfluxDbCloud       // InfluxDB Cloud 支持
BearSSL             // SSL/TLS 加密库

部署步骤

  1. 环境准备

    • 安装 Arduino IDE 及 ESP8266 板卡支持
    • 安装所需依赖库
  2. 配置修改

    • 修改 WiFi 账号密码
    • 配置 MQTT Broker 地址和凭证
    • 配置 InfluxDB 连接参数
  3. 编译烧录

    • 选择开发板:NodeMCU 1.0 (ESP-12E Module)
    • 选择上传端口
    • 点击上传
  4. 验证运行

    • 打开串口监视器(115200 波特率)
    • 观察连接状态和传感器读数

性能指标

  • 采样间隔: 约 2.5 秒(受 DHT11 读取延迟影响)
  • 内存占用: ~70%(ESP8266 Flash 受限)
  • 功耗: 约 70mA(工作态),可通过深度睡眠优化
  • 有效距离: WiFi 信号范围内

扩展建议

  1. 数据可视化: 配合 Grafana 搭建监控仪表盘
  2. 告警机制: 添加阈值判断触发告警
  3. OTA 升级: 实现远程固件更新
  4. 多传感器: 扩展 PM2.5、光照等传感器
  5. 本地缓存: WiFi 断开时本地暂存数据

注意事项

⚠️ 安全提示: 生产环境请修改默认密码,避免硬编码敏感信息

⚠️ 内存管理: ESP8266 内存有限,谨慎添加功能

⚠️ 散热问题: 长时间运行注意设备散热

开源协议

MIT License