삼상 전력 계측기를 만들어 3상의 전류·전압·전력·역률·전력량을 측정하고, 데이터를 HomeAssistant에 업로드해 집 전력량과 실시간 소비전력을 확인할 수 있습니다.
측정에는 3개의 PZEM004T 전력 센서를 사용하며, 시리얼 포트로 ESP32-C3와 통신한 뒤 Wi-Fi를 통해 HomeAssistant(직접 구축 필요, 저는 라즈베리파이 4로 구축)에 전송합니다. ESP32-C3 펌웨어는 ESPHome로 개발했습니다.
본 모듈은 상-중성선 간 전압만 측정 가능하며, 상-상 간 선간전압은 측정할 수 없습니다.
전압 측정 범위 80-260 V, 전류 100 A, 정확도 ±0.5 %.
3개 PZEM004T의 주소를 PC 유틸리티로 0x01, 0x02, 0x03으로 각각 변경해야 합니다.
강전 작업이 포함되므로 반드시 차단 후 작업하세요!
HomeAssistant+ESPHome 구축 방법은 검색해 주세요.
전자/MCU 기술 모임:2169025065
하드웨어 사진
동작 화면
회로도
PCB
3D 케이스
![]()
자료 다운로드
123클라우드(속도제한 없음):https://url.zeruns.com/PbpP8 압축코드:jjRr
바이두 클라우드:https://pan.baidu.com/s/1XCi1AY6M1G0weNuuVJu01w?pwd=qhrc 압축코드: qhrc
포함 파일: 케이스 3D 모델, 삼상 전력 계측기 Gerber 파일, LCSC EDA 프로젝트, PZEM-004T 매뉴얼, PZEM-004T PC 유틸리티, ESPHome 설정 파일.
사용 부품 구매 링크
- Heltec 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
LCSC 쇼핑몰 추천: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 # 기본값 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\t\t# 연결 실패 시 60초 후 재시작
# AP 핫스팟 모드 활성화 (백업)
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:
# 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 최소 시스템 보드 및 순차 점등(회로도 및 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 MCU 온도 표시 및 온도 제어 팬: 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
- 내 컴퓨터 업그레이드, 그래픽 카드 교체—잉통 RTX3070: https://blog.zeruns.com/archives/746.html
- 우우운 GPU 클라우드 서버로 SD(Stable Diffusion) 구축 튜토리얼, 나만의 AI 그림 웹사이트 만들기: https://blog.zeruns.com/archives/768.html









