【项目实战】ESP32‑S3 + E‑Ink 超低功耗智慧农业看板:14µA 深睡、MQTT 订阅刷新、离线缓存、供电与寿命估算
·
关键词:ESP32‑S3 / E‑Ink / 低功耗 / Deep Sleep / MQTT / Home Assistant / ESPHome / 智慧农业 / 看板 / 离线缓存
一、项目概述
1.1 为什么农业场景需要“超低功耗看板”
在温室大棚、育苗基地、仓储冷库、田间泵站这些地方,信息显示往往是被忽略但非常刚需的一环:
- 现场需要随时看到:温湿度、土壤墒情、CO₂、阈值告警、灌溉状态
- WiFi/电源不一定稳定,布线成本高
- LCD 常亮耗电大,太阳下可读性一般
因此我们做一个“农业看板”时,理想目标是:
- 白天阳光下也清晰(E‑Ink 的优势)
- 几周到几个月免维护(电池/太阳能供电)
- 只在需要时刷新(比如每 10~30 分钟刷新一次,或告警立即刷新)
本文给出一套端到端可落地方案:
- 采集侧:MQTT 推送环境数据(可以来自 STM32/ESP32/网关/云端)
- 显示侧:ESP32‑S3 + E‑Ink,深睡低功耗,定时唤醒拉取/订阅数据,渲染后再次休眠
- 可靠性:离线缓存、断网策略、去抖与刷新限流,避免“刷屏伤屏/耗电暴涨”
二、技术选型与关键指标
| 模块 | 选型建议 | 选择理由 |
|---|---|---|
| MCU | ESP32‑S3 | WiFi + 足够 RAM/PSRAM 选项,渲染图形更从容 |
| 显示 | E‑Ink(2.9/4.2/7.5/13.3 寸均可) | 断电不丢图,太阳下可读,刷新频率低 |
| 通信 | MQTT | IoT 标准打法:Topic 规划、QoS、鉴权 |
| 软件栈 | Arduino/ESP‑IDF /(可选)ESPHome | 交付快;ESPHome 适合快速接 HA |
| 供电 | 18650/锂聚合物 + 低压差/高效 DCDC | 重点在“休眠电流”和“唤醒峰值电流” |
目标功耗参考:
- 深睡:10~30µA 级(设计好才可能做到)
- 唤醒联网:80~200mA 峰值(WiFi 发射瞬间更高)
- E‑Ink 刷新:瞬时几十~上百 mA(与尺寸/驱动板有关)
注意:你在参数表里看到的“14µA 深睡”,是整板设计+外围电路控制得当的结果,不是随便一块开发板就能达到。
三、系统架构

3.1 架构说明
- 数据源:温室/农田传感器节点(STM32/ESP32)或网关
- Broker:EMQX/自建 Mosquitto/云平台
- 看板:ESP32‑S3 定时唤醒 → 拉取数据 → 渲染 E‑Ink → 进入深睡

