STM32智能家居控制系统设计与实践指南

本文将介绍基于STM32F103C8T6微控制器的智能家居控制系统设计与实现。该系统集成了多种传感器模块,通过机智云平台实现远程监控和控制,具备环境监测、智能控制和报警功能。

实物展示:

电路:

系统硬件主要包括以下模块:

  1. 核心控制器:STM32F103C8T6最小系统板

  2. 传感器模块

  3. BMP280大气压强传感器

  4. DHT11温湿度传感器

  5. 光敏电阻(光照检测)

  6. MQ2烟雾传感器

  7. MQ7一氧化碳传感器

  8. MQ135空气质量传感器

  9. 执行机构

  10. 步进电机(窗帘控制)

  11. LED灯(照明控制)

  12. 蜂鸣器(报警)

系统功能

  1. 环境监测

  2. 实时监测温度、湿度、气压

  3. 检测光照强度、烟雾浓度、一氧化碳浓度和空气质量

  4. 智能控制

  5. 自动模式:根据环境参数自动控制灯光和窗帘

  6. 手动模式:通过手机APP远程控制

  7. 报警功能

  8. 当环境参数超过设定阈值时触发报警

  9. 通过蜂鸣器和APP通知用户

  10. 数据显示

  11. OLED本地显示环境参数

  12. 机智云平台远程监控

  13. 系统总体设计

    系统采用STM32F103C8T6作为主控制器,这是一款基于ARM Cortex-M3内核的微控制器,具有丰富的外设资源和较高的性价比。系统硬件架构分为感知层、控制层和应用层三个部分。感知层由各类传感器组成,负责采集环境参数;控制层以STM32为核心,处理传感器数据并执行控制逻辑;应用层通过WiFi模块连接机智云平台,实现远程监控和控制。

    在软件设计上,系统采用前后台架构。前台程序负责处理实时性要求高的任务,如传感器数据采集和设备控制;后台程序处理网络通信和用户界面更新等任务。系统主循环以100ms为周期运行,保证了实时性和响应速度的平衡。

    主程序框架

    #include "sys.h"
    #include "usart.h"
    #include "led.h"
    #include "timer.h"
    #include "ADC.h"
    #include "usart3.h"
    #include "key.h"
    #include "oled.h"
    #include "math.h"
    #include "dht11.h"
    #include "bmp280.h"
    #include "gizwits_product.h"
    
    int main(void)
    {
        // 硬件初始化
        uart_init(115200);
        delay_init();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        Adc1_Channe_Init();
        KEY_Init();
        bmp280Init();
        while(DHT11_Init());
        LED_Init();
        OLED_Init();
        OLED_Clear();
        Gizwits_Init();
        
        // 主循环
        while(1)
        {
            Get_Data(0);  // 获取传感器数据
            // 自动控制逻辑
            if(gz_value<=A_gz_value&&mode==0) {
                LED0=0;
                curtain_flag=0;
            } else if(gz_value>A_gz_value&&mode==0) {
                LED0=1;
                curtain_flag=1;
            }
            
            // 窗帘控制
            if(last_curtain_flag!=curtain_flag&&mode==0) {
                BUJING_Cotrol(curtain_flag,3,270);
                last_curtain_flag = curtain_flag;
            }
            
            // 远程控制模式
            if(mode==1) {
                LED0=!currentDataPoint.valueLED;
            }
            
            // 报警逻辑
            if(DHT11_Temp>=A_DHT11_Temp||DHT11_Hum<=A_DHT11_Hum||Pre>=A_pre||
               m135_value<=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value) {
                BEEP=!BEEP;
            } else {
                BEEP = 0;
            }
            
            // 用户界面和网络处理
            userHandle();
            WIFI_Contection(key_value);
            gizwitsHandle((dataPoint_t *)&currentDataPoint);
            
            delay_ms(100);
        }
    }

    硬件设计详解

    传感器选型方面,系统采用了DHT11数字温湿度传感器,该传感器采用单总线通信协议,具有成本低、响应快的特点。气压检测选用BMP280传感器,这是一款高精度数字气压计,通过I2C接口与主控通信,可同时测量气压和温度。环境气体检测方面,系统集成了MQ系列传感器:MQ2检测烟雾和可燃气体,MQ7专门检测一氧化碳,MQ135检测空气质量。这些传感器均通过ADC接口接入,将气体浓度转换为模拟电压信号供MCU采集。

    执行机构设计上,照明控制采用普通LED灯,通过GPIO直接驱动。窗帘控制使用28BYJ-48步进电机,这是一种常见的5线4相步进电机,通过ULN2003驱动芯片控制。报警装置采用有源蜂鸣器,由三极管驱动电路控制。

    人机交互部分包括0.96寸OLED显示屏和4个按键。OLED采用SSD1306驱动芯片,通过I2C接口通信,可显示汉字和图形。按键设计采用独立式结构,通过外部中断和轮询方式检测。

  14. 整体电路设计

  15. https://mp.weixin.qq.com/s/L6q0owPv1tTjXX1hhKeUOA

作者:2301_76515112

物联沃分享整理
物联沃-IOTWORD物联网 » STM32智能家居控制系统设计与实践指南

发表回复