littlebot
Published on 2025-04-02 / 0 Visits
0

【源码】基于ESP8266和Raspberry Pi Pico的电网频率测量系统

项目简介

本项目是一个基于ESP8266和Raspberry Pi Pico的电网频率测量系统,主要功能是测量交流电网的频率,并借助MQTT协议把数据传输到服务器。系统通过检测电网电压的零交叉点来计算频率,同时运用平滑算法处理测量结果,保证数据准确稳定。

项目的主要特性和功能

  1. 电网频率测量:利用Raspberry Pi Pico检测电网电压零交叉点进行频率测量,再通过串行通信将数据传至ESP8266。
  2. 数据平滑处理:采用运行平均值算法对测量结果平滑处理,降低数据波动。
  3. 参数配置与存储:支持通过串行端口、MQTT或HTTP REST API配置和存储参数,参数可存于EEPROM或flash内存,设备重启配置仍保留。
  4. MQTT通信:ESP8266通过MQTT协议向服务器发布测量数据,支持TLS加密通信。
  5. 硬件设计:使用ZMPT101B模块作为电网电压传感器,经ADC转换器连到Raspberry Pi Pico的模拟输入端口,保证信号质量。
  6. 固件更新: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 GPIO1SerBr TxRX GPIO3SerBr Rx
  • 配置MQTT服务器信息,启用TLS加密通信。

参数设置

  • 通过串行端口、MQTT或HTTP REST API设置和读取参数。例如:
  • 通过串行端口发送命令:SSerialSend get usSSerialSend 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
  • 重启设备后,使用readflashget <parameter>命令验证参数是否正确存储。

运行系统

连接电源,系统将开始测量电网频率并通过MQTT发布数据。

恢复默认设置

如果需要恢复默认参数,使用以下命令: set readflash 0 writeflash

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】