最近用 NodeMCU 实现了家庭电能消耗的监控,数据上报到 Domoticz 服务器,可直观地查看当前的家庭电能消耗情况。
思路参考了 麻瓜随笔:这些年关注过&使用过的“电量模块”。
NodeMCU 使用 UART 端口与电量模块通讯,程序代码见 https://github.com/wolfg1969/nodemcu-power-meter。
写程序和调试过程遇到的几个“坑”:
-
NodeMCU 只有 UART0 为读写全双工,如果连接 USB 调试就没法和电量模块通讯。解决办法:在 NodeMCU 上启动 Telnet 服务器,通过 Telnet 启动程序并观察输出。NodeMCU 自带了启动 Telnet 服务器的 Lua 脚本。
-
调用 uart.alt(1) 切换至 D7 和 D8 引脚即所谓 Soft Serial 方式也不成功,原因可能是因为 Soft Serial 与 Wifi 有冲突 (内部中断冲突?)
-
电量模块供电电压要求为 4.75V ~ 5.5V,而 ESP8266 的通讯电平为 3.3V,需要使用电平转换模块才能驱动电量模块。