YFROBOT创客社区

标题: Arduino入门教程—拓展实验篇八 温湿度监控报警器 [打印本页]

作者: AllBlue    时间: 2013-6-30 08:44
标题: Arduino入门教程—拓展实验篇八 温湿度监控报警器
本帖最后由 AllBlue 于 2013-8-29 16:17 编辑

温湿度监控报警器

现代人越来越注意室内环境的调节,本次实验就准备用一个DHT11 温湿度传感器做一个温湿度提醒器。

使用实验元件如下:

       UNO兼容板一块

       DHT11温湿度传感器

       led红色黄色各一

       5k电阻一个

       220欧电阻2个

       导线若干

下面我们介绍下DHT11元件:

DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。

传感器包括一个电阻式感湿元件和一个NTC 测温元件,并与一个高性能8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
DHT11 实物图(很显然产品的基本参数我们可以从图中看到):
[attach]420[/attach]

每个DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。

超小的体积、极低的功耗,信号传输距离可达20 米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
封装图如下:
[attach]421[/attach]
DHT11引脚说明:
[attach]425[/attach]

接口说明:建议连接线长度短于20 米时用5K 上拉电阻,大于20米时根据实际情况使用合适的上拉电阻;DHT11 的供电电压为3-5.5V。传感器上电后,要等待1s 以越过不稳定状态,在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。

下图为典型应用电路图:
[attach]422[/attach]
注意事项:

(1)避免结露情况下使用。

(2)上期保存条件:温度10-40℃,湿度60%以下。

(3)长时间暴露在太阳光下或强烈的紫外线辐射中,会使性能降低。

(4)焊接信息:手动焊接,在最高260℃的温度条件下接触时间须少于10 秒。

DHT11资料下载:

[attach]401[/attach]
元件就介绍到这里,下面我们看下实验电路图:
[attach]423[/attach]

电路中我们用到LED 红灯黄灯各一个,电阻220 欧一个,电阻5K 欧一个,DHT11 一个;将DHT11 的1 脚接+5V、2 脚接模拟口A0、3 脚悬空、4 脚接GND,5K 欧上拉电阻DHT11 的2 脚,另一头接5V;将黄灯红灯正极分别接数字口2 和3,负极分别通过220 欧限流电阻接GND。

DHT11库文件下载:

[attach]424[/attach]

在编写程序之前, 我们要将资料中的DHT11 扩展库文件DHT11.zip 文件解压到arduino 文件夹libraries 中,因为我们在程序中要调用它,解压好后我们再打开Arduino IDE ,编写程序;程序如下:

  1. /*
  2. DHT11温湿度报警器实验
  3. 室内温度与湿度有不适宜的点亮LED灯提示
  4. BY TSRobot
  5. */

  6. //调用DHT11扩展库
  7. #include <dht11.h>
  8. dht11 DHT11;
  9. #define DHT11PIN A0
  10. int H_Led = 2; //定义数字口2为湿度指示灯
  11. int T_Led = 3; //定义数字口3为温度指示灯
  12. void setup()
  13. {
  14. pinMode(H_Led,OUTPUT); //定义数字口H_Led为输出模式
  15. pinMode(T_Led,OUTPUT); //定义数字口T_Led为输出模式
  16. Serial.begin(9600);
  17. Serial.println("DHT11 Monitoring");
  18. Serial.print("\n");
  19. }
  20. void loop()
  21. {
  22. int val = DHT11.read(DHT11PIN);
  23. Serial.print("Read sensor: ");
  24. switch (val)
  25. {
  26. case DHTLIB_OK:
  27. Serial.println("OK");
  28. break;
  29. case DHTLIB_ERROR_CHECKSUM:
  30. Serial.println("Checksum error");
  31. break;
  32. case DHTLIB_ERROR_TIMEOUT:
  33. Serial.println("Time out error");
  34. break;
  35. default:
  36. Serial.println("Unknown error");
  37. break;
  38. }

  39. //输出湿度值,并判断是否适合室内湿度,如不适则亮灯提醒
  40. Serial.print("Humidity (%): ");
  41. Serial.println((float)DHT11.humidity);
  42. if((DHT11.humidity<=40)||(DHT11.humidity>=60))
  43. digitalWrite(H_Led,HIGH);
  44. else
  45. digitalWrite(H_Led,LOW);

  46. //输出温度值,并判断是否适合室内温度,如不适则亮灯提醒
  47. Serial.print("Temperature (oC): ");
  48. Serial.println((float)DHT11.temperature);
  49. if((DHT11.temperature<=18)||(DHT11.temperature>=25))
  50. digitalWrite(T_Led,HIGH);
  51. else
  52. digitalWrite(T_Led,LOW);
  53. delay(2000);
  54. }
复制代码

通过实验测定,最宜人的室内温湿度是:冬天温度为18 至25℃,湿度为30%至80%;夏天温度为23 至28℃,湿度为30%至60%;在此范围内感到舒适的人占95%以上。

在装有空调的室内,室温为19 至24℃,湿度为40%至50%时,人会感到最舒适。如果考虑到温、湿度对人思维活动的影响,最适宜的室温度应是18℃,湿度应是40%至60%,此时,人的精神状态好,思维最敏捷,工作效率高。所以程序中我们设定室内湿度范围40%~60% , 温度范围18℃~25℃。

实验效果:当湿度超出范围时,黄灯电亮,温度过高或过低是,红灯点亮;你也可以打开串口监视器,看看此时你所在环境的温湿度是多少。

上次教程我们做了个LCD1602 显示实验,其实,本次实验也可以用1602显示哦~~

将你的室内温湿度,显示到LCD1602上,实现实时监控吧~~~~


作者: tahoroom    时间: 2013-8-1 21:06
写得很详细,谢谢版主!
作者: YFRobot    时间: 2013-8-2 08:22
tahoroom 发表于 2013-8-1 21:06
写得很详细,谢谢版主!

希望大家都能参与进来
作者: xin8236    时间: 2013-10-13 20:53
按照图片连接显示Time out error。
参考电路图,将图片中DHT11的蓝色数据线插入到5k电阻上面的孔好用了.
作者: 彩色大冰棍丶    时间: 2015-4-29 10:52
谢谢楼主。很好
作者: innovater    时间: 2017-2-9 20:15
感谢分享,学习了
作者: lxulxu555    时间: 2018-5-27 12:18
大佬 我是新手小白。这个LED屏幕显示 要怎么敲代码连软件啊  
作者: tiantianyouyou    时间: 2019-5-2 07:57
室内温湿度,显示到LCD1602上,实现实时监控
作者: tiantianyouyou    时间: 2019-5-2 08:01
Arduino入门教程—拓展实验篇八 温湿度监控报警器
作者: tiantianyouyou    时间: 2019-5-2 08:04
不错不错,学习一下




欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) Powered by Discuz! X3.1