ESP32环境监控实战:100元、30分钟,零基础搭一套温湿度光照自动上报系统 📅 发布时间:2026/9/16 20:38:21 👁 浏览次数: ESP32环境监控实战100元、30分钟零基础搭一套温湿度光照自动上报系统【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32家里闷热潮湿、或者光线太暗你往往要等身体先察觉才知道。能不能让一块小开发板替你盯着用 arduino-esp32 这个项目可以。它是乐鑫官方的 ESP32 Arduino 核心库装好它ESP32 就能直接跑 Arduino 代码温湿度、光照数据能定时采集、自动通过 WiFi 上报。本文给你算好账硬件 80~100 元动手 30 分钟起全程不需要焊接经验。先回答你脑子里的三个问题要花多少钱一块 ESP32 开发板 35 元上下加一个 DHT22 温湿度传感器15 元、一个 BH1750 光照传感器12 元、电源线材 20 元凑齐在 100 元以内。难不难会抄代码就行。本文每个阶段都从仓库现成示例出发你只改三行WiFi 账号、密码、引脚号。离了电脑能跑吗能。第三档做完接上电源它就自己干活电脑只负责远程看数据和远程升级。下面按能联网 → 能读数 → 能省电 → 能升级四档递进每档结束你手里都有一个能验证的成果。准备工作把开发板交给 arduino-esp32ESP32 本身不会说 Arduino 的语言arduino-esp32 就是翻译层把 Arduino 那套熟悉的setup()、loop()翻译成 ESP32 能执行的指令。打开 Arduino IDE进入首选项把板包安装地址填进附加开发板管理器网址。打开板卡管理器搜索 ESP32安装。插板、选板、烧一个点灯程序LED 亮起来准备工作就完事了。上图是 ESP32-DevKitC 的完整引脚分布。记住三类引脚就够了标着 GPIO 的是万能脚接什么传感器都行、写着 3.3V/GND 的是电源、I2C 标记的两根脚留给一根线挂多个设备的传感器。第一档先让它连上 WiFi跑通一次数据上报别急着接传感器。第一件事是证明这块板子能上网、能把数据发出去——这是整个环境监控系统里最容易翻车的一环先单独验证它。仓库里有个现成的 WiFiClient.ino作用就是把数据发到 Thingspeak 这种免费数据平台。打开它只需要改三处const char *ssid 你的WiFi名; const char *password 你的密码; const String writeApiKey 你的API密钥;烧录后打开串口监视器115200 波特率看到 WiFi connected 和 IP 地址第一档达成 ✅。后续所有功能都建立在这一步之上。原理一句话ESP32 以客户端身份接入你家路由器和普通手机没有区别连上后往平台发一条 HTTP 请求数据就上云了。第二档接上温湿度和光照读到第一个真实数值现在让系统真正感知环境。选两个新手最友好的传感器传感器干什么的怎么和ESP32说话参考成本DHT22测温湿度单线数字信号挂 1 个 GPIO约 15 元BH1750测光照luxI2C 两线总线约 12 元I2C 是什么你可以理解成一条公交线SDA 和 SCL 两根线同一根线上可以挂多个设备各自报站地址互不干扰。ESP32 的 I2C 默认就在 GPIO21/22接线如下DHT22VCC→3.3VGND→GNDDATA→GPIO4BH1750VCC→3.3VGND→GNDSDA→GPIO21SCL→GPIO22核心代码也就三行配合 Arduino IDE 库管理器里搜 DHT、BH1750 两个库装上Wire.begin(21, 22); // I2C总线 lightMeter.begin(); // 光照传感器 int lux lightMeter.readLightLevel();DHT22 那边就是dht.readTemperature()和dht.readHumidity()然后照抄第一档的发送代码把三个字段一起发上去。串口里看到温度 26.3、湿度 58%、光照 300 多 lux——恭喜你的环境监测系统已经有了眼睛。如果某个传感器怎么都读不出数值别先怀疑板子仓库的 I2C API 文档 和 GPIO API 文档 里都有接线与排查说明先对照一遍地址和电平I2C 器件必须 3.3V 供电别接到 5V。第三档改成定时采样让它睡到电池能用几个月问题来了程序 24 小时醒着WiFi 一直挂着耗电很大。电池供电的方案必须解决它。解法是 ESP32 的深度睡眠通俗讲就是让芯片整体关机但留一只 RTC 闹钟时间到了自动开机干完活再睡。睡眠时功耗能低到几微安量级这是普通 MCU 做不到的。仓库自带示例 TimerWakeUp.ino关键就这么两行esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * 1000000ULL); esp_deep_sleep_start();TIME_TO_SLEEP默认 5 秒是为了演示方便。你部署时改成 3005 分钟就是睡 5 分钟 → 醒 → 读三个传感器 → 上报 → 再睡的循环。把第二档的采集和上报代码挪进醒着的时间窗口里就完成第三档 ✅。细节坑提前说醒来后loop()不会被调用所有初始化都放在setup()里执行想记录这是第几次醒来用RTC_DATA_ATTR标记的变量睡眠后它还在。深睡 API 文档 里把所有唤醒源定时器、触摸、外部引脚都讲清楚了需要按一下就醒可以接着读。第四档不用插线也能升级程序设备装到吊顶或阳台后改一行阈值还要拆下来重新烧录第四档解决这个体验问题OTA 无线升级。仓库里 BasicOTA 示例的思路是设备在局域网里起一个名字比如EnvMonitor你在同一 WiFi 下用 IDE 的工具→USB 端口选到它直接推送新固件。以后调报警阈值、改采样间隔都不用碰硬件。另外建议把上次读到什么、累计采了多少次存进 Preferences 这个库它基于 ESP32 自带的 NVS 小闪存断网断电都不丢。用法可以看 Preferences 教程。四档投入产出对照档位你做了什么手里多了什么一装核心库、改 3 行配置设备稳定联网并上报二接 DHT22 BH1750真实温湿度/光照数据上云三套用 TimerWakeUp 改个数字电池供电可持续数月四套用 BasicOTA免拆机远程升级翻车时的排查顺序现象大概率原因先查这里卡在 Connecting to WiFi密码错 / 信号弱 / 5GHz 网络ESP32 多数型号只支持 2.4GHz换个网络再试BH1750 一直读 0接到 5V、SDA/SCL 接反对照 I2C 文档 检查电平串口乱码、满屏星号波特率不是 115200监视器右下角波特率下拉框深睡后唤醒计数不涨变量没加 RTC_DATA_ATTR打开 TimerWakeUp.ino 对照写法OTA 搜不到设备设备与电脑不在同一 WiFi确认两台设备同网段且都在线往哪里继续走加第二个温湿度节点两台设备用 I2C 不同地址或不同 GPIO 共存数据分字段上报给光照加低于 300 lux 提醒这类本地判断异常值单独标红把上报目标从 Thingspeak 换成自建服务WiFi 示例合集 里有 AP 模式、多网切换等更多形态想抠功耗极限读 ADC 文档 和 WiFi API 文档 里关于电源管理的部分从一块 35 元的开发板到一套能自己跑的环境监测系统全程就是抄对示例 → 改三行 → 验证四档做下来大概率不超过一个下午。用的过程里卡在哪一步、或者有更好的传感器组合欢迎到项目讨论区留言或者直接提一个 issue 把你的踩坑记录分享出去。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考