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


电路:

系统硬件主要包括以下模块:
-
核心控制器:STM32F103C8T6最小系统板
-
传感器模块:
-
BMP280大气压强传感器
-
DHT11温湿度传感器
-
光敏电阻(光照检测)
-
MQ2烟雾传感器
-
MQ7一氧化碳传感器
-
MQ135空气质量传感器
-
执行机构:
-
步进电机(窗帘控制)
-
LED灯(照明控制)
-
蜂鸣器(报警)
系统功能
-
环境监测:
-
实时监测温度、湿度、气压
-
检测光照强度、烟雾浓度、一氧化碳浓度和空气质量
-
智能控制:
-
自动模式:根据环境参数自动控制灯光和窗帘
-
手动模式:通过手机APP远程控制
-
报警功能:
-
当环境参数超过设定阈值时触发报警
-
通过蜂鸣器和APP通知用户
-
数据显示:
-
OLED本地显示环境参数
-
机智云平台远程监控
-
系统总体设计
系统采用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 *)¤tDataPoint); 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接口通信,可显示汉字和图形。按键设计采用独立式结构,通过外部中断和轮询方式检测。
-
整体电路设计
-
https://mp.weixin.qq.com/s/L6q0owPv1tTjXX1hhKeUOA
作者:2301_76515112