💡 前言
你是否想为自己的工作间或客厅添加一个能监测温湿度、空气质量、光照强度的智能助手?本篇文章将带你通过 ESP32 与环境传感器的整合,实现一个具备 Wi-Fi 数据上传、OLED 实时显示、动画反馈的多功能环境监测系统。
⚙️ 项目概览
本项目将 ESP32 与常见环境传感器(如 DHT11/22、BH1750、MQ135 等)集成,配合 ST7789 显示屏及 Wi-Fi 网络,将实时数据上传至云端(如 ThingSpeak),实现可视化展示与远程访问。
📁 系统结构:
模块 | 功能描述 |
---|---|
传感器模块 | 采集温度、湿度、光照、空气质量等数据 |
显示模块 | ST7789 显示当前数值与图形动画 |
网络模块 | ESP32 通过 Wi-Fi 将数据上传至云端 |
动画反馈 | 根据环境变化呈现动态视觉效果 |
🧰 开发环境与依赖库
建议使用 Arduino IDE 开发,易于快速构建与测试:
📦 所需库:
- DHT.h:用于温湿度采集
- Adafruit_BH1750.h:光照强度检测
- TFT_eSPI.h:驱动 ST7789 显示屏
- WiFi.h + HTTPClient.h:用于连接网络并上传数据
- ArduinoJson:格式化上传数据
🧪 硬件选型与连接指南
硬件组件 | 接口说明 |
---|---|
ESP32 Dev Board | 主控器 |
DHT22 | GPIO 输入读取温湿度 |
BH1750 | I2C 接口读取光照数据 |
MQ135(选配) | 模拟接口监测空气质量 |
ST7789 显示屏 | SPI 接口显示动画与数值 |
📌 示例连接图:
DHT22 → GPIO 21 BH1750 → SDA/SCL (GPIO 22/23) ST7789 → SPI 接口 (CS, DC, CLK, MOSI)
🖥️ 显示界面与动画效果
使用 ST7789 屏幕展示以下内容:
- 实时数值:温度 / 湿度 / 光照强度
- 环境状态图标:阳光、小雨、雾霾等图形化反馈
- 数据变化动画:采用帧切换展示动态趋势
✨ 动画设计思路:
void drawSunAnimation() { for (int i = 0; i < 5; i++) { drawSunFrame(i); delay(100); } }
🌐 云平台数据上传
推荐使用 ThingSpeak 作为数据展示平台:
📤 数据上传流程:
- 注册账号并创建频道
- 获取 Write API Key
- 在代码中使用 HTTP POST 上传数据
- 在网页中配置数据图表显示
🚀 示例代码片段:
void uploadToCloud(float temp, float hum) { HTTPClient http; String url = "http://api.thingspeak.com/update?api_key=XXX&field1=" + String(temp) + "&field2=" + String(hum); http.begin(url); http.GET(); http.end(); }
🧠 项目亮点与扩展方向
🌟 技术亮点:
- 模块化结构清晰,便于维护与拓展
- 实现动画与传感数据联动,增强可视性
- 支持网络通信,实现云端同步与远程监控
🔭 延伸创意:
- 添加语音播报功能(DAC 或 I2S 输出)
- 结合 BLE 与手机实时交互
- 使用触控按键切换不同展示模式
- 添加数据记录功能并绘制历史趋势图
📝 结语与互动
本项目将传感器、可视化界面与云端通信融合,不仅能提升环境认知体验,也为物联网项目开发奠定了良好基础。如果你也正在学习 ESP32 或尝试嵌入式项目,不妨从这类“实用 + 美感”的创意项目开始。
评论