1 系统功能介绍

本设计基于 STM32 单片机,实现了一款具备 交流电压电流检测、无线 WiFi 通信、手机 APP 控制以及过载保护功能的智能电表插座系统。它不仅可以实时监测电压、电流、功率及电量,还能通过 WiFi 与手机 APP 联动,实现远程查看与控制,最终实现家庭用电的智能化与安全化。

系统功能包括:

  1. 交流电压检测:通过电压互感器 TV1005M 实现交流电压采样。
  2. 交流电流检测:通过电流互感器 TA1005M 实现电流检测。
  3. 实时数据显示:手机 APP 与 WiFi 模块连接后,可以实时显示电压、电流、瞬时功率以及累计电量等数据。
  4. 过载保护:当瞬时功率超过 200W 时,系统会自动关闭继电器,切断供电;当功率低于 200W 时,可通过手机手动控制继电器开关。
  5. 计时功能:手机 APP 可以显示设备运行时间,用户可实时掌握用电时长。
  6. 继电器状态显示:继电器状态通过协议中的 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 模块、继电器驱动电路 等模块,实现了 交流电压电流检测、功率与电量计算、过载保护以及无线通信控制

系统优势如下:

  1. 实时性强:数据每秒更新一次,手机 APP 实时显示用电参数。
  2. 安全性高:超过 200W 自动切断电源,避免过载风险。
  3. 远程控制:用户可通过手机 APP 远程控制继电器开关。
  4. 通信协议简洁:定长字符串协议保证了数据解析的可靠性。
  5. 扩展性强:可在此基础上增加温湿度检测、用电统计分析、云端上传等功能,形成完整的物联网智能家居平台。

该系统不仅适用于家庭智能插座场景,还能应用于工厂、实验室等需要实时监测和控制的用电环境,具有较强的实用价值和推广意义。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