He construido un medidor trifásico de energía que puede medir corriente, voltaje, potencia, factor de potencia y consumo energético de las 3 fases; los datos se suben a HomeAssistant para observar fácilmente el consumo y la potencia en tiempo real de casa.
Utilizo 3 sensores de parámetros eléctricos pzem004t que se comunican por puerto serie con un ESP32-C3 y, a través de Wi-Fi, envían la información a HomeAssistant (debes montar tu propio servidor; yo usé una Raspberry Pi 4). El firmware del ESP32-C3 se desarrolló con ESPHome.
El módulo sólo puede medir el voltaje entre cada fase y neutro; no mide el voltaje de línea (entre fases).
Rango de voltaje: 80-260 V
Rango de corriente: 100 A
Precisión: 0,5 %
Debes configurar tú mismo, con el software de PC, las direcciones de los 3 PZEM-004T como 0x01, 0x02 y 0x03.
¡Trabaja con alta tensión; instala con la corriente cortada y extremando precauciones!
Tutorial de instalación de HomeAssistant + ESPHome: búscalo en Google.
Grupo de técnicos en electrónía/microcontroladores: 2169025065
Fotos del hardware
Vista previa
Esquemático
PCB
Caja 3D
Descarga de archivos
Proyecto abierto en LCSC: https://oshwhub.com/zeruns/san-xiang-dian-liang-dian-can-shu-shu-ju-cai-ji-san-xiang-dian-ya-dian-liu-gong-lv-gong-lv-yin-shu-yong-dian-liang
123 Pan (sin límite de velocidad): https://url.zeruns.com/PbpP8 Código: jjRr
Baidu Pan: https://pan.baidu.com/s/1XCi1AY6M1G0weNuuVJu01w?pwd=qhrc Código: qhrc
Contiene: modelo 3D de la caja, archivos Gerber para fabricar la PCB, proyecto en LCSC-EDA, manual del módulo PZEM-004T, software de PC para el PZEM-004T y archivo de configuración de ESPHome.
Enlaces de compra de componentes
- Placa de desarrollo Heltec CORE-ESP32C3: https://s.click.taobao.com/GsKSHxt
- Módulo PZEM-004T: https://s.click.taobao.com/cnHOHxt
- Módulo de alimentación HLK-10M05: https://s.click.taobao.com/quMNHxt
- Kit de resistencias y condensadores 0805: https://u.jd.com/fqAElBD
- AHT10: https://s.click.taobao.com/WuhMHxt
Recomiendo comprar en la tienda oficial de LCSC: https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html
Archivo de configuración ESPHome
#include "esphome.h"
#include "esphome/time/real_time_clock.h"
#include "esphome/sntp/sntp_component.h"
#include "esphome/core/time.h"
# Define el nombre del proyecto y el nombre amigable
esphome:
name: powerbox
friendly_name: PowerBox
# Especifica la placa y el framework de desarrollo
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32c3
esp32:
board: esp32-c3-devkitm-1
framework:
#type: esp-idf
type: arduino
# Habilita el registro de logs
logger:
#hardware_uart: USB_SERIAL_JTAG
#level: DEBUG # por defecto DEBUG, NONE ERROR WARN INFO DEBUG VERBOSE VERY_VERBOSE
# Habilita la API de Home Assistant y establece una clave de cifrado
api:
encryption:
key: "wZG666DZ5zsg6666Po6204w666kA+8u666soeGlKtBU=" # Reemplaza por tu clave
# Habilita actualizaciones OTA y establece una contraseña
ota:
password: "c368c9c66658f3433f6226667d4d2232" # Reemplaza por tu clave
network:
enable_ipv6: true
wifi:
ssid: "blog.zeruns.com" # Nombre de la red WiFi
password: "123456789" # Contraseña WiFi
reboot_timeout: 60s # Si falla la conexión, reinicia tras 60 s
# Habilita un punto de acceso como respaldo
ap:
ssid: "Powerbox Fallback Hotspot"
password: "ZMpKTpHJ67EF"
# Configuración manual de IP por si no hay DHCP
manual_ip: # IP estática
static_ip: 192.168.0.201
gateway: 192.168.0.1
subnet: 255.255.255.0
dns1: 192.168.0.1
captive_portal:
# Activa el servidor web para control vía HTTP
web_server:
port: 80
# Habilita el bus I2C
i2c:
- id: bus_a
sda: 4
scl: 5
scan: true
# Habilita el puerto UART
uart:
rx_pin: 1
tx_pin: 0
baud_rate: 9600
# Habilita el protocolo Modbus
modbus:
# Configura sensores: temperatura, humedad, corriente, etc.
sensor:
# Sensor AHT10
- platform: aht10
variant: AHT20
i2c_id: bus_a
temperature:
name: "PowerBox-Temperature" # Nombre del sensor de temperatura
id: AHT20_T
humidity:
name: "PowerBox-Humidity" # Nombre del sensor de humedad
id: AHT20_H
update_interval: 30s # Actualiza cada 30 s
- platform: pzemac
id: pzemac_A
address: 0x01
current:
name: "A-Current" # Nombre del sensor de corriente
voltage:
name: "A-Voltage" # Nombre del sensor de voltaje
energy:
name: "A-Energy" # Nombre del sensor de energía
power:
name: "A-Power" # Nombre del sensor de potencia
id: A_POWER
frequency:
name: "A-Frequency" # Nombre del sensor de frecuencia
power_factor:
name: "A-PowerFactor" # Nombre del sensor de factor de potencia
update_interval: 9s # Actualiza cada 9 s
- platform: pzemac
id: pzemac_B
address: 0x02
current:
name: "B-Current" # Nombre del sensor de corriente
voltage:
name: "B-Voltage" # Nombre del sensor de voltaje
energy:
name: "B-Energy" # Nombre del sensor de energía
power:
name: "B-Power" # Nombre del sensor de potencia
id: B_POWER
frequency:
name: "B-Frequency" # Nombre del sensor de frecuencia
power_factor:
name: "B-PowerFactor" # Nombre del sensor de factor de potencia
update_interval: 10s # Actualiza cada 10 s
```- platform: pzemac
id: pzemac_C
address: 0x03
current:
name: "C-Current" # Nombre del sensor de corriente
voltage:
name: "C-Voltage" # Nombre del sensor de voltaje
energy:
name: "C-Energy" # Nombre del sensor de energía
power:
name: "C-Power" # Nombre del sensor de potencia
id: C_POWER
frequency:
name: "C-Frequency" # Nombre del sensor de frecuencia
power_factor:
name: "C-PowerFactor" # Nombre del sensor de factor de potencia
update_interval: 11s # Intervalo de actualización de 11 segundos
- platform: wifi_signal # Informa la intensidad de señal WiFi/RSSI en dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Informa la intensidad de señal WiFi en %
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 # Restablecer el contador de energía del sensor A a las 0:00:00 del primer día de cada mes
- pzemac.reset_energy: pzemac_B # Restablecer el contador de energía del sensor B a las 0:00:00 del primer día de cada mes
- pzemac.reset_energy: pzemac_C # Restablecer el contador de energía del sensor C a las 0:00:00 del primer día de cada mes
on_time_sync:
then:
- logger.log: "Reloj del sistema sincronizado"
Otros proyectos de código abierto recomendados
- Placa mínima STM32F030C8T6 y luces secuenciales (esquemático y PCB): https://blog.zeruns.com/archives/715.html
- Diseñé una placa mínima MSP430F149 y la compartí como código abierto: https://blog.zeruns.com/archives/713.html
- Problema de fuente de alimentación del concurso de 2007: módulo elevador DCDC ajustable de 30 a 36V (UC3843): https://oshwhub.com/zeruns/36v-sheng-ya-dcdc-mo-kuai-uc3842
- Placa mínima STC12C5A60S2/control de temperatura y ventilador con sensor de temperatura de microcontrolador 51: https://blog.zeruns.com/archives/721.html
- Plantilla de proyecto STM32F407 con biblioteca gráfica U8g2 portada: https://blog.zeruns.com/archives/722.html
- Placa mínima Qinheng CH32V307VCT6 de código abierto: https://blog.zeruns.com/archives/726.html
- Módulo de fuente de alimentación DCDC ajustable de elevación y reducción automática LM25118: https://blog.zeruns.com/archives/727.html
- Módulo elevador de rectificación síncrona de alta potencia EG1164 de código abierto, eficiencia máxima del 97%: https://blog.zeruns.com/archives/730.html
- Nodo de monitoreo ambiental 4G basado en Air700E de Hezhou (datos de temperatura, humedad, presión, etc.), carga a la plataforma IoT de Alibaba Cloud a través de MQTT: https://blog.zeruns.com/archives/747.html
Artículos recomendados
- Recomendación de VPS/servidores en la nube de alta relación calidad-precio y económicos: https://blog.zeruns.com/archives/383.html
- Tutorial de configuración de servidor de Minecraft: https://blog.zeruns.com/tag/mc/
- Compartiendo mi gabinete de red doméstica, recomendación de equipos de red para el hogar: https://blog.zeruns.com/archives/732.html
- Orange Pi 3B (RK3566) placa de desarrollo - revisión de unboxing: https://blog.zeruns.com/archives/729.html
- Actualicé mi computadora, cambié la tarjeta gráfica a Yeston RTX3070: https://blog.zeruns.com/archives/746.html
- Tutorial de configuración de SD (Stable Diffusion) en servidor GPU de Yuyun, crea tu propio sitio web de dibujo AI: https://blog.zeruns.com/archives/768.html










