跳转到内容

Arduino MQTT 直流能耗监测提示词范例

接手一套 Arduino Nano ESP32 直流能耗监测器。设备测量 12V 台架负载的
母线电压、电流、功率和累计电量,通过 Wi-Fi/MQTT 每秒发布一次遥测,
网络中断时继续本地积分,恢复后不重复计算也不伪造缺失采样。
1. 项目基线
控制板:Arduino Nano ESP32
传感器:INA219 高侧电流检测模块,I2C
被测对象:隔离的 12V 直流电子负载,最大电流不超过模块量程
采样:10Hz 原始采样,每秒发布均值、最小值、最大值和累计 Wh
网络:2.4GHz Wi-Fi,使用 ArduinoMqttClient 或项目固定版本
主题:lab/power/node-01/telemetry、status 和 command
Wi-Fi 与 MQTT 凭据从本地忽略配置或设备安全存储加载,不能写入仓库。
INA219 分流电阻和校准参数以模块实物与校准记录为准。
2. 数据链路
启动时读取持久化的累计电量和记录版本,校验失败则进入未校准状态,
不能静默清零后继续上报。以单调时钟计算相邻采样时间,使用实际 dt
积分 Wh,不能假设 loop 始终固定 100ms。
滤除 I2C 失败和明显越界值,但保留错误计数。连续三次失败后 telemetry
标记 INVALID,停止累计能量;有效采样恢复后重新建立积分起点,避免把
故障间隔算入电量。
MQTT 连接设置唯一 client ID、Last Will 和受控重连退避。遥测使用项目
允许的 QoS,每条消息带设备时间、序号和质量位。断网期间仅保存每分钟
聚合摘要,恢复后按序补发摘要;实时主题只发布当前状态。
3. 工程边界
- 不得测量市电或超过 INA219 模块额定值的电路;
- 不得把开发板 USB 地直接接入未知浮地或高压系统;
- 不得根据标称分流电阻宣称精度,必须与校准仪表比对;
- 不得在 MQTT 消息、日志或代码中泄露网络凭据;
- 不得因网络断开暂停采样,也不得无上限缓存每个原始点;
- 不得把 I2C 错误值参与功率和能量积分。
4. 验收
使用校准万用表和可调电子负载测试 0.1A、0.5A、1A、2A 四个工作点,
记录电压、电流和功率误差。连续运行 24 小时,并执行 Wi-Fi 断开 30 分钟、
MQTT Broker 重启、传感器断开和设备掉电恢复测试。
电流误差目标不超过校准后 ±2%,累计 Wh 不得因重启倒退或重复增加。
最终交付校准系数、积分算法、MQTT 协议、断网策略、24 小时统计和
电气安全边界。