3.2 Topic 设计(建议)
- 数据上报:
agri/site/{siteId}/telemetry - 看板状态:
agri/site/{siteId}/board/{boardId}/state - 下发刷新命令(可选):
agri/site/{siteId}/board/{boardId}/cmd
示例 payload:
{
"ts": 1700000000,
"t": 26.4,
"rh": 58.2,
"soil": 41.5,
"co2": 680,
"pump": 0,
"alarm": 0
}
四、硬件设计:低功耗不是“换电池”,是“关掉不该耗电的东西”
4.1 你必须盯住的 4 个点
- 开发板不等于低功耗板:很多板子自带 USB‑UART、稳压、LED,深睡也会吃掉 mA 级电流
- E‑Ink 驱动板的休眠控制:有些墨水屏驱动板待机电流不低,需要单独断电/休眠
- 电源转换效率:大部分时间系统在深睡,DCDC/LDO 的静态电流(Iq)很关键
- 电池电量估算要用“平均电流”:一次刷新很耗电,但次数少;关键是刷新频率与联网时间
4.2 供电与续航粗算
假设:
- 每 15 分钟刷新一次(96 次/天)
- 每次唤醒联网 + 拉取数据 3 秒,平均 120mA
- 每次 E‑Ink 刷新 2 秒,平均 40mA
- 深睡电流 20µA
日耗电量近似:
- 联网耗电:120mA × 3s × 96 ≈ 9.6Ah·s ≈ 2.67mAh/天
- 刷新耗电:40mA × 2s × 96 ≈ 2.13mAh/天
- 深睡耗电:0.02mA × 86400s ≈ 1.73mAh/天
合计 ≈ 6.5mAh/天。
那么 3000mAh 电池理论续航 ≈ 3000/6.5 ≈ 461 天。
现实会更短(自放电、温度、峰值电流效率、WiFi 重连拉长、屏幕驱动差异),但“数月级”完全可达。
五、软件实现:刷新策略比 UI 更重要
5.1 刷新策略(避免刷屏、避免耗电暴涨)
- 定时刷新:例如 10/15/30 分钟
- 告警即时刷新:例如温度超阈值/泵异常
- 去抖/限流:5 分钟内最多刷新 1 次(防止告警抖动导致反复刷新)
- 离线策略:断网时显示“最后一次数据 + 离线标识 + 时间戳”,不要卡在重连死循环
5.2 两种实现路线
路线 A:订阅 MQTT(在线刷新)
- 优点:消息到就刷新,实时性好
- 缺点:要保持在线(不适合极低功耗)
路线 B:深睡 + 唤醒拉取(推荐低功耗)
- ESP32 唤醒后短时间连接 WiFi
- 通过 MQTT 订阅“保留消息 retained”或用 HTTP 拉取最新值
- 渲染后立即 deep sleep
关键技巧:MQTT retained
- 数据源发布时设置 retained
- 看板唤醒后订阅一次就能拿到最新值,不用等待下一次发布
六、代码骨架(ESP‑IDF/Arduino 都能套)
下方是“低功耗唤醒 → 拉取 → 渲染 → 休眠”的逻辑骨架,你可以按自己库替换显示驱动。
6.1 状态机设计
BOOT:上电/唤醒NET_UP:WiFi 连接(设置超时)FETCH:获取最新数据(MQTT retained / HTTP)RENDER:绘制 UISLEEP:进入 deep sleep,设置下一次唤醒
6.2 Arduino 代码示例
void setup(){
init_power();
init_display();
if(!wifi_connect_with_timeout(6000)){
render_offline(last_cache);
deep_sleep_minutes(15);
}
Telemetry t;
if(mqtt_fetch_retained("agri/site/001/telemetry", &t, 3000)){
cache_save(t);
render(t);
}else{
render_offline(last_cache);
}
deep_sleep_minutes(15);
}
void loop(){}
七、UI 设计建议(E‑Ink 友好)
- 字体:大数字 + 少量文字,避免小字号
- 布局:3~4 个关键指标 + 告警条
- 色彩:黑白(或三色)对比强
- 加时间戳:
Last update: 2026-02-27 16:50
E‑Ink 的“刷新慢/残影”是天性,UI 反而要更克制。
八、调试与踩坑
- 深睡电流测不下来:先断开开发板的 USB‑UART/电源 LED
- WiFi 连接时间波动:做超时退出,别无限重连
- 墨水屏残影:降低全刷频率,必要时隔几次全刷一次
- 峰值电流导致复位:电池内阻大/升压不够,增加电容与电源余量
九、总结与扩展
这类“农业信息牌/看板”项目的关键不在“画得多好看”,而在:
- 刷新策略(限流、离线策略、retained 拉取)
- 低功耗电源设计(把不该耗电的都关掉)
- 工程可靠性(超时机制、缓存、异常降级)
扩展方向:
- 接入 Home Assistant(ESPHome / MQTT Discovery)
- 太阳能供电 + 电量估算
- 多站点轮播(不同地块/不同棚)
更多推荐
所有评论(0)