项目简介
本项目是一个基于ESP8266和Raspberry Pi Pico的电网频率测量系统,主要功能是测量交流电网的频率,并借助MQTT协议把数据传输到服务器。系统通过检测电网电压的零交叉点来计算频率,同时运用平滑算法处理测量结果,保证数据准确稳定。
项目的主要特性和功能
- 电网频率测量:利用Raspberry Pi Pico检测电网电压零交叉点进行频率测量,再通过串行通信将数据传至ESP8266。
- 数据平滑处理:采用运行平均值算法对测量结果平滑处理,降低数据波动。
- 参数配置与存储:支持通过串行端口、MQTT或HTTP REST API配置和存储参数,参数可存于EEPROM或flash内存,设备重启配置仍保留。
- MQTT通信:ESP8266通过MQTT协议向服务器发布测量数据,支持TLS加密通信。
- 硬件设计:使用ZMPT101B模块作为电网电压传感器,经ADC转换器连到Raspberry Pi Pico的模拟输入端口,保证信号质量。
- 固件更新:Raspberry Pi Pico支持通过UF2文件更新固件,ESP8266固件可通过TASMOTA Web Installer更新。
安装使用步骤
硬件连接
- 将ZMPT101B模块的模拟输出连接到Raspberry Pi Pico的ADC0端口。
- 将Raspberry Pi Pico与ESP8266通过串行端口连接,波特率设置为9600。
固件安装
- Raspberry Pi Pico:将设备置于bootloader模式,把
.UF2
固件文件复制到设备中。
配置TASMOTA
- 连接到TASMOTA的WiFi热点(SSID格式为
tasmota_<mac>
),访问192.168.4.1
进行WiFi配置。 - 在TASMOTA的Web界面中,配置模块为
Generic (0)
,设置TX GPIO1
为SerBr Tx
,RX GPIO3
为SerBr Rx
。 - 配置MQTT服务器信息,启用TLS加密通信。
参数设置
- 通过串行端口、MQTT或HTTP REST API设置和读取参数。例如:
- 通过串行端口发送命令:
SSerialSend get us
或SSerialSend set us 999960
。 - 通过MQTT发布命令:
cmnd/tasmota_<MAC>/SSerialSend get us
。 - 通过HTTP REST API:
http://192.168.2.100/cm?cmnd=sserialsend%20get%20us
。
存储参数到Flash
- 使用以下命令将参数存储到Flash中:
set readflash 1 set flash_count 1 writeflash
- 重启设备后,使用
readflash
和get <parameter>
命令验证参数是否正确存储。
运行系统
连接电源,系统将开始测量电网频率并通过MQTT发布数据。
恢复默认设置
如果需要恢复默认参数,使用以下命令:
set readflash 0
writeflash
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】