Generated by Copilot
ESP32 + ESP-IDF 專案,用 SPI 讀取多顆 HLW8112 的電力資料(電壓、電流、功率、能量)。
- 以 SPI 與 HLW8112 通訊,支援寄存器讀寫與驗證
- 讀取並換算:
- 電壓
RmsU - 電流
RmsIA/RmsIB - 有功功率
PowerPA/PowerPB - 累積能量
Energy_PA/Energy_PB
- 電壓
- 透過 GPIO 25/26/27 選擇不同 HLW8112 裝置(0~7)
- 啟動時可初始化 Wi-Fi(Station mode)
main/main.c:主流程、HLW8112 初始化、週期性讀值main/spi.c、main/spi.h:SPI 初始化與裝置選擇main/wifi.c、main/wifi.h:Wi-Fi 初始化main/hlw8112/hlw8112.c:HLW8112 底層讀寫main/hlw8112/convert.c:原始寄存器值換算為工程值main/hlw8112/registers.h:寄存器定義與位元欄位main/Kconfig.projbuild:可調整的專案設定
- ESP-IDF
v5.5.x(專案目前在v5.5.3測試) - ESP32 開發板
- HLW8112 硬體與對應前端量測電路
先進入專案根目錄,執行:
idf.py menuconfig在 Power Monitor Configuration 內設定:
Wifi ConfigESP_WIFI_SSIDESP_WIFI_PASSWORD- 掃描驗證模式與 WPA3 SAE 選項
SPI ConfigESP_SPI_HOST_2或ESP_SPI_HOST_3ESP_SPI_SPEED(預設 100000)
Others configESP_STRICT_VERIFY
依 menuconfig 選擇的 Host 不同:
SPI Host 2- CS: GPIO15
- CLK: GPIO14
- MISO: GPIO12
- MOSI: GPIO13
SPI Host 3- CS: GPIO5
- CLK: GPIO18
- MISO: GPIO19
- MOSI: GPIO23
裝置選擇線(多工/解碼)固定使用:
- SEL0: GPIO25
- SEL1: GPIO26
- SEL2: GPIO27
idf.py build
idf.py -p COM3 flash
idf.py -p COM3 monitorWindows 使用者請將
COM3改成實際序列埠。
app_main()會依序對裝置索引0..6做 HLW8112 初始化- 之後固定選擇索引
5,每秒輸出一次量測資訊
- 先確認
REG_SYSCON、REG_EMUCON等初始化值是否與預期一致 - 若能量脈衝相關計數異常(如
PFCntPA一直為 0):- 檢查
EMUCON.Comp_off是否關閉比較器 - 檢查
PAstart/HFConst設定 - 檢查
PowerPA、EMUStatus是否符合脈衝產生條件
- 檢查
- SPI 讀值驗證失敗時,優先檢查配線、SPI mode 與 clock
目前未附授權條款;如需公開發佈,建議補上 LICENSE。