Làm một bộ thu thập năng lượng điện ba pha, có thể đo dòng điện, điện áp, công suất, hệ số công suất và điện năng tiêu thụ của 3 pha; dữ liệu được tải lên HomeAssistant để tiện theo dõi điện năng tiêu thụ và công suất thời gian thực trong nhà.
Sử dụng 3 cảm biến thông số điện PZEM004T để đo, giao tiếp qua cổng UART với ESP32-C3, sau đó truyền qua Wi-Fi lên HomeAssistant (tự xây dựng, mình dùng Raspberry Pi 4), firmware ESP32-C3 được phát triển bằng ESPHome.
Module này chỉ đo được điện áp giữa mỗi pha và dây trung tính, không đo được điện áp dây (giữa các pha).
Dải đo điện áp 80–260 V, dải đo dòng 100 A, độ chính xác 0,5 %.
Bạn cần dùng phần mềm trên PC để đặt địa chỉ cho 3 PZEM004T lần lượt là 0x01, 0x02, 0x03.
Làm việc với điện áp cao, lắp đặt phải cẩn thận, nhất định phải ngắt điện khi thao tác!
Hướng dẫn cài đặt và sử dụng HomeAssistant + ESPHome tự Google nhé.
Nhóm thảo luận điện tử/vi điều khiển: 2169025065
Ảnh phần cứng
Ảnh hiệu ứng
Sơ đồ nguyên lý
PCB
Vỏ 3D
Tải tài liệu
Link mở nguồn 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 Cloud (không giới hạn tốc độ): https://url.zeruns.com/PbpP8 Mã giải nén: jjRr
Baidu Netdisk: https://pan.baidu.com/s/1XCi1AY6M1G0weNuuVJu01w?pwd=qhrc Mã giải nén: qhrc
Các file bao gồm: mô hình 3D vỏ, file Gerber làm mạch “Thu thập năng lượng ba pha”, dự án EasyEDA, datasheet module PZEM-004T, phần mềm PC cho PZEM-004T, file cấu hình ESPHome.
Link mua linh kiện
- Board phát triển Heltec CORE-ESP32C3: https://s.click.taobao.com/GsKSHxt
- Module PZEM-004T: https://s.click.taobao.com/cnHOHxt
- Module nguồn HLK-10M05: https://s.click.taobao.com/quMNHxt
- Kit điện trở, tụ 0805: https://u.jd.com/fqAElBD
- AHT10: https://s.click.taobao.com/WuhMHxt
Khuyên mua trên LCSC: https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html
File cấu hình ESPHome
#include "esphome.h"
#include "esphome/time/real_time_clock.h"
#include "esphome/sntp/sntp_component.h"
#include "esphome/core/time.h"
# Đặt tên dự án và tên thân thiện
esphome:
name: powerbox
friendly_name: PowerBox
# Chỉ định board và framework
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32c3
esp32:
board: esp32-c3-devkitm-1
framework:
#type: esp-idf
type: arduino
# Bật log
logger:
#hardware_uart: USB_SERIAL_JTAG
#level: DEBUG # defaults to DEBUG, NONE ERROR WARN INFO DEBUG VERBOSE VERY_VERBOSE
# Bật Home Assistant API và đặt khóa mã hóa
api:
encryption:
key: "wZG666DZ5zsg6666Po6204w666kA+8u666soeGlKtBU=" # Thay bằng khóa của bạn
# Bật OTA và đặt mật khẩu
ota:
password: "c368c9c66658f3433f6226667d4d2232" # Thay bằng mật khẩu của bạn
network:
enable_ipv6: true
wifi:
ssid: "blog.zeruns.com" # Tên WiFi
password: "123456789" # Mật khẩu WiFi
reboot_timeout: 60s # Khởi động lại sau 60 s nếu không kết nối được
# Bật AP dự phòng
ap:
ssid: "Powerbox Fallback Hotspot"
password: "ZMpKTpHJ67EF"
# Đặt IP tĩnh nếu không có DHCP
manual_ip:
static_ip: 192.168.0.201
gateway: 192.168.0.1
subnet: 255.255.255.0
dns1: 192.168.0.1
captive_portal:
# Bật Web server
web_server:
port: 80
# Bật giao tiếp I2C
i2c:
- id: bus_a
sda: 4
scl: 5
scan: true
# Bật giao tiếp UART
uart:
rx_pin: 1
tx_pin: 0
baud_rate: 9600
# Bật Modbus
modbus:
# Cấu hình các cảm biến
sensor:
# Cảm biến AHT10
- platform: aht10
variant: AHT20
i2c_id: bus_a
temperature:
name: "PowerBox-Temperature" # Tên cảm biến nhiệt độ
id: AHT20_T
humidity:
name: "PowerBox-Humidity" # Tên cảm biến độ ẩm
id: AHT20_H
update_interval: 30s # Cập nhật mỗi 30 s
- platform: pzemac
id: pzemac_A
address: 0x01
current:
name: "A-Current" # Tên cảm biến dòng
voltage:
name: "A-Voltage" # Tên cảm biến áp
energy:
name: "A-Energy" # Tên cảm biến năng lượng
power:
name: "A-Power" # Tên cảm biến công suất
id: A_POWER
frequency:
name: "A-Frequency" # Tên cảm biến tần số
power_factor:
name: "A-PowerFactor" # Tên cảm biến hệ số công suất
update_interval: 9s # Cập nhật mỗi 9 s
- platform: pzemac
id: pzemac_B
address: 0x02
current:
name: "B-Current" # Tên cảm biến dòng
voltage:
name: "B-Voltage" # Tên cảm biến áp
energy:
name: "B-Energy" # Tên cảm biến năng lượng
power:
name: "B-Power" # Tên cảm biến công suất
id: B_POWER
frequency:
name: "B-Frequency" # Tên cảm biến tần số
power_factor:
name: "B-PowerFactor" # Tên cảm biến hệ số công suất
update_interval: 10s # Cập nhật mỗi 10 s
```- platform: pzemac
id: pzemac_C
address: 0x03
current:
name: "C-Current" # Tên cảm biến dòng điện
voltage:
name: "C-Voltage" # Tên cảm biến điện áp
energy:
name: "C-Energy" # Tên cảm biến năng lượng
power:
name: "C-Power" # Tên cảm biến công suất
id: C_POWER
frequency:
name: "C-Frequency" # Tên cảm biến tần số
power_factor:
name: "C-PowerFactor" # Tên cảm biến hệ số công suất
update_interval: 11s # Khoảng thời gian cập nhật là 11 giây
- platform: wifi_signal # Báo cáo cường độ tín hiệu WiFi/RSSI tính bằng dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Báo cáo cường độ tín hiệu WiFi tính bằng %
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 # Đặt lại bộ đếm năng lượng của cảm biến A vào 0 giờ 0 phút 0 giây ngày đầu tiên của tháng
- pzemac.reset_energy: pzemac_B # Đặt lại bộ đếm năng lượng của cảm biến B vào 0 giờ 0 phút 0 giây ngày đầu tiên của tháng
- pzemac.reset_energy: pzemac_C # Đặt lại bộ đếm năng lượng của cảm biến C vào 0 giờ 0 phút 0 giây ngày đầu tiên của tháng
on_time_sync:
then:
- logger.log: "Synchronized system clock"
Các dự án mã nguồn mở khác được đề xuất
- STM32F030C8T6 board hệ thống tối thiểu và đèn chạy (sơ đồ nguyên lý và PCB): https://blog.zeruns.com/archives/715.html
- Vẽ board hệ thống tối thiểu MSP430F149 và mở mã nguồn: https://blog.zeruns.com/archives/713.html
- Đề thi nguồn điện kỳ thi điện tử 2007: Module DCDC tăng áp điều chỉnh 30–36 V (UC3843): https://oshwhub.com/zeruns/36v-sheng-ya-dcdc-mo-kuai-uc3842
- Board hệ thống tối thiểu STC12C5A60S2/điều khiển quạt theo nhiệt độ 8051: https://blog.zeruns.com/archives/721.html
- Template dự án thư viện chuẩn STM32F407 đã port sẵn thư viện đồ họa U8g2: https://blog.zeruns.com/archives/722.html
- Mở mã nguồn board hệ thống tối thiểu Qinheng CH32V307VCT6: https://blog.zeruns.com/archives/726.html
- Module nguồn DCDC tăng áp/hạ áp tự động LM25118: https://blog.zeruns.com/archives/727.html
- Mở mã nguồn module tăng áp đồng bộ công suất lớn EG1164, hiệu suất cao nhất 97 %: https://blog.zeruns.com/archives/730.html
- Node cảm biến môi trường 4G dựa trên Air700E (nhiệt độ, độ ẩm, áp suất…), upload lên nền tảng IoT Alibaba Cloud qua MQTT: https://blog.zeruns.com/archives/747.html
Bài viết được đề xuất
- Giới thiệu VPS/máy chủ đám mây giá rẻ, hiệu năng cao: https://blog.zeruns.com/archives/383.html
- Hướng dẫn dựng máy chủ Minecraft: https://blog.zeruns.com/tag/mc/
- Chia sẻ tủ mạng gia đình, thiết bị mạng gia đình được đề xuất: https://blog.zeruns.com/archives/732.html
- Mở hộp & đánh giá board phát triển Orange Pi 3B (RK3566): https://blog.zeruns.com/archives/729.html
- Nâng cấp PC cá nhân, đổi card màn hình Yeston RTX3070: https://blog.zeruns.com/archives/746.html
- Hướng dẫn dựng SD (Stable Diffusion) trên GPU cloud của Yuyun, tạo website AI vẽ tranh riêng: https://blog.zeruns.com/archives/768.html










