
不到100元搭出农田监测节点基于arduino-esp32的ESP32实战与避坑【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32一块ESP32-C3开发板约18元加三个传感器3小时左右能跑通一个每5分钟上传一次土壤温湿度的监测节点锂电池供电可持续数周。本文基于arduino-esp32核心乐鑫官方的ESP32系列SoC Arduino开发库走一遍安装、接线、WiFi上传和深度睡眠验证读完后你能照着复现整套硬件和代码。第一章 选型速览为什么是ESP32加arduino-esp32三个档位覆盖从阳台菜园到基地展示的多数场景按预算对号入座即可档位/型号适用场景核心优势参考价入门XIAO ESP32S3阳台菜园、隐蔽安装板子仅20×17.5mm功耗低约25元中端ESP32-C3 DevKitM-1小农场田头、成本敏感18元价位GPIO够用引脚资料全约18元展示M5AtomS3基地展示、需本地看数据自带OLED屏和电池仓约45元选这套方案而不是STM32外挂WiFi模块核心是ESP32把2.4GHz WiFiC3是RISC-V单核160MHz直接做进芯片省掉一路串行通信线和约15元的模块钱比起树莓派整机功耗差两个数量级以上电池场景没法比。配合arduino-esp32核心ESP32、C3、C5、C6、S2、S3等芯片都有稳定版支持换板子基本只改variant不改代码。第二章 动手实录四个阶段跑通监测节点阶段一 环境准备装好arduino-esp32开发板支持 打开Arduino IDE进入首选项添加ESP32开发板管理器URL再在开发板管理器里搜esp32装稳定版这是官方推荐的安装方式详见仓库内的安装文档。Arduino IDE开发板管理器确认esp32条目为最新版后再安装装好后在工具菜单选型号如ESP32C3 Dev Module和串口号能列出端口就说明USB驱动没问题。阶段二 硬件接线按电源-信号-地三要素对照下表 以ESP32-C3为例ADC1通道只接在GPIO3和GPIO4上所以模拟量传感器必须落在这两个口数字传感器随便选空闲脚传感器电源线(VCC)信号线地线(GND)信号引脚FC-28土壤湿度3V3AO模拟输出GNDGPIO4DS18B20温度3V3DATA需4.7kΩ上拉到3V3GNDGPIO5DHT11空气温湿度3V3DATAGNDGPIO6ESP32-C3引脚布局接线前先核对3V3、GND和各GPIO的物理位置阶段三 最小闭环串口先验证三路数据先把数据打到串口监视器波特率115200确认三路都读数正常再谈上传。FC-28是电阻式探头ADC读到的是12位原始值0~4095需换算成百分比#define SOIL_PIN 4 // FC-28的AO接GPIO4 void loop() { int raw analogRead(SOIL_PIN); float percent map(raw, 0, 4095, 100, 0); // 干土接近100%读数湿土接近0 Serial.printf(土壤湿度: %.1f%%\n, percent); delay(2000); }DS18B20走OneWire单总线协议一根数据线传数据和供电DHT11用对应库读温湿度代码略。阶段四 云端打通STA模式接入WiFi再推数据 田头一般连现有路由器即STA模式Station设备作为客户端加入网络#include WiFi.h void setup() { Serial.begin(115200); WiFi.begin(your_ssid, your_password); while (WiFi.status() ! WL_CONNECTED) { // 阻塞等待连上再走 delay(500); } Serial.println(WiFi.localIP()); }ESP32作为Station接入路由器数据经家庭/农场网络上传连上后用仓库自带的HTTPClient库把JSON{moisture:42.1,temp:26.3}POST到Thingspeak这类免费数据通道如果现场没有网络可临时切AP模式Access Point设备自建热点用手机直连配网。第三章 调优与避坑五个高频问题按现象-原因-解法排查深度睡眠电流超30μA现象万用表实测20~40μA达不到手册的10μA级原因某路外设没断电或引脚留了上电配置解法对照仓库的定时器唤醒示例用esp_deep_sleep_pd_config逐域断电排查。深度睡眠写法本身现象不知道多久醒一次原因参数单位是微秒容易少写6个零解法RTC变量加RTC_DATA_ATTR前缀才能跨重启保存计数RTC_DATA_ATTR int bootCount 0; // 重启后不丢失 void goSleep() { bootCount; Serial.printf(第 %d 次唤醒\n, bootCount); Serial.flush(); // 先刷完串口再睡否则丢日志 esp_sleep_enable_timer_wakeup(5 * 60 * 1000000ULL); // 每5分钟醒 esp_deep_sleep_start(); }WiFi连上路由器但经常掉线现象跑几小时后WiFi.status()变回WL_DISCONNECTED原因路由器开启AP隔离或信道用了ESP32不支持的14信道解法把路由器信道固定到1~13并检查AP隔离开关。OTA升级卡在上传页现象浏览器进度条走到一半报错原因默认分区表固件分区只有约1.2MB新固件超了解法改用带OTA双分区、固件区2MB以上的分区表升级流程参考OTA文档。浏览器访问esp32.local进入OTA登录页默认账号密码均为admin上线前务必改掉校准参数重启就丢现象每次上电湿度曲线跳变像重新校准原因参数存在RAM里解法用仓库的Preferences库把校准值写进NVS闪存区上电读回。收尾这套方案的边界和下一步清单边界先说清C3单核160MHz跑不了本地AI推理采集周期低于1秒时WiFi重连会吃掉大部分CPU毫米波级定位和图像识别都别指望它想要边计算边上传得换ESP32-P4或外挂摄像头方案。下一步扩展按优先级排GPIO加一路继电器湿度低于阈值自动开电磁阀灌溉云平台配报警通道数据越界推送到手机换太阳能板加TP4056充电板彻底摆脱电池节点扩到3个以上时把HTTP换成MQTT省流量省电量换S3型号并开PSRAM本地存7天历史数据再上报【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考