一.系统概述
1. 本次设计的系统是以STM32单片机作为核心控制器,然后可以通过温湿度传感器、烟雾传感器、光照传感器、火焰传感器完成对仓库内环境信息的采集,并且可以将采集到的数据信息在显示屏上进行显示,可以通过按键对各个参数的阈值进行设定,以便实现对仓库环境的智能调节和报警,当温度超过下限阈值后会控制加温装置启动,超过上限温度会降温启动,当湿度超过阈值会控制除湿装置启动,当仓库内有人且光照低于闯值控制灯光打开,当烟雾浓度超过阈值则控制蜂鸣器报警,并且当检测到火焰的时候也会控制蜂鸣器报警。
二.仿真概述
1. 使用DHT11进行温湿度检测,光敏电阻模块进行光强检测,人体检测和火焰检测都是通过开关来获取开关量。按键设置参数阈值,但检测到温度低就加热,温度高就降温,检测到湿度过高就除湿,检测到光强低于阈值且检测到人就会开灯,检测火焰蜂鸣器报警。
2.按下DHT11的红色按钮实现温湿度的调节,显示端也会同步更改的温湿度数据。温度超限就会降温,温度低于阈值就会加热,湿度超限就会除湿。
3. 调节光敏电阻模块的滑动变阻器即可调节光强输入,检测到人且光强低于阈值就会开灯。
4. 检测到火焰就会蜂鸣器报警
三.程序设计
int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2:2 Init_Test(); while(1) { Key_Scan(&key); if(key==1){ set++; if(set>5)set=0; key=0;OLED_ShowString(4,1," "); } if(set==1) { OLED_ShowString(4,1,"set tmin >");OLED_ShowNum(4,12,tl,2); if(key==2){tl++;key=0;} if(key==3){tl--;key=0;} } if(set==2) { OLED_ShowString(4,1,"set tmax >");OLED_ShowNum(4,12,th,2); if(key==2){th++;key=0;} if(key==3){th--;key=0;} } if(set==3) { OLED_ShowString(4,1,"set hmax >");OLED_ShowNum(4,12,hh,2); if(key==2){hh++;key=0;} if(key==3){hh--;key=0;} } if(set==4) { OLED_ShowString(4,1,"set smax >");OLED_ShowNum(4,12,sh,2); if(key==2){sh++;key=0;} if(key==3){sh--;key=0;} } if(set==5) { OLED_ShowString(4,1,"set lmin >");OLED_ShowNum(4,12,ll,2); if(key==2){ll++;key=0;} if(key==3){ll--;key=0;} } DHT11_Read_Data(&t,&h); smo =PCF8591_ADC_Input(0x90,1);if(smo>99)smo=99;// light=PCF8591_ADC_Input(0x90,0);if(light>99)light=99;// OLED_ShowString(1,1,"Temp:");OLED_ShowNum(1,6,t,2);OLED_ShowString(1,9,"Humi :");OLED_ShowNum(1,15,h,2);//OLED_ShowString(1,9," C");//OLED_ShowNum(1,14,tl,2); OLED_ShowString(2,1,"Smo :");OLED_ShowNum(2,6,smo,2);OLED_ShowString(2,9,"Light:");OLED_ShowNum(2,15,light,2);//OLED_ShowString(2,9," Rh");//OLED_ShowNum(1,14,tl,2); OLED_ShowString(3,1,"body:");OLED_ShowString(3,9,"flame:"); if(Key4==0){OLED_ShowString(3,6,"H");}else{OLED_ShowString(3,6,"N");} if(Key5==0){OLED_ShowString(3,15,"H");}else{OLED_ShowString(3,15,"N");} if(tth)Relay2_1;else Relay2_0; if(h>hh)Relay3_1;else Relay3_0; if(smo>sh || Key5==0)Relay5_1;else Relay5_0; if(light
全部0条评论
快来发表一下你的评论吧 !