一. 系统概述
本系统基于 STM32 单片机进行主控,能够实时检测环境中的温度和湿度,以及烟雾浓度、PM2.5 粉尘浓度和有害气体浓度。检测到的数据将通过显示屏展示,并利用蓝牙模块将数据上传至上位机进行进一步显示。
二. 仿真概述
- 系统初始为手动模式,用户可以通过按键1和按键2来调节温湿度。按键1的第一次按下用于降温,第二次则为加热;按键2第一次按下为加湿,第二次则为除湿。在自动模式下,系统将根据设定的阈值进行控制:温度低于设定值时加热,超过设定值时降温;湿度高于设定值则进行除湿,低于设定值则加湿。同时,当烟雾、PM2.5 或有害气体浓度超过设定阈值时,系统会触发报警。
- 当检测到的烟雾、PM2.5 和有害气体浓度处于安全范围内时,系统将向上位机发送“正常”信号。上位机通过虚拟串口进行模拟,用户可以使用以下链接访问网页版串口助手。
- 如果检测到烟雾、PM2.5 或有害气体浓度超出正常范围,系统将向上位机发送“超标”信息,并附带具体的检测数据。
三.程序设计
#include <main.h>
//
u8 Key;//按键检测
u8 t,h,AIN1,AIN2,AIN0,AIN3;//
u8 tl=25,th=30,hl=33,hh=35,sh=3,ph=4,qh=5;
u8 m=0;//模式
u8 sdt=0,sdh=0;
//
//
void Init_Test(void);
void Test(void);
void Display(void);
//
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2:2
Init_Test();
while(1)
{
Key_Scan(&Key);
DHT11_Read_Data(&t,&h);
AIN0=PCF8591_ADC_Input(0x90,0);
AIN1=PCF8591_ADC_Input(0x90,1);
AIN2=PCF8591_ADC_Input(0x90,2);
OLED_ShowString(1,1,"t:");OLED_ShowNum(1,3,t,2);
OLED_ShowString(1,6,"h:");OLED_ShowNum(1,8,h,2);
OLED_ShowString(2,1,"s:");OLED_ShowNum(2,3,AIN1,2);//AIN0
OLED_ShowString(3,1,"p:");OLED_ShowNum(3,3,AIN2,2);//AIN1
OLED_ShowString(4,1,"q:");OLED_ShowNum(4,3,AIN0,2);//AIN2
OLED_ShowNum(1,11,tl,2);
OLED_ShowNum(1,14,hl,2);//
OLED_ShowNum(2,11,th,2);
OLED_ShowNum(2,14,hh,2);//
OLED_ShowNum(2,6,sh,2);//
OLED_ShowNum(3,6,ph,2);//
OLED_ShowNum(4,6,qh,2);//
if(Key==4)
{
m=~m;
Key=0;
LedA2_0;LedA1_0;LedA3_0;LedA4_0;sdt=0;sdh=0;
}
if(m)
{
LedC1_0;//自动
if(t>th) { LedA1_1;}
else if(t<tl) { LedA2_1;}
else if(tl<t<th) { LedA1_0;LedA2_0; }
if(h>hh) { LedA4_1;}
else if(h<hl) { LedA3_1;}
else if(hl<h<hh) { LedA3_0;LedA4_0; }
if(AIN1>sh|AIN2>ph|AIN0>qh)
{
printf("烟雾:%d\r\n",AIN1);
printf("PM2.5:%d\r\n",AIN2);
printf("有害气体:%d\r\n",AIN0);
delay_ms(1000);
}
}else
{
LedC1_1;//手动
if(Key==1&&m==0){ Key=0; sdt++; if(sdt>2) sdt=0;}
if(Key==2&&m==0){ Key=0; sdh++; if(sdh>2) sdh=0;}
if(sdt==0) { LedA2_0; LedA1_0;}
else if(sdt==1) { LedA2_0; LedA1_1;}
else if(sdt==2) { LedA1_0; LedA2_1;}
if(sdh==0) { LedA3_0; LedA4_0;}
else if(sdh==1) { LedA4_0; LedA3_1;}
else if(sdh==2) { LedA3_0; LedA4_1;}
}
}
}
24-32f-41