基于STM32单片机的智慧仓库环境检测系统设计

描述

一.系统概

1. 本次设计的系统是以STM32单片机作为核心控制器,然后可以通过温湿度传感器、烟雾传感器、光照传感器、火焰传感器完成对仓库内环境信息的采集,并且可以将采集到的数据信息在显示屏上进行显示,可以通过按键对各个参数的阈值进行设定,以便实现对仓库环境的智能调节和报警,当温度超过下限阈值后会控制加温装置启动,超过上限温度会降温启动,当湿度超过阈值会控制除湿装置启动,当仓库内有人且光照低于闯值控制灯光打开,当烟雾浓度超过阈值则控制蜂鸣器报警,并且当检测到火焰的时候也会控制蜂鸣器报警。

STM32

二.仿真概述

1.  使用DHT11进行温湿度检测,光敏电阻模块进行光强检测,人体检测和火焰检测都是通过开关来获取开关量。按键设置参数阈值,但检测到温度低就加热,温度高就降温,检测到湿度过高就除湿,检测到光强低于阈值且检测到人就会开灯,检测火焰蜂鸣器报警。

STM32

2.按下DHT11的红色按钮实现温湿度的调节,显示端也会同步更改的温湿度数据。温度超限就会降温,温度低于阈值就会加热,湿度超限就会除湿。

STM32

3. 调节光敏电阻模块的滑动变阻器即可调节光强输入,检测到人且光强低于阈值就会开灯。

STM32

STM32

4. 检测到火焰就会蜂鸣器报警

STM32

三.程序设计

 

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

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分