基于STM32单片机智能电表无线WIFI插座APP交流电压电流检测设计

1 系统功能介绍

本设计基于 STM32 单片机,实现了一个智能电表式的无线控制插座系统。该系统能够实时检测交流电压、电流、功率以及电量等关键电气参数,并通过 WiFi 模块 与手机 APP 建立通信,实现远程监控与控制。与传统的插座不同,本设计在电气安全和远程管理方面有明显优势,不仅能够实时采集电气数据,还能在功率超过预设值(200W)时自动切断电源,防止电器过载。同时,用户还可以通过手机 APP 控制继电器开关,实现智能用电管理。

系统主要功能如下:

  1. 交流电压电流检测
    通过电压互感器 TV1005M 和电流互感器 TA1005M 分别检测交流电压和交流电流,并经过信号调理电路输入到 STM32 单片机的 ADC 模块进行采样。

  2. 参数计算与显示
    STM32 对采样数据进行计算,得到交流电压、电流、功率(W)以及电量(kWh)等参数,并将结果通过 WiFi 模块上传到手机 APP,在手机界面上实时显示。

  3. 功率过载保护
    当实时计算的功率值超过 200W 时,系统自动断开继电器,切断电源,防止电器烧毁或引发火灾。当功率低于 200W 时,用户可通过手机 APP 手动控制继电器的通断。

  4. 远程控制功能
    手机 APP 通过发送控制指令与 WiFi 模块通信,指令包括:

    • *:接通继电器,插座供电。
    • #:断开继电器,停止供电。
  5. 运行时间统计
    系统记录单片机上电以来的运行时间,APP 上能够实时显示设备运行时长。

  6. 通信协议
    系统采用字符串协议进行数据传输,内容格式为:

    V:123A:12345P:1234567Q:1234567.89T:123R:1
    
    • V:123 表示 123V 交流电压,长度固定 5 位,不足前补零。
    • A:12345 表示 12.345A 电流。
    • P:1234567 表示 1234.567W 功率(缩小 1000 倍传输)。
    • Q:1234567.89 表示 1.23456789 kWh 电量(缩小 1000000 倍传输)。
    • T:1234 表示设备运行时间,单位秒。
    • R:1 表示继电器状态(1=接通,0=断开)。

2 系统电路设计

2.1 单片机最小系统电路

本系统的核心为 STM32F103C8T6,其具有:

  • 多通道 ADC,可对电压和电流信号进行高速采样。
  • UART 接口,可与 ESP8266 WiFi 模块进行串口通信。
  • GPIO 控制继电器,实现供电管理。
  • 定时器资源,用于计时与数据处理。

晶振电路采用 8MHz 外部晶振,系统时钟经 PLL 倍频到 72MHz,保证高速数据处理能力。电源采用 3.3V 稳压芯片 AMS1117-3.3。


2.2 电压检测模块(TV1005M)

电压互感器 TV1005M 用于检测交流电压:

  • 将 220V 交流电转换为毫伏级小信号。
  • 通过电阻分压和运算放大器调理,将信号调整至 STM32 ADC 可采样的 0-3.3V 电压范围。
  • 单片机采集电压波形,并通过 RMS 算法计算电压有效值。

2.3 电流检测模块(TA1005M)

电流互感器 TA1005M 用于检测交流电流:

  • 输出电流与负载电流成比例关系。
  • 经过采样电阻转化为电压信号,再经运放调理。
  • STM32 ADC 采集信号后计算电流有效值。

2.4 功率与电量计算模块

在电压和电流检测的基础上,系统通过以下公式计算功率和电量:

  • 瞬时功率:

    P(t) = U(t) × I(t)
    
  • 有功功率(平均功率):

    P = 1/T ∫ U(t) × I(t) dt
    
  • 电量:

    Q = P × t
    

结果通过数据缩放后以字符串格式发送给 APP。


2.5 WiFi 通信模块(ESP8266)

WiFi 模块采用 ESP8266,通过 UART 与 STM32 通信。

  • 模块连接到指定 IP 和端口:10.10.10.11:8080
  • 发送采集数据字符串到服务器/手机 APP。
  • 接收手机指令 *# 并反馈给单片机执行继电器控制。

2.6 继电器控制模块

继电器作为插座的开关:

  • 当功率大于 200W 时,系统自动关闭继电器,断开供电。
  • 当功率小于 200W 时,用户可以通过手机 APP 控制继电器通断。
  • 状态通过 R:1R:0 上传。

2.7 LCD 与指示灯电路

为了在本地提示状态,系统设置 LED 指示灯:

  • 继电器接通时,LED 常亮。
  • 继电器断开时,LED 熄灭。
  • 还可扩展 LCD1602 或 OLED 显示,用于本地调试显示电压、电流、功率。

3 程序设计

3.1 主程序结构

int main(void)
{
    SystemInit();
    ADC_Init();       // 电压电流采样
    USART_Init(115200);  // WiFi通信
    Relay_Init();     // 继电器控制
    Timer_Init();     // 定时器计时
    LED_Init();
    
    while(1)
    {
        float voltage = getVoltage();
        float current = getCurrent();
        float power = voltage * current;
        float energy = calcEnergy(power);
        
        // 功率保护
        if(power > 200.0)
        {
            Relay_Off();
        }
        
        // 打包数据并发送
        sendData(voltage, current, power, energy, getRunTime(), getRelayStatus());
        
        // 处理接收指令
        processCommand();
    }
}

3.2 电压电流检测程序

float getVoltage(void)
{
    uint16_t adcValue = ADC_Read(ADC_Channel_1);
    float voltage = (adcValue / 4096.0) * 3.3 * 100; // 假设变比100
    return voltage;
}

float getCurrent(void)
{
    uint16_t adcValue = ADC_Read(ADC_Channel_2);
    float current = (adcValue / 4096.0) * 3.3 * 50; // 假设变比50
    return current;
}

3.3 功率与电量计算程序

float calcEnergy(float power)
{
    static float energy = 0;
    static uint32_t lastTime = 0;
    uint32_t now = millis();
    
    energy += power * (now - lastTime) / 1000.0 / 3600.0; // kWh
    lastTime = now;
    return energy;
}

3.4 WiFi 通信协议

void sendData(float V, float A, float P, float Q, uint32_t T, uint8_t R)
{
    char buffer[100];
    sprintf(buffer, "V:%03dA:%05dP:%07dQ:%0.8fT:%04dR:%d",
        (int)V,
        (int)(A*1000),
        (int)(P*1000),
        Q,
        T,
        R);
    USART_SendString(buffer);
}

void processCommand(void)
{
    char cmd = USART_Receive();
    if(cmd == '#') Relay_Off();
    if(cmd == '*') Relay_On();
}

3.5 继电器控制程序

void Relay_On(void)
{
    GPIO_SetBits(GPIOB, GPIO_Pin_0);
}

void Relay_Off(void)
{
    GPIO_ResetBits(GPIOB, GPIO_Pin_0);
}

uint8_t getRelayStatus(void)
{
    return GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_0);
}

4 总结

本设计基于 STM32F103 单片机,结合电压互感器 TV1005M 和电流互感器 TA1005M,实现了交流电压、电流、功率和电量的实时检测,并通过 ESP8266 WiFi 模块 与手机 APP 建立通信,实现了远程监控与控制。系统设计合理,功能完备,既保障了电气安全,又增强了智能控制能力。

本系统的优点:

  1. 实时性强:电气参数能够实时采集与上传。
  2. 安全性高:过载自动保护,避免电器损坏。
  3. 易于扩展:可增加电能统计、分时用电管理等功能。
  4. 应用广泛:可用于智能插座、家庭用电监控、工业能耗管理。

该系统不仅展示了 STM32 在智能家居与物联网中的应用,也为智能配电与能耗管理提供了参考方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值