ESP32环境监控实战:100元、30分钟,零基础搭一套温湿度光照自动上报系统
2026/9/16 20:38:19 网站建设 项目流程

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 分钟起,全程不需要焊接经验。

先回答你脑子里的三个问题:

  1. 要花多少钱?一块 ESP32 开发板 35 元上下,加一个 DHT22 温湿度传感器(15 元)、一个 BH1750 光照传感器(12 元)、电源线材 20 元,凑齐在 100 元以内。
  2. 难不难?会抄代码就行。本文每个阶段都从仓库现成示例出发,你只改三行:WiFi 账号、密码、引脚号。
  3. 离了电脑能跑吗?能。第三档做完,接上电源它就自己干活,电脑只负责"远程看数据"和"远程升级"。

下面按"能联网 → 能读数 → 能省电 → 能升级"四档递进,每档结束你手里都有一个能验证的成果。

准备工作:把开发板交给 arduino-esp32

ESP32 本身不会说 Arduino 的语言,arduino-esp32 就是翻译层:把 Arduino 那套熟悉的setup()loop()翻译成 ESP32 能执行的指令。

  1. 打开 Arduino IDE,进入首选项,把板包安装地址填进"附加开发板管理器网址"。
  2. 打开板卡管理器,搜索 ESP32,安装。
  3. 插板、选板、烧一个点灯程序,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测光照(lux)I2C 两线总线约 12 元

I2C 是什么?你可以理解成"一条公交线":SDA 和 SCL 两根线,同一根线上可以挂多个设备,各自报站(地址)互不干扰。ESP32 的 I2C 默认就在 GPIO21/22,接线如下:

  • DHT22:VCC→3.3V,GND→GND,DATA→GPIO4
  • BH1750:VCC→3.3V,GND→GND,SDA→GPIO21,SCL→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 秒,是为了演示方便。你部署时改成 300(5 分钟),就是"睡 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询