基于STM32单片机智能电表无线WIFI插座APP交流电压电流检测设计
本文介绍了一款基于STM32单片机的智能电表插座系统设计。系统通过电压互感器TV1005M和电流互感器TA1005M实现交流电压电流检测,采用ESP8266 WiFi模块实现无线通信,支持手机APP远程监控和控制。具有200W过载保护功能,当功率超标时自动切断供电。系统采用定长通信协议(V/A/P/Q/T/R格式)进行数据传输,IP为10.10.10.11,端口8080。硬件设计包括STM32最小
1 系统功能介绍
本设计基于 STM32 单片机,实现了一款具备 交流电压电流检测、无线 WiFi 通信、手机 APP 控制以及过载保护功能的智能电表插座系统。它不仅可以实时监测电压、电流、功率及电量,还能通过 WiFi 与手机 APP 联动,实现远程查看与控制,最终实现家庭用电的智能化与安全化。
系统功能包括:
- 交流电压检测:通过电压互感器 TV1005M 实现交流电压采样。
- 交流电流检测:通过电流互感器 TA1005M 实现电流检测。
- 实时数据显示:手机 APP 与 WiFi 模块连接后,可以实时显示电压、电流、瞬时功率以及累计电量等数据。
- 过载保护:当瞬时功率超过 200W 时,系统会自动关闭继电器,切断供电;当功率低于 200W 时,可通过手机手动控制继电器开关。
- 计时功能:手机 APP 可以显示设备运行时间,用户可实时掌握用电时长。
- 继电器状态显示:继电器状态通过协议中的 R 位进行标识,R=1 表示接通,R=0 表示断开。
整个系统的名称为 AUAISOUT000,其 WiFi 通信参数为:IP:10.10.10.11,端口号:8080。
通信协议采用定长格式,接收内容如下:
V:123A:12345P:1234567Q:1234567.89T:123R:1
其中:
- V:电压,3 位数字,格式固定(如 V:012 表示 12V)。
- A:电流,5 位数字,实际值为除以 1000,例如 A:12345 表示 12.345A。
- P:功率,7 位数字,实际值为除以 1000,例如 P:1234567 表示 1234.567W。
- Q:电量,带小数点,实际值为除以 1000000,例如 Q:1234567.89 表示 1.23456789 kWh。
- T:运行时间,以秒为单位,例如 T:1234 表示系统已运行 1234 秒。
- R:继电器状态,R:1 表示接通,R:0 表示断开。
发送命令为:
#:断开供电(继电器断开)。*:接通供电(继电器吸合)。
2 系统电路设计
2.1 STM32 单片机最小系统电路
-
核心芯片:STM32F103 系列单片机,主频 72MHz,内置丰富的外设接口。
-
功能:作为系统核心,负责采集电压、电流数据,计算功率与电量,通过串口与 WiFi 模块通信,并控制继电器开关。
-
外设接口分配:
- ADC 通道用于采集电压、电流模拟信号。
- USART1 用于与 WiFi 模块通信。
- GPIO 控制继电器驱动电路及状态指示灯。
2.2 电压检测电路
- 元件:采用电压互感器 TV1005M。
- 原理:通过互感器将 220V 高压交流电变换为低压交流信号,经电阻分压与滤波电路后输入单片机 ADC 采集口。
- 作用:安全可靠地检测交流电压值。
2.3 电流检测电路
- 元件:采用电流互感器 TA1005M。
- 原理:将负载电流转换为比例电压信号,经运放调理后输入单片机 ADC 通道。
- 作用:实时测量电流大小,结合电压计算功率与电量。
2.4 WiFi 模块电路
- 元件:ESP8266 WiFi 模块。
- 通信方式:UART 串口通信,波特率 115200。
- 作用:实现数据上传与命令接收,手机 APP 通过 WiFi 连接模块的 IP 与端口号进行通信。
2.5 继电器及指示灯电路
- 继电器:用于控制插座的供电通断。
- 驱动方式:采用三极管或 MOSFET 驱动,GPIO 输出高电平吸合继电器。
- 指示灯:LED 用于显示继电器状态,绿色表示接通,红色表示断开。
2.6 电源电路
- 输入电源:220V AC,经降压电源模块输出 5V。
- 电源分配:STM32 与外围模块统一供电,ESP8266 需 3.3V 电源,由 AMS1117-3.3 提供稳压。
3 系统程序设计
系统程序采用 模块化设计,分为:主程序、电压电流采集模块、功率与电量计算模块、WiFi 通信模块、继电器控制模块、显示与报警模块。
3.1 主程序框架
#include "stm32f10x.h"
#include "adc.h"
#include "usart.h"
#include "relay.h"
#include "wifi.h"
#include "calc.h"
float voltage, current, power, energy;
uint32_t runtime = 0;
uint8_t relay_state = 1;
int main(void)
{
SysTick_Init();
ADC_Config();
USART1_Init(115200);
Relay_Init();
WiFi_Init("AUAISOUT000","10.10.10.11",8080);
while(1)
{
voltage = Get_Voltage();
current = Get_Current();
power = voltage * current;
energy += power / 3600.0; // Wh -> kWh
WiFi_SendData(voltage, current, power, energy, runtime, relay_state);
WiFi_ReceiveCmd(&relay_state);
if(power > 200.0) // 过载保护
{
Relay_Off();
relay_state = 0;
}
else
{
if(relay_state == 1)
Relay_On();
else
Relay_Off();
}
DelayMs(1000);
runtime++;
}
}
3.2 电压电流采集模块
float Get_Voltage(void)
{
uint16_t adc_value = ADC_ReadChannel(0);
float v = (adc_value / 4096.0) * 3.3 * 100; // 放大系数
return v;
}
float Get_Current(void)
{
uint16_t adc_value = ADC_ReadChannel(1);
float i = (adc_value / 4096.0) * 3.3 * 10; // 放大系数
return i;
}
3.3 WiFi 通信模块
void WiFi_SendData(float v, float a, float p, float q, uint32_t t, uint8_t r)
{
char buffer[64];
sprintf(buffer,"V:%03dA:%05dP:%07dQ:%0.2fT:%04dR:%d",
(int)v, (int)(a*1000), (int)(p*1000), q, t, r);
USART1_SendString(buffer);
}
void WiFi_ReceiveCmd(uint8_t *relay_state)
{
char cmd = USART1_ReceiveByte();
if(cmd == '#')
*relay_state = 0;
else if(cmd == '*')
*relay_state = 1;
}
3.4 继电器控制模块
void Relay_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void Relay_On(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_0);
}
void Relay_Off(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}
4 总结
本设计基于 STM32 单片机,通过 电压互感器 TV1005M、电流互感器 TA1005M、ESP8266 WiFi 模块、继电器驱动电路 等模块,实现了 交流电压电流检测、功率与电量计算、过载保护以及无线通信控制。
系统优势如下:
- 实时性强:数据每秒更新一次,手机 APP 实时显示用电参数。
- 安全性高:超过 200W 自动切断电源,避免过载风险。
- 远程控制:用户可通过手机 APP 远程控制继电器开关。
- 通信协议简洁:定长字符串协议保证了数据解析的可靠性。
- 扩展性强:可在此基础上增加温湿度检测、用电统计分析、云端上传等功能,形成完整的物联网智能家居平台。
该系统不仅适用于家庭智能插座场景,还能应用于工厂、实验室等需要实时监测和控制的用电环境,具有较强的实用价值和推广意义。
更多推荐



所有评论(0)