关键词: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,深睡低功耗,定时唤醒拉取/订阅数据,渲染后再次休眠
  • 可靠性:离线缓存、断网策略、去抖与刷新限流,避免“刷屏伤屏/耗电暴涨”

二、技术选型与关键指标

模块选型建议选择理由
MCUESP32‑S3WiFi + 足够 RAM/PSRAM 选项,渲染图形更从容
显示E‑Ink(2.9/4.2/7.5/13.3 寸均可)断电不丢图,太阳下可读,刷新频率低
通信MQTTIoT 标准打法: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 个点

  1. 开发板不等于低功耗板:很多板子自带 USB‑UART、稳压、LED,深睡也会吃掉 mA 级电流
  2. E‑Ink 驱动板的休眠控制:有些墨水屏驱动板待机电流不低,需要单独断电/休眠
  3. 电源转换效率:大部分时间系统在深睡,DCDC/LDO 的静态电流(Iq)很关键
  4. 电池电量估算要用“平均电流”:一次刷新很耗电,但次数少;关键是刷新频率与联网时间

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:绘制 UI
  • SLEEP:进入 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 反而要更克制。


八、调试与踩坑

  1. 深睡电流测不下来:先断开开发板的 USB‑UART/电源 LED
  2. WiFi 连接时间波动:做超时退出,别无限重连
  3. 墨水屏残影:降低全刷频率,必要时隔几次全刷一次
  4. 峰值电流导致复位:电池内阻大/升压不够,增加电容与电源余量

九、总结与扩展

这类“农业信息牌/看板”项目的关键不在“画得多好看”,而在:

  • 刷新策略(限流、离线策略、retained 拉取)
  • 低功耗电源设计(把不该耗电的都关掉)
  • 工程可靠性(超时机制、缓存、异常降级)

扩展方向:

  • 接入 Home Assistant(ESPHome / MQTT Discovery)
  • 太阳能供电 + 电量估算
  • 多站点轮播(不同地块/不同棚)

更多推荐