`
xitongyunwei
  • 浏览: 937993 次
文章分类
社区版块
存档分类
最新评论

使用Arduino与DHT11监测温湿度

 
阅读更多

【原文】http://blog.csdn.net/micaroo/article/details/7239294


这两天开始一一测试之前买过的一些传感器,首先挑选的是DHT11,这个传感器用于粗略估计温湿度。

硬件连接很简单,只需要将DHT11传感器和数字针脚4相连,这里我用到了传感器扩展板,直接连在扩展板上。材料都是用的奥松机器人基地的。

第一件麻烦事儿就是DHT11的库文件,中文材料是木有滴,我到了官网,终于把一个可以用的库文件找出来了。这个库文件还可以测DHT22。如下两个文件,放在DHT文件夹中,然后放到ardunio的库文件夹。

dht.cpp

  1. //
  2. //FILE:dht.cpp
  3. //VERSION:0.1.01
  4. //PURPOSE:DHTTemperature&HumiditySensorlibraryforArduino
  5. //
  6. //DATASHEET:
  7. //
  8. //HISTORY:
  9. //0.1.01addedsupportforArduino1.0,fixedtypos(31/12/2011)
  10. //0.1.0byRobTillaart(01/04/2011)
  11. //inspiredbyDHT11library
  12. //
  13. #include"dht.h"
  14. #defineTIMEOUT10000
  15. /////////////////////////////////////////////////////
  16. //
  17. //PUBLIC
  18. //
  19. //returnvalues:
  20. //0:OK
  21. //-1:checksumerror
  22. //-2:timeout
  23. intdht::read11(uint8_tpin)
  24. {
  25. //READVALUES
  26. intrv=read(pin);
  27. if(rv!=0)returnrv;
  28. //CONVERTANDSTORE
  29. humidity=bits[0];//bit[1]==0;
  30. temperature=bits[2];//bits[3]==0;
  31. //TESTCHECKSUM
  32. uint8_tsum=bits[0]+bits[2];//bits[1]&&bits[3]both0
  33. if(bits[4]!=sum)return-1;
  34. return0;
  35. }
  36. //returnvalues:
  37. //0:OK
  38. //-1:checksumerror
  39. //-2:timeout
  40. intdht::read22(uint8_tpin)
  41. {
  42. //READVALUES
  43. intrv=read(pin);
  44. if(rv!=0)returnrv;
  45. //CONVERTANDSTORE
  46. humidity=word(bits[0],bits[1])*0.1;
  47. intsign=1;
  48. if(bits[2]&0x80)//negativetemperature
  49. {
  50. bits[2]=bits[2]&0x7F;
  51. sign=-1;
  52. }
  53. temperature=sign*word(bits[2],bits[3])*0.1;
  54. //TESTCHECKSUM
  55. uint8_tsum=bits[0]+bits[1]+bits[2]+bits[3];
  56. if(bits[4]!=sum)return-1;
  57. return0;
  58. }
  59. /////////////////////////////////////////////////////
  60. //
  61. //PRIVATE
  62. //
  63. //returnvalues:
  64. //0:OK
  65. //-2:timeout
  66. intdht::read(uint8_tpin)
  67. {
  68. //INITBUFFERVARTORECEIVEDATA
  69. uint8_tcnt=7;
  70. uint8_tidx=0;
  71. //EMPTYBUFFER
  72. for(inti=0;i<5;i++)bits[i]=0;
  73. //REQUESTSAMPLE
  74. pinMode(pin,OUTPUT);
  75. digitalWrite(pin,LOW);
  76. delay(20);
  77. digitalWrite(pin,HIGH);
  78. delayMicroseconds(40);
  79. pinMode(pin,INPUT);
  80. //GETACKNOWLEDGEorTIMEOUT
  81. unsignedintloopCnt=TIMEOUT;
  82. while(digitalRead(pin)==LOW)
  83. if(loopCnt--==0)return-2;
  84. loopCnt=TIMEOUT;
  85. while(digitalRead(pin)==HIGH)
  86. if(loopCnt--==0)return-2;
  87. //READTHEOUTPUT-40BITS=>5BYTES
  88. for(inti=0;i<40;i++)
  89. {
  90. loopCnt=TIMEOUT;
  91. while(digitalRead(pin)==LOW)
  92. if(loopCnt--==0)return-2;
  93. unsignedlongt=micros();
  94. loopCnt=TIMEOUT;
  95. while(digitalRead(pin)==HIGH)
  96. if(loopCnt--==0)return-2;
  97. if((micros()-t)>40)bits[idx]|=(1<<cnt);
  98. if(cnt==0)//nextbyte?
  99. {
  100. cnt=7;
  101. idx++;
  102. }
  103. elsecnt--;
  104. }
  105. return0;
  106. }
  107. //
  108. //ENDOFFILE
  109. //

dht.h

  1. //
  2. //FILE:dht.h
  3. //VERSION:0.1.01
  4. //PURPOSE:DHTTemperature&HumiditySensorlibraryforArduino
  5. //
  6. //URL:http://arduino.cc/playground/Main/DHTLib
  7. //
  8. //HISTORY:
  9. //seedht.cppfile
  10. //
  11. #ifndefdht_h
  12. #definedht_h
  13. #ifARDUINO<100
  14. #include<WProgram.h>
  15. #else
  16. #include<Arduino.h>
  17. #endif
  18. #defineDHT_LIB_VERSION"0.1.01"
  19. classdht
  20. {
  21. public:
  22. intread11(uint8_tpin);
  23. intread22(uint8_tpin);
  24. doublehumidity;
  25. doubletemperature;
  26. private:
  27. uint8_tbits[5];//buffertoreceivedata
  28. intread(uint8_tpin);
  29. };
  30. #endif
  31. //
  32. //ENDOFFILE
  33. //


库文件搞定之后,可以开始写ardunio程序了。这里因为只有DHT11,所以程序就不去测试22了。引入dht的库,然后编写如下代码:

  1. //
  2. //FILE:dht_test.pde
  3. //PURPOSE:DHTlibrarytestsketchforArduino
  4. //
  5. #include<dht.h>
  6. dhtDHT;
  7. #defineDHT11_PIN4//putthesensorinthedigitalpin4
  8. voidsetup()
  9. {
  10. Serial.begin(115200);
  11. Serial.println("DHTTESTPROGRAM");
  12. Serial.print("LIBRARYVERSION:");
  13. Serial.println(DHT_LIB_VERSION);
  14. Serial.println();
  15. Serial.println("Type,\tstatus,\tHumidity(%),\tTemperature(C)");
  16. }
  17. voidloop()
  18. {
  19. //READDATA
  20. Serial.print("DHT11,\t");
  21. intchk=DHT.read11(DHT11_PIN);
  22. switch(chk)
  23. {
  24. case0:Serial.print("OK,\t");break;
  25. case-1:Serial.print("Checksumerror,\t");break;
  26. case-2:Serial.print("Timeouterror,\t");break;
  27. default:Serial.print("Unknownerror,\t");break;
  28. }
  29. //DISPLATDATA
  30. Serial.print(DHT.humidity,1);
  31. Serial.print(",\t");
  32. Serial.println(DHT.temperature,1);
  33. delay(1000);
  34. }
  35. //
  36. //ENDOFFILE
  37. //


如果在控制台,出现了time out error,那么就是没读到数据,可能是引脚接错了。记得,我现在接的是数字引脚4。结果:


分享到:
评论

相关推荐

    用Arduino读取DHT11温湿度传感器

    用Arduino读取DHT11温湿度传感器

    使用Arduino和DHT11传感器来创建一个简单的温湿度监测器

    使用Arduino和DHT11传感器来创建一个简单的温湿度监测器

    基于Arduino的温湿度监测系统的设计与实现程序

    本项目旨在设计和实现一个基于Arduino的温湿度监测系统,该系统可以实时监测温湿度数据,并将其显示在LCD屏幕上,同时也可以通过蓝牙与手机进行实时通信和数据传输。 二、硬件组件 本系统使用了以下硬件组件: * ...

    基于Arduino的显示测量环境数据设计(完整源代码以及课程设计报告书)

    设计实现一种环境检测仪,以arduino系列单片机为核心,集成温湿度传感器、超声波测距传感器、烟雾传感器、蓝牙HC-05模块及其他器件,采用C/C++语言编程实现在从机上显示测量环境数据的功能。 硬件部分:以arduino...

    STM32+ DHT11+标准库代码

    DHT11传感器模块通常被用于测量室内环境的温湿度,在智能家居、气象监测等领域得到广泛应用。 DHT11传感器优势: DHT11传感器模块有以下几个优势: 1. 精度高:DHT11传感器模块可以精确地测量环境的温度和湿度,其...

    无线温湿度监测系统说明书

    温湿度监控是环境监测的重要组成部分,广泛应用于食品行业、温室大棚、制造业生产车间、烟草行业等,该设备分为四分部,分别是温湿度传感器、无线数据传输模块 、温湿度源数据接口以及电子看板,该设备全程自动采集温...

    labview温湿度报警器

    连接DHT11传感器与Arduino Uno板,连接Arduino Uno板与电脑,实现Arduino Uno板与LabVIEW的数据通讯;在Arduino中编程,设置命令字,当接受到命令值字时,发送温湿度数据;LabVIEW实时监测环境温湿度。

    基于树莓派3b+Arduino实现物联网家庭环境监控系统源码(人脸识别门禁+温湿度监测+灯光控制+语音播报等)+项目说明.7z

    基于树莓派3b+Arduino实现物联网家庭环境监控系统源码(脸识别门禁+温湿度监测+灯光控制+语音播报+火灾报警)+项目说明.7z 带系统架构图 【硬件清单】 人脸识别部分: 树莓派3b tf卡16G以上 树莓派CSI摄像头500万像素...

    基于Arduino的电焊机智能监测系统设计.pdf

    该论文设计了一种基于Arduino Mega 2560的电焊机智能监测系统,旨在监测电焊机工作时产生的有害气体及工作环境温湿度,保障工作人员的身体健康。该系统采用MQ135气体传感器、PM2.5传感器和DHT11温湿度传感器模块对...

    dht11_wechat.ino

    ESP8266连接DHT11收集数据上传微信小程序实现实时温湿度监测arduino端代码

    YL-47 dht11 资料.rar

    DHT11是一款常用的温湿度传感器,由Dallas Semiconductor公司生产。它具有数字输出、低功耗和高精度等特点,广泛应用于各种环境监测和自动控制系统中。 DHT11传感器内部集成了温度和湿度的检测元件,能够同时测量...

    将Arduino与Node-RED接口以监控温度-电路方案

    将Arduino与Node-RED接口以监控网页上的温度和湿度。 硬件部件 Arduino UNO × 1个 DHT11温湿度传感器(4针) × 1个 软件应用程序和在线服务 Arduino IDE ...我们之前将DHT11与Arduino连接以构建IOT气象站。

    基于Arduino和Labview的远程智能农业监测系统.pdf

    4. DHT11数字温/湿度传感器:一种含有已校准数字信号输出的温湿度复合传感器,能够采集温度和湿度数据。 5. BH1750FVI光照传感器:一种光照强度传感器,能够采集光照强度数据。 6. 土壤湿度传感器:一种土壤湿度...

    基于物联网技术的温室大棚监测系统研究.pdf

    该系统采用物联网技术、Wi-Fi技术、DHT11数字温湿度传感器、光照传感器BH1750FVI和土壤湿度传感器,以Arduino Uno微处理器和Web服务器为平台设计出远程温室大棚实时监测系统。 系统的设计主要包括以下几个部分:第...

    基于Arduino的智能家居控制系统设计.pdf

    4. 传感器技术的应用:使用 DHT11 数字温湿度传感器、火焰传感器和人体红外传感器等传感器技术,实现了对家居环境的实时监测。 5. 数据处理和分析技术的应用:使用数据处理和分析技术,实现了对家居环境的实时监测和...

    温室大棚智能监测系统.pdf

    该系统基于嵌入式系统设计方法,采用 Arduino UNO 微处理器作为系统的主控芯片,使用温湿度传感器DHT11、光照传感器 BH1750FVI 和土壤湿度传感器作为外界环境监测模块,使用网络模块 W5100 将数据传送到用 PC 机搭建...

    使用Arduino的IoT无线气象站-电路方案

    DHT11温湿度传感器(4针) × 1个 Seeed Grove-气压计传感器(BMP280)× 1个 软件应用程序和在线服务 ThingSpeak API Arduino IDE 全球变暖导致了不可预测的气候;世界各地的研究人员正在使用气象站来观察记录并...

    一种基于物联网的智能家居系统设计.pdf

    DHT11温湿度传感器是一款低成本、高精度的温湿度传感器,能够监测家居环境中的温湿度。 软件开发 软件开发是智能家居系统中的关键步骤之一。本文主要使用Python语言进行软件开发,利用Raspberry Pi和Arduino的SDK...

    基于ESP8266设计的家庭灯光与火情智能监测系统-(毕设/课设/竞赛/实训/项目开发)-包含源码、答辩PPT、伦纹、演示视频

    主要模块如HC-SR501人体红外传感器模块、光敏电阻传感器模块、火焰传感器模块、LD3320语音识别模块、DHT11温湿度传感器模块等。使用Arduino开发软件进行烧录程序,以实现家庭环境的智能化控制。资源包含源码及论文...

    基于Arduino的厨房空气质量监测设备-电路方案

    DHT11温湿度传感器(3针)× 1 蜂鸣器× 1 Siren传感器,12VDC× 1 Espressif ESP8266 ESP-01× 1 跳线(通用)× 1 Adafruit标准LCD - 16x2白色蓝色× 1 继电器(通用)× 1 DC-DC降压(降压)稳压器,可调节× 2 ...

Global site tag (gtag.js) - Google Analytics