11936浏览
查看: 11936|回复: 6

温湿度烟雾报警系统

[复制链接]
温湿度烟雾报警系统图1
这个系统采用DC5V工作电压,该传感器可测量实时温度湿度及烟雾量,通过液晶显示器显示实时数据,并能实现危险温湿度情况下的声光报警,是一个制作简单,操作方便的实时温度湿度烟雾监测报警器。


功能:      
1)接通电源,液晶显示器显示温度,湿度,及烟雾量。   
2)按下1号开关,液晶显器显示第二页:危险温度设定页,此时按下2号开关一次,显示的危险温度自加一次,若实际温度高于所设定的危险温度,则绿色led亮起,同时蜂鸣器报警,当实际温度低于危险温度时,led灯熄灭,蜂鸣器停止报警。   
3)当液晶显示器停留在第二页是,再次按下1号开关,液晶显示第三页:危险湿度设定页,此时按下3号开关,显示的危险湿度自加一次,若实际湿度高于所设定的危险湿度,则红色led亮起,同时蜂鸣器报警,当实际湿度低于危险湿度时,led灯熄灭,蜂鸣器停止报警

所需要的器件有:ICSTATION MEGA开发板及数据线一套,DHT11温度湿度传感器一个,MQ-2烟雾传感器一个,LCD1602液晶显示器一块 ,LED发光二极管两个,四脚开关三个,1千欧电阻三个 ,电位器一个 ,有源蜂鸣器一个,跳线36根 ,3P杜邦线四根  ,+5V电源。
相关模块资料:
温度湿度传感:http://www.icstation.com/product_info.php?products_id=1398#.U10FDXDGfic
有源蜂鸣器模块:http://www.icstation.com/product ... d=2512#.U0I8buNy03m
烟雾传感器模块:http://www.icstation.com/product ... .U10GBHDGficLCD1602
液晶显示屏:http://www.icstation.com/product ... d=1419#.U10GcXDGfic


