工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
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電源アダプタ(MKR485シールドに7-24V降圧コンバータ内蔵) ×1
ツイストペアシールドケーブル(電話線タイプ) ×1

必要な工具

使用するアプリとオンラインサービス

プロジェクト概要

スマートホーム化の第一歩は、月々の光熱費(電気、ガス等)の把握から。「地球にも財布にも、そしてボトムラインにも良い」オープンソースハードウェアで持続可能な家庭環境を目指します。任意のホームオートメーションソフトと連携しやすいよう、MQTTでデータを公開する設計です(ここではHome Assistant連携を例示)。

概要

電力量計測には、DINレール取付型のFinderエナジーメーターを採用。家庭のメイン分電盤にぴったり収まり、RS485 Modbus インターフェースを備えます。Modbusは産業標準プロトコルで、Arduino公式のMKR485シールドと2つのライブラリで簡単に通信可能。メインボードにはMKRフォームファクタ共通でWiFi搭載のArduino MKR WiFi 1010を選定。

セットアップ(電気工事資格が必要です)

警告! 国の電気工事規定を確認し、感電死のリスクを理解した上で作業してください。不安な場合は電気技師に依頼してください。

  1. 分電盤の上流ブレーカーをOFFにし、テスターで端子間電圧がゼロであることを確認。
  2. エナジーメーターをキャビネット内に設置。上流ブレーカーからの電線(EUカラー:青=中性線、茶/黒/灰=電源線)をメーター入力側に接続。出力側を家庭側負荷へ接続。
  3. Modbus、MKR WiFi 1010、RS485でエネルギー消費を監視
  4. RS485通信線(ツイストペアシールドケーブル、最大1.2km伝送可能)をキャビネット外へ引き出し、Arduinoをアクセスしやすい場所に配置。
  5. Modbus、MKR WiFi 1010、RS485でエネルギー消費を監視
  6. RS485端子はA、B、COM。MKR485シールドは全二重対応でY、Z端子もありますが、半二重通信ではY/Zを使用。COMはISOGNDへ接続。シールド上のスイッチ設定:HALF(2をOFF)、終端抵抗Y-Z(3をON)。1つ目は不要。
  7. Modbus、MKR WiFi 1010、RS485でエネルギー消費を監視

これでハードウェアは完了。キャビネットを閉じてソフトウェア側へ進みます。

ソフトウェア

Arduino IDEまたはArduino Create Editorで開発。以下の3要素を統合:

ArduinoModbusライブラリを使用し、メーターのデータシートに従ってレジスタ読み出し(ファンクションコード、アドレス、ワード数)を行います。Modbusメッセージ構造とArduinoでの処理例:

// Alberto Perro - Officine Innesto
// Modbus保持レジスタから整数値を読み取り(電流値 mA → A)
float readCurrent() {
  float ampere = 0.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(); // MSW
    uint16_t word2 = ModbusRTUClient.read(); // LSW
    int32_t milliamp = (word1 << 16) | word2; // 32bit結合
    ampere = milliamp / 1000.0; // Aに変換
  }
  return ampere;
}

同様の手順で電圧、電力、積算電力量等を取得。残りのコードはMQTTパブリッシュとWiFi再接続処理です。

Home Assistant連携

MQTTブローカーが設定済みなら、configuration.yaml にセンサ定義を追加するだけ:

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

保存→設定チェック→再起動で、メイン画面にグラフ表示され、自動化トリガーとしても利用可能。

Modbus、MKR WiFi 1010、RS485でエネルギー消費を監視

あとは用途に合わせて機能拡張・カスタマイズしてください!

コード

Modbus RTU - MQTT ブリッジ(Finderメーター用)

Casa Jasminaでの電気代・使用量監視のために開発。完全なスケッチはGitHub等で公開予定。

製造プロセス

  1. Arduino & Raspberry Pi でインターネット制御ビデオストリーミングロボットを構築
  2. Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
  3. Arduinoで作る高精度エナジーモニター&データロガー – Dr. Wattsonボード活用
  4. Arduino UNOで作るLCDアニメーション&ゲーム入門
  5. Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
  6. ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
  7. Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
  8. Arduino UNO WiFi Webサーバー:ブラウザからLEDをON/OFF制御
  9. Arduino UNO + WiFiシールドで温度をWebリアルタイム表示 — シリアル出力だけでグラフ化
  10. Python 3からArduino UNOを制御 – シリアル通信でLED点滅デモ
  11. 運動エネルギーと位置エネルギーの理解:形態、公式、日常の例