150元搭一套ESP32室内环境监测系统:温湿度光照全都要,从零到上线

发布时间:2026/9/16 13:53:01
150元搭一套ESP32室内环境监测系统:温湿度光照全都要,从零到上线
150元搭一套ESP32室内环境监测系统温湿度光照全都要从零到上线【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32凌晨三点婴儿房里的小孩翻来覆去你是不是也想知道卧室现在到底多干多潮这套基于ESP32的环境监测系统就能解决它一块ESP32-DevKitC加三个传感器总共不到150元实时采集室温、湿度、光照和CO₂浓度通过WiFi把数据推到云端手机上随时看曲线越界还能触发预警。方案门槛很低会用Arduino IDE就能动手下面按先装环境→再接线→后写码的顺序带你一遍搭完。5分钟装好ESP32开发环境电脑里什么都没有先花5分钟把工具链补齐装好Arduino IDE后点顶部菜单文件→首选项在附加开发板管理器网址这一栏粘贴https://espressif.github.io/arduino-esp32/package_esp32_index.json打开工具→开发板→开发板管理器搜索ESP32装好带版本号的那个包就行。装完以后菜单栏开发板里就会出现ESP32、ESP32-S2、ESP32-C3等选项选你的开发板型号即可。硬件清单与接线5分钟接完所有传感器整个方案一共5个元件全部是常见现货元件型号干什么用参考价主控ESP32-DevKitC内置WiFi和蓝牙GPIO够用¥45温湿度DHT22数字口直出温度湿度¥18光照BH1750I2C接口输出0~65535 lux¥12CO₂MH-Z19B串口口对话0~5000ppm¥65供电18650电池充电板便携供电支持USB回充¥15接线时记住一条原则3.3V供电的东西别接到5V口上。具体对应关系是——DHT22VCC接3.3VGND共地DATA线接GPIO4BH1750VCC接3.3VGND共地SDA接GPIO21SCL接GPIO22MH-Z19B这个模块吃5VVCC接5V口GND共地它的RX接GPIO16TX接GPIO17注意TX对RX交叉着接。三根线、五根线的事接完用万用表确认没有短路就可以开工了。核心代码读数、上传就干这两件事程序逻辑其实就三步采一遍 → 传上去 → 睡大觉。先看引脚定义和初始化#define DHT_PIN 4 // DHT22数据脚 #define SDA_PIN 21 // I2C数据脚 #define SCL_PIN 22 // I2C时钟脚 #define RX_PIN 16 // 接MH-Z19B的TX #define TX_PIN 17 // 接MH-Z19B的RX Wire.begin(SDA_PIN, SCL_PIN); // 点亮I2C总线第二段是主流程。把温度、湿度、光照、CO₂四个值读出来拼进一个HTTP请求丢给云端以ThingSpeak为例注册后新建Channel就能拿到API密钥void loop() { float t dht.readTemperature(); // 读DHT22 float h dht.readHumidity(); int lux lightMeter.readLightLevel(); int co2 readCO2Level(); // 串口问MH-Z19B if (WiFi.status() WL_CONNECTED) { WiFiClient client; if (client.connect(api.thingspeak.com, 80)) { String url /update?api_key你的密钥field1 t field2 h field3 lux field4 co2; client.print(GET url HTTP/1.1\r\n Host: api.thingspeak.com\r\nConnection: close\r\n\r\n); client.stop(); } } esp_deep_sleep_start(); // 传完就睡 }大白话拆解dht.readTemperature()就是问一次传感器现在多少度client.connect相当于在WiFi上拨通电话后面client.print发送的那串字符是HTTP协议要求的最小报文格式意思是往这个URL写这四个字段。传完电话挂断芯片立刻进入深度睡眠。想直接看完整示例仓库里现成的WiFiClient示例就是照着ThingSpeak写的拿过来改改密钥就能跑。深度睡眠省电配置把功耗压到10μA电池供电的方案省电就是命。ESP32的深度睡眠Deep Sleep会把CPU、大部分RAM和所有数字外设全部断电只留下RTC实时时钟这一小块值班室整机功耗能压到10微安级别——什么概念一节18650电池撑几个月没问题。用法只有两句话设好闹钟然后关机。// 让ESP32每5分钟被定时器叫醒一次 esp_sleep_enable_timer_wakeup(300 * 1000000); // 单位是微秒 esp_deep_sleep_start(); // 进睡醒来后程序从头再跑这里有个新手容易踩的点深度睡眠会把RAM里的变量全清掉相当于失忆重启。所以睡眠期间的计时、计数要存到RTC内存里代码里加RTC_DATA_ATTR前缀的变量就能活下来这个技巧在TimerWakeUp深度睡眠示例里有完整演示。另外两个省电细节传感器也一起断电用一个GPIO控制传感器供电脚醒着时才给电别让传感器在芯片睡觉时白白耗电WiFi按需连接只在上传那几秒联网传完即走不要维持长连接。避坑指南现象→原因→对策调试卡住了先对号入座现象原因对策WiFi一直连不上信号弱、密码错、2.4G/5G混淆ESP32只支持2.4GHz确认频段和密码云端收不到数据API密钥错、网络不通先打开云端页面核对密钥再检查WiFi指示灯状态传感器读数全是乱码接线反了或传感器坏了重点查串口TX/RX是否交叉接对换颗传感器试试电池掉电飞快深睡没睡成检查是否忘了关传感器电源脚用串口打印唤醒原因确认光照读数永远为0I2C地址冲突或接线松用I2C扫描工具确认BH1750在线默认地址0x23进阶玩法断网缓存 OTA远程升级系统跑稳之后还有两个升级方向值得安排上断网时数据别丢。ESP32自带NVS存储一种闪存上的键值数据库通过Preferences库使用联网失败时把读数putFloat写进去网络恢复后再批量补传数据就不会有洞。固件升级不用拆机。引入ArduinoOTA库后给ArduinoOTA设个主机名和密码之后在局域网里直接推新版固件改bug再也不用重新插线烧录。如果还想往大了做加颗PM2.5传感器、把数据接到HomeAssistant或米家、做一间房一个节点的组网监测都是顺着现有架构就能长出来的功能。现在就动手吧先把板子和DHT22接上跑通温湿度这一路剩下的传感器都是同一套套路。遇到烧录、配网、代码上的任何卡壳欢迎到项目讨论区留言交流一起把这台监测站支棱起来。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考