三相電力計測器を作り、3相の電流・電圧・電力・力率・使用電力量を測定し、データをHomeAssistantにアップロードして、家庭の電力使用量とリアルタイム消費電力を簡単に確認できるようにしました。
測定には3個のpzem004t電力センサーを使用し、シリアル通信でESP32-C3と接続、Wi-Fi経由でHomeAssistantへ送信します(HomeAssistantは各自で構築、私はRaspberry Pi 4で構築)。ESP32-C3のファームウェアはESPHomeで開発しました。
本モジュールは各相とニュートラル間の電圧のみ測定でき、線間電圧(相間電圧)は測定できません。
電圧測定範囲:80-260V、電流レンジ:100A、測定精度:0.5%
3個のPZEM-004Tアドレスを上位機ソフトでそれぞれ0x01・0x02・0x03に設定する必要があります。
高圧回路を扱うため、取り付け時は必ず電源をOFFにして作業してください!
HomeAssistant+ESPHomeの構築・使用方法は各自で検索してください。
電子・マイコン技術交流QQグループ:2169025065
ハードウェア写真
動作画面
回路図
PCB
3Dケース
資料ダウンロード
123クラウドディスク(速度制限なし):https://url.zeruns.com/PbpP8 抽出コード:jjRr
Baidu NetDisk:https://pan.baidu.com/s/1XCi1AY6M1G0weNuuVJu01w?pwd=qhrc 抽出コード: qhrc
同梱ファイル:ケース3Dモデル、三相電力計測器_Gerber基板ファイル、立創EDAプロジェクト、PZEM-004Tモジュールマニュアル、PZEM-004Tモジュール設定ソフト、ESPHome設定ファイル。
使用部品購入先
- 合宙CORE-ESP32C3開発板:https://s.click.taobao.com/GsKSHxt
- PZEM-004Tモジュール:https://s.click.taobao.com/cnHOHxt
- HLK-10M05電源モジュール:https://s.click.taobao.com/quMNHxt
- 0805抵抗・コンデンサキット:https://u.jd.com/fqAElBD
- AHT10:https://s.click.taobao.com/WuhMHxt
立創商城での購入を推奨:https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html
ESPHome設定ファイル
#include "esphome.h"
#include "esphome/time/real_time_clock.h"
#include "esphome/sntp/sntp_component.h"
#include "esphome/core/time.h"
# プロジェクト名とフレンドリ名を定義
esphome:
name: powerbox
friendly_name: PowerBox
# 使用するボードとフレームワークを指定
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32c3
esp32:
board: esp32-c3-devkitm-1
framework:
#type: esp-idf
type: arduino
# ロギングを有効化
logger:
#hardware_uart: USB_SERIAL_JTAG
#level: DEBUG # defaults to DEBUG, NONE ERROR WARN INFO DEBUG VERBOSE VERY_VERBOSE
# Home Assistant APIを有効化し、暗号化キーを設定
api:
encryption:
key: "wZG666DZ5zsg6666Po6204w666kA+8u666soeGlKtBU=" # 各自のキーに置き換えてください
# OTAアップデートを有効化し、パスワードを設定
ota:
password: "c368c9c66658f3433f6226667d4d2232" # 各自のキーに置き換えてください
network:
enable_ipv6: true
wifi:
ssid: "blog.zeruns.com" # WiFiネットワーク名
password: "123456789" # WiFiパスワード
reboot_timeout: 60s # 接続失敗時の再起動タイムアウトを60秒に設定
# APホットスポットモードをWiFi接続のバックアップとして有効化
ap:
ssid: "Powerbox Fallback Hotspot"
password: "ZMpKTpHJ67EF"
# DHCPサーバーがない場合のためIPアドレスを手動設定
manual_ip: #固定IPを設定
static_ip: 192.168.0.201
gateway: 192.168.0.1
subnet: 255.255.255.0
dns1: 192.168.0.1
captive_portal:
# Webサーバーを有効化し、HTTP経由でデバイスを制御可能に
web_server:
port: 80
# I2C通信インターフェースを有効化
i2c:
- id: bus_a
sda: 4
scl: 5
scan: true
# UART通信インターフェースを有効化
uart:
rx_pin: 1
tx_pin: 0
baud_rate: 9600
# Modbusプロトコルサポートを有効化
modbus:
# 温度・湿度・電流センサーなどを含むセンサー設定
sensor:
# AHT10センサー設定
- platform: aht10
variant: AHT20
i2c_id: bus_a
temperature:
name: "PowerBox-Temperature" # 温度センサー名
id: AHT20_T
humidity:
name: "PowerBox-Humidity" # 湿度センサー名
id: AHT20_H
update_interval: 30s # 更新間隔30秒
- platform: pzemac
id: pzemac_A
address: 0x01
current:
name: "A-Current" # 電流センサー名
voltage:
name: "A-Voltage" # 電圧センサー名
energy:
name: "A-Energy" # エネルギーセンサー名
power:
name: "A-Power" # 電力センサー名
id: A_POWER
frequency:
name: "A-Frequency" # 周波数センサー名
power_factor:
name: "A-PowerFactor" # 力率センサー名
update_interval: 9s # 更新間隔9秒
- platform: pzemac
id: pzemac_B
address: 0x02
current:
name: "B-Current" # 電流センサー名
voltage:
name: "B-Voltage" # 電圧センサー名
energy:
name: "B-Energy" # エネルギーセンサー名
power:
name: "B-Power" # 電力センサー名
id: B_POWER
frequency:
name: "B-Frequency" # 周波数センサー名
power_factor:
name: "B-PowerFactor" # 力率センサー名
update_interval: 10s # 更新間隔10秒
```- platform: pzemac
id: pzemac_C
address: 0x03
current:
name: "C-Current" # 電流センサー名
voltage:
name: "C-Voltage" # 電圧センサー名
energy:
name: "C-Energy" # エネルギーセンサー名
power:
name: "C-Power" # 電力センサー名
id: C_POWER
frequency:
name: "C-Frequency" # 周波数センサー名
power_factor:
name: "C-PowerFactor" # 力率センサー名
update_interval: 11s # 更新間隔11秒
- platform: wifi_signal # WiFi信号強度/RSSIをdBで報告
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # WiFi信号強度を%で報告
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
device_class: ""
status_led:
pin: GPIO8
time:
- platform: sntp
id: current_time
timezone: Asia/Shanghai
servers:
- ntp.aliyun.com
- ntp.tencent.com
- stdtime.gov.hk
on_time:
- seconds: 0
minutes: 0
hours: 0
days_of_month: 1
then:
- pzemac.reset_energy: pzemac_A # 毎月1日0時0分0秒にAセンサーのエネルギーカウントをリセット
- pzemac.reset_energy: pzemac_B # 毎月1日0時0分0秒にBセンサーのエネルギーカウントをリセット
- pzemac.reset_energy: pzemac_C # 毎月1日0時0分0秒にCセンサーのエネルギーカウントをリセット
on_time_sync:
then:
- logger.log: "Synchronized system clock"
その他のオープンソースプロジェクトおすすめ
- STM32F030C8T6最小システムボードとローリングLED(回路図とPCB):https://blog.zeruns.com/archives/715.html
- MSP430F149最小システムボードを描いて公開しました:https://blog.zeruns.com/archives/713.html
- 2007年電子工作コンテスト電源問題:30〜36V可変昇圧DCDCモジュール(UC3843):https://oshwhub.com/zeruns/36v-sheng-ya-dcdc-mo-kuai-uc3842
- STC12C5A60S2最小システムボード/51マイコン温度表示・温度制御ファン:https://blog.zeruns.com/archives/721.html
- U8g2グラフィックライブラリを移植済みSTM32F407標準ライブラリプロジェクトテンプレート:https://blog.zeruns.com/archives/722.html
- 沁恒CH32V307VCT6最小システムボードオープンソース:https://blog.zeruns.com/archives/726.html
- LM25118自動昇降圧可変DCDC電源モジュール:https://blog.zeruns.com/archives/727.html
- EG1164高出力同期整流昇圧モジュールオープンソース、最高効率97%:https://blog.zeruns.com/archives/730.html
- 合宙Air700Eベース4G環境モニタリングノード(温湿度・気圧等データ)、MQTTでアリババクラウドIoTプラットフォームへアップロード:https://blog.zeruns.com/archives/747.html
おすすめ記事
- コストパフォーマンスに優れた安価なVPS/クラウドサーバーおすすめ: https://blog.zeruns.com/archives/383.html
- マインクラフトサーバー構築チュートリアル:https://blog.zeruns.com/tag/mc/
- 自宅ネットワークラックを紹介、家庭用ネットワーク機器おすすめ:https://blog.zeruns.com/archives/732.html
- 香橙派 Orange Pi 3B(RK3566)開発ボード 開封レビュー:https://blog.zeruns.com/archives/729.html
- 自宅PCをアップグレード、グラフィックカードを交換、盈通RTX3070:https://blog.zeruns.com/archives/746.html
- 雨雲GPUクラウドサーバーでSD(Stable Diffusion)を構築するチュートリアル、自分だけのAIイラストサイトを作ろう:https://blog.zeruns.com/archives/768.html










