功能介绍

温湿度传感器有很多,本模块采用的传感器是DHT11。DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。传感器采用单线制串行数据输出方式,和Arduino进行数据通讯时需要特定的时序才能完成。湿度传感器是非密封性的,为保护测量的准确度和稳定性,应尽量避免在酸性、碱性及含有机溶剂的空气中使用,也避免在粉尘较大的环境中使用。本模块的工作电压是3.3V-5V。其测量精度湿度是±5%RH, 温度是±2℃,测量量程湿度是5-95%RH, 温度是0~+50℃。在每次读取数据时,读取得到的数据时上一此传感器转换的数据,需要获得实时数据,需要联系读取2次,但是不建议连续多次读取传感器,读取传感器数据的时间间隔大于2S即可获得准确的数据。

3.16 温湿度检测传感器(DHT11) - 图13.16 温湿度检测传感器(DHT11) - 图2
图3.15.1 DHT11温湿度传感器模块实物图

接线说明

Arduino 温湿度检测传感器 说明
VCC/+/5V VCC/+/5V 供电引脚
GND/G/- GND/G/- 电源地线
D2 D/S/OUT 接Arduino的任意数字引脚都可以,模块数字量输出
本模块的信号线和Arduino的通讯是需要通讯协议的,所有在采用IDE代码编程时需要调用到相应的库文件。

使用说明:

1.参照接线说了连接好电路,注意供电引脚必须连接正确;
2.(a)Arduino IDE代码编程
采用代码编程时,需要在IDE中下载DHT11库文件使用。在IDE中打开“库管理器”,搜索“DHT11”,在此,推荐采用“SimpleDHT”库。安装完库文件后在“文件”—>“示例”中找到第三方库部分,选择“SimpleDHT”—>“DHT11Default”打开,打开后得到参考程序中的示例程序代码,修改连接传感器的引脚后上传程序,上传完成后打开串口监视器查看实际测量得到的温度和湿度数据。具体的程序代码解释请参看参考程序部分的注释。
2.(b)Mixly编程
采用Mixly图形化编程方式时,使用DHT11传感器检测温湿度将会变得比较简单,因为Mixly里已经写好了DHT的程序模块库,我们只需要直接调用就好,具体请参看参考程序部分。

参考程序:

Arduino IDE参考程序

  1. #include <SimpleDHT.h> //引用DHT的库文件
  2. // for DHT11, 此部分是注释,说明DHT11的引脚
  3. // VCC: 5V or 3V
  4. // GND: GND
  5. // DATA: 2
  6. int pinDHT11 = 2; //设置DHT11传感器连接到Arduino的引脚号,此处连接到2号数字接口
  7. SimpleDHT11 dht11(pinDHT11); //创建一个DHT11测温
  8. void setup() {
  9. Serial.begin(9600); //设置串口波特率
  10. }
  11. void loop() {
  12. // 串口打印两行字符,在实际项目中可以删除
  13. Serial.println("=================================");
  14. Serial.println("Sample DHT11...");
  15. byte temperature = 0; //创建一个变量存储温度数据
  16. byte humidity = 0; //创建一个变量存储湿度数据
  17. int err = SimpleDHTErrSuccess; //创建一个变量存储错误信息
  18. //此处的if语句是用于识别传感器是否连接,实际使用时自行决定是否保留
  19. if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
  20. Serial.print("Read DHT11 failed, err=");
  21. Serial.print(SimpleDHTErrCode(err));
  22. Serial.print(",");
  23. Serial.println(SimpleDHTErrDuration(err));
  24. delay(1000);
  25. return;
  26. }
  27. //以下将是发送实际检测到的温湿度数据到串口监视器
  28. Serial.print("Sample OK: ");
  29. Serial.print((int)temperature); Serial.print(" *C, ");
  30. Serial.print((int)humidity); Serial.println(" H");
  31. delay(1500);//降低检测速度,实现2S左右发送一次数据
  32. }

Mixly参考程序

3.16 温湿度检测传感器(DHT11) - 图3