硬件原理图:具体硬件原理设计图如图所示。
温湿度烟雾报警系统图2温湿度烟雾报警系统图3
硬件制作图文教程:
1)从ICSTATION MEGA开发板中,将+5v电源和GND引到面包板中,红色作为电源线,黑色作为底线,如下图所示。
温湿度烟雾报警系统图4
2)将lcd1602液晶显示器与电位器插入面包板中,并将其与ICSTATION MEGA开发板,电源及地相连,如下图所示。
温湿度烟雾报警系统图5
3)将DHT11温度湿度传感器插入面包板中,并将其与ICSTATION MEGA开发板,电源及地相连,如下图所示。
温湿度烟雾报警系统图6
4)将MQ-2烟雾传感器与ICSTATION MEGA开发板,电源及地相连,如下图所示。
温湿度烟雾报警系统图7
5)将有源蜂鸣器插入面包板中,并将其与ICSTATION MEGA开发板,电源及地相连,如下图所示。
温湿度烟雾报警系统图8
6)将开关、电阻插入面包板中,并将其与ICSTATION MEGA开发板,电源及地相连,如下图所示。
温湿度烟雾报警系统图9
7)将led发光二极管插入面包板中,并将其与ICSTATION MEGA开发板,电源及地相连,如下图所示。
温湿度烟雾报警系统图10
实验现象:    首先接通电源,液晶显示器显示实时温度湿度及烟雾量首页,按下一号键,进入危险温度设定页,按下二号键,危险温度自加一。再次按下一号键,进入危险湿度设定页,按下三号键,危险湿度自加一。再次按下一号键,回到首页,此时用手指触摸dht11温湿传感器,可观察到温度湿度缓慢增加(因为手指的温度和湿度大于空气中的温度和湿度),当温度增加到大于我们所设定的危险温度时,绿色led亮起同时蜂鸣器报警,当湿度增加到大于我们所设定的危险温度时,红色led亮起同时蜂鸣器报警。
代码如下:
  1. #include<LiquidCrystal.h>
  2. LiquidCrystal lcd(12,11,5,4,3,2);
  3. int temp;
  4. int humi;
  5. int tol;
  6. int j;
  7. int H=50;
  8. int T=25;
  9. int B=1;
  10. int flag=0;
  11. int led=7;
  12. int LED=9;
  13. int BU=2;
  14. int BUTTON=3;
  15. int FMQ=13;
  16. int fmq=10;
  17. unsigned int loopCnt;
  18. int chr[40] = {0};
  19. unsigned long time;
  20. #define pin 8
  21. void setup()
  22. {
  23.   pinMode(fmq,OUTPUT);
  24.   pinMode(FMQ,OUTPUT);
  25.   pinMode(LED,OUTPUT);
  26.   pinMode(led,OUTPUT);
  27.   Serial.begin(9600);
  28. }
  29. void loop()
  30. { HH();
  31.   TT();
  32.   keyScan();
  33.   bgn:
  34.   delay(200);
  35.   pinMode(pin,OUTPUT);
  36.   digitalWrite(pin,LOW);
  37.   delay(20);
  38.   digitalWrite(pin,HIGH);
  39.   delayMicroseconds(40);
  40.   digitalWrite(pin,LOW);
  41.   pinMode(pin,INPUT);
  42.   loopCnt=10000;
  43.   while(digitalRead(pin) != HIGH)
  44.   {
  45.     if(loopCnt-- == 0)
  46.     {
  47.       Serial.println("HIGH");
  48.       goto bgn;
  49.     }
  50.   }
  51.    
  52.   loopCnt=30000;
  53.   while(digitalRead(pin) != LOW)
  54.   {
  55.     if(loopCnt-- == 0)
  56.     {
  57.       Serial.println("LOW");
  58.       goto bgn;
  59.     }
  60.   }
  61.   
  62.     for(int i=0;i<40;i++)
  63.   {
  64.     while(digitalRead(pin) == LOW)
  65.     {}
  66.     time = micros();
  67.     while(digitalRead(pin) == HIGH)
  68.     {}
  69.     if (micros() - time >50)
  70.     {
  71.       chr[i]=1;
  72.     }else
  73.     {
  74.       chr[i]=0;
  75.     }
  76.   }
  77.    
  78. humi=chr[0]*128+chr[1]*64+chr[2]*32+chr[3]*16+chr[4]*8+chr[5]*4+chr[6]*2+chr[7];
  79.    
  80. temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[21]*4+chr[22]*2+chr[23];
  81. tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+chr[39];
  82.   Serial.print("temp:");
  83.   Serial.println(temp);
  84.   Serial.print("humi:");
  85.   Serial.println(humi);
  86.   Serial.print("tol:");
  87.   Serial.println(tol);
  88. if(temp>T)
  89. {
  90.    digitalWrite(LED,HIGH);
  91.    digitalWrite(FMQ,LOW);
  92.   }else{
  93. digitalWrite(LED,LOW);
  94. digitalWrite(FMQ,HIGH);
  95. }
  96. if(humi>H)
  97. {
  98.    digitalWrite(led,HIGH);
  99.    digitalWrite(fmq,LOW);
  100.   }else{
  101. digitalWrite(led,LOW);
  102. digitalWrite(fmq,HIGH);
  103. }
  104.   
  105. int val;
  106.     val=analogRead(0);
  107.     Serial.print("smo:");
  108.     Serial.println(val,DEC);
  109.     delay(100);
  110. if(flag==0)
  111. {
  112.   lcd.begin(16,2);
  113.   lcd.setCursor(0,0);
  114.   lcd.print("TEMP:  C");
  115.   lcd.setCursor(9,0);
  116.   lcd.print("SMO:");
  117.   lcd.setCursor(0,1);
  118.   lcd.print("HUMI:  %");
  119.   lcd.setCursor(9,1);
  120.   //lcd.print("BEP:");
  121.   lcd.setCursor(5,0);
  122.   lcd.print(temp);  
  123.   lcd.setCursor(5,1);
  124.   lcd.print(humi);
  125.   lcd.setCursor(13,0);
  126.   lcd.print(val,DEC);
  127. }
  128. if(flag==1)
  129. {  
  130.   lcd.begin(16,2);
  131.   lcd.print("ALARM TEMP:");
  132.   lcd.setCursor(11,0);
  133.   lcd.print(T);
  134. }
  135. if(flag==2)
  136. {  
  137.   lcd.begin(16,2);
  138.   lcd.print("ALARM  HUMI:");
  139.   lcd.setCursor(12,0);
  140.   lcd.print(H);
  141. }
  142. }
  143. void keyScan()
  144. {
  145.   if(analogRead(BUTTON)>600)
  146.    {
  147.      delay(20);
  148.      if(analogRead(BUTTON)>600)
  149.      {
  150.        flag++;
  151.        if(flag>=3)
  152.          flag=0;
  153.        while(analogRead(BUTTON)>600);
  154.      }
  155.    }
  156. }
  157. void HH()
  158. {
  159.   if(analogRead(B)>600)
  160.    {
  161.      delay(20);
  162.      if(analogRead(B)>600)
  163.      {
  164.        H++;
  165.        if(H>=61)
  166.          H=40;
  167.        while(analogRead(B)>600);
  168.      }
  169.    }
  170. }
  171. void TT()
  172. {
  173.   if(analogRead(BU)>600)
  174.    {
  175.      delay(20);
  176.      if(analogRead(BU)>600)
  177.      {
  178.        T++;
  179.        if(T>=31)
  180.          T=20;
  181.        while(analogRead(BU)>600);
  182.      }
  183.    }
  184. }
复制代码



丄帝De咗臂  高级技匠
 楼主|

发表于 2015-5-30 22:13:38

用到的器材我都有,但是现在没时间做,先留下来,后面有时间了再照着教程做:lol
回复

使用道具 举报

hnyzcj  版主

发表于 2015-5-31 09:39:19

这个教程不错,学习了。张璐向你致敬!
回复

使用道具 举报

丄帝De咗臂  高级技匠
 楼主|

发表于 2015-5-31 10:35:23

hnyzcj 发表于 2015-5-31 09:39
这个教程不错,学习了。张璐向你致敬!

又不是我做的,就不要致敬我了哈。。。不过我一直没真正用过mega做什么,真想抽点时间做一做
回复

使用道具 举报

hnyzcj  版主

发表于 2015-5-31 11:25:48

丄帝De咗臂 发表于 2015-5-31 10:35
又不是我做的,就不要致敬我了哈。。。不过我一直没真正用过mega做什么,真想抽点时间做一做 ...

哈哈,是你转的。我有这些东西,我可以做了,先谢谢了
回复

使用道具 举报

丄帝De咗臂  高级技匠
 楼主|

发表于 2015-5-31 11:56:54

hnyzcj 发表于 2015-5-31 11:25
哈哈,是你转的。我有这些东西,我可以做了,先谢谢了

我也有,不过我的mega没真正用起来,当UNO使得:L
回复

使用道具 举报

hnyzcj  版主

发表于 2015-5-31 13:05:24

丄帝De咗臂 发表于 2015-5-31 11:56
我也有,不过我的mega没真正用起来,当UNO使得

我用过,哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail