亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Modbus + MKR WiFi 1010 + RS485 实现用电监测

组件与物料

Arduino MKR WiFi 1010 ×1
Arduino MKR 485 Shield ×1
USB-A 转 Micro-USB 线 ×1
USB 电源适配器(7-24V,MKR485 自带降压) ×1
单对屏蔽双绞线(电话线规格) ×1

必需工具

应用与在线服务

项目简介

想让家庭更智能,先从月度账单(电、气)入手。“利国、利民、利己”。开源硬件助力家庭可持续!本方案简单安全,通过 MQTT 集成任意家庭自动化软件(以 Home Assistant 为例)。

概览

选用 Finder 能量计(导轨安装,适配家庭配电箱),自带 RS485 Modbus 接口——工业标准协议,Arduino 官方 MKR485 Shield 配合两个库轻松解析。主控选 MKR WiFi 1010,同款 MKR 外形且自带 WiFi。

硬件安装

警告! 遵守当地电气规范,极度小心,高压致命!不懂请找电工。

  1. 断开总开关,万用表双重确认无电压。
  2. 能量计进线端接主开关出线(欧标:蓝=零线,棕/黑/灰=火线),出线端接后续回路。
  3. RS485 接线:A、B、COM。MKR485 支持全双工,额外有 Y、Z 端子。半双工通讯仅用 Y、Z。COM 接 ISOGND。
  4. 拨码开关设置:HALF (2→OFF)、Y-Z 终端电阻 (3→ON);第 1 位无影响。终端电阻抑制干扰。
  5. 合上配电箱,转软件开发。

软件设计

代码需处理三大任务:Modbus 通讯、WiFi 管理、MQTT 协议。使用 ArduinoModbus 库简化 Modbus 交互。读取寄存器需依据仪表数据手册获取功能码、寄存器地址、字长。

Modbus 报文结构示例:01 03 04 00 16 00 02 25 C7

Arduino 中封装在 if 条件中:

float readCurrent(){
  float ampere = 0;
  if(!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)){
    Serial.print("failed to read voltage! "); Serial.println(ModbusRTUClient.lastError());
  }else{
    uint16_t word1 = ModbusRTUClient.read(); // 高字
    uint16_t word2 = ModbusRTUClient.read(); // 低字
    int32_t milliamp = (word1 << 16) | word2; // 合成 32 位有符号整数
    ampere = milliamp / 1000.0; // 转安培
  }
  return ampere;
}

其余电压、功率、电能等同理。剩余代码处理 MQTT 发布和 WiFi 重连。

Home Assistant 集成

配置 MQTT Broker 后,在 configuration.yaml 添加传感器定义:

sensor:
  - platform: mqtt
    name: "Main Voltage"
    state_topic: "energy/main/voltage"
    unit_of_measurement: "V"

保存、检查配置、重载 Home Assistant,主页即显示实时测量值及历史图表,可触发自动化。

教程结束,后续可自行扩展功能!

代码

完整桥接代码(Modbus RTU → MQTT)见 GitHub 仓库,专为 Casa Jasmina 监测电费用量开发。

制造工艺

  1. Arduino与树莓派构建互联网控制视频流机器人完整指南
  2. 用 Arduino 打造绚丽显示器 Ambilight 系统
  3. 打造可靠的 Arduino 能源监测与数据记录仪——分步指南
  4. Arduino UNO 驱动 16x2 LCD 实现动画与小游戏
  5. Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
  6. 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
  7. Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
  8. Arduino Uno WiFi 网页服务器:通过浏览器控制 LED 开关
  9. Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图
  10. Python 3 控制 Arduino UNO - 串口通信点亮内置 LED 入门教程
  11. 通过 Arduino IoT Cloud 用 Alexa 控制电视:分步指南
  12. 透彻理解动能与势能:公式、形式及生活实例