一、设计简介

本项目基于STM32单片机实现智能家居环境控制系统,通过多传感器协同监测环境参数(烟雾浓度、温湿度、光照强度),结合执行机构(步进电机、继电器)实现自动窗帘控制、智能调光、温控风扇及报警功能。系统采用模块化设计,具备按键手动干预能力,实现环境参数的闭环控制。

stm32单片机智能家居环境控制系统(烟雾监测MQ-2+温湿度DHT11+光照强度监测bh1750+步进电机ULN2003+0.96oled+继电器+声光报警

二、功能设计

  1. 环境监测
    • MQ-2检测烟雾浓度,超阈值触发继电器动作和声光报警
    • DHT11采集温湿度数据,驱动风扇降温
    • BH1750监测光照强度,控制自动开关灯
  2. 执行机构
    • 自动根据光照强度,ULN2003驱动步进电机28BYJ-48实现窗帘开合
    • 继电器模拟窗户;继电器控制风扇开关
    • 光照强度自动控制照明灯开关
  3. 交互系统
    • 0.96 OLED实时显示环境参数
    • 按键设置阈值/手动控制设备
    • 蜂鸣器+LED实现声光报警

三、所需硬件连接

模块 连接方式
DHT11 单总线通信
BH1750 I²C (SCL/SDA)
MQ-2 ADC采集
ULN2003+28BYJ-48 四相步进脉冲
OLED (I²C) I²C
继电器x2 GPIO控制
按键x4 下拉输入
蜂鸣器 PWM驱动
LED报警灯 GPIO

四、软件环境

  • 开发环境:Keil uVision5
  • 编程语言:C (STM32 标准库)
  • 驱动:
    • DHT11温湿度
    • BH1750光照传感器驱动
    • OLED的SSD1306驱动
    • 步进电机控制算法

五、所需硬件及传感器模块

类型 型号/规格 数量
主控 STM32F103C8T6 1
温湿度传感器 DHT11 1
光照传感器 BH1750FVI 1
烟雾传感器 MQ-2 1
显示模块 0.96" OLED (I²C) 1
电机驱动 ULN2003达林顿阵列 1
执行机构 28BYJ-48步进电机 1
功率控制 5V继电器模块 2
报警单元 有源蜂鸣器+LED 1套
输入设备 轻触按键 4

六、原理图及设计流程图

系统原理图


+----------------+     +----------------+     +-----------------+
| 传感器采集层   | --> | STM32处理核心  | --> | 执行控制层      |
| (MQ-2/DHT11/   |     | 1.数据融合处理 |     | - ULN2003(窗帘) |
|  BH1750)       | <-- | 2.阈值判断     | <-- | - 继电器(灯/扇) |
+----------------+     | 3.报警决策     |     | - 声光报警      |
                        +-----------------+     +-----------------+
                              ↑
                          +--------+
                          | OLED显示|
                          | 按键输入|
                          +--------+

七、实物图描述

八、程序代码框架

int main(void)
{
	/*初始化*/
	Delay_ms(100);
	Relay_Init();	
	OLED_Init();
	Serial_Init();
	BH1750_Init();
	Key_Init();
	DHT11_Init();	
	AD_Init();
	Stepper_Servo_Init();	
	LED_Buzzer_Init();
	LED_Init();
	Timer4_Init();
	Delay_ms(500);		
	
	while (1)
	{		
		Delay_ms(50);
		DHT11_Read_Data(&Temperature,&Humi);			//获取温湿度
		light = bh_data_read();										//获取光强度	
		Smoke=AD_GetValue(ADC_Channel_4);					//烟雾值ADC
		switch (PAGE)						//页面显示
		{
			case 0:
			{
				MODE=0;
				OLED_Clear();				//清屏
				PAGE_Home();						//显示页面1
			}break;				
			case 1:
			{
				MODE=1;
				OLED_Clear();				//清屏
				PAGE_Manual();						//显示手动控制页面
			}break;		
			case 2:
			{
				MODE=1;
				OLED_Clear();				//清屏
				PAGE_Threshold();					//显示阈值设置页面
			}break;				
		}		
		if(Key_Check(KEY_1,KEY_SINGLE))						//按键1按下切换手动设置和阈值设置
		{
			PAGE++;
			PAGE%=3;
		}
		
		if(PAGE==1)	
		{
			if(Key_Check(KEY_2,KEY_SINGLE))		
				{
					SetSelect_Manual++;
					SetSelect_Manual%=4;
				}			
		}

		if(PAGE==2)							//当页面2阈值设置界面时的按键功能
		{
			if(Key_Check(KEY_2,KEY_SINGLE))		
				{
					SetSelect++;										//按键2按下切换阈值设置位置
					SetSelect%=5;
				}
			if(Key_Check(KEY_3,KEY_SINGLE))		
				{
				
					if(SetSelect==1)								//设置位置2
					{
						light_D+=50;								
						if(light_D>=2000)light_D=2000;		
					}
					if(SetSelect==2)								//设置位置3
					{
						light_G+=1000;								//光照强度阈值增加1000
						if(light_G>=65535)light_G=65535;		
					}
					if(SetSelect==3)								//设置位置4
					{
						Temperature_G+=1;										//温度阈值增加1
						if(Temperature_G>=99)Temperature_G=99;
					}		
					if(SetSelect==4)								//设置位置4
					{
						Smoke_G+=50;										//温度阈值增加1
						if(Smoke_G>=4095)Smoke_G=4096;
					}						
				}			
			if(Key_Check(KEY_4,KEY_SINGLE))		
			{
				if(SetSelect==1)								//设置位置2
					{
						light_D-=50;								
						if(light_D<=0|light_D>=3000)light_D=0;
					}				
					if(SetSelect==2)								//设置位置3
					{
						light_G-=1000;								//光照强度阈值减小1000
						if(light_G<=0)light_G=0;
					}
					if(SetSelect==3)								//设置位置4
					{
						Temperature_G-=1;										//温度阈值减小1
						if(Temperature_G<=0|Temperature_G>100)Temperature_G=0;
					}		
					if(SetSelect==4)								//设置位置4
					{
						Smoke_G-=50;										//温度阈值减小1
						if(Smoke_G<=0|Smoke_G>5000)Smoke_G=0;
					}					
			}			
		}		
		control_alarm();											//传感器阈值比较报警函数
		OLED_Update();		
	}
}

九、资料内容清单

  1. 完整Keil工程文件
  2. 传感器驱动库(DHT11/BH1750/MQ-2)
  3. OLED显示驱动源码
  4. 步进电机控制算法
  5. 硬件连接原理图,PCB图(AD,PDF格式)
  6. 元器件清单(BOM表)
  7. 操作说明视频
  8. 电路讲解期间选型程序讲解视频

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