首页

Arduino上的DHT11湿度传感器

DHT11是一个湿度和温度传感器,产生校准数字输出。DHT11可与Arduino、树莓派等任意微控制器进行接口,获得即时结果。DHT11是一款低成本的湿度和温度传感器,具有高可靠性和长期稳定性。

在这个项目中,我们将搭建一个小电路来连接Arduino和DHT11温湿度传感器。DTH11传感器与Arduino连接的主要应用之一是天气监测。

在本文中,我们已经了解了湿度、相对湿度、湿度传感器及其类型。

线路图

下面的电路图显示了实施这个项目所需的所有必要连接。

Arduino上的DHT11湿度传感器电路图

组件的要求

  • Arduino UNO [在这里买
  • DHT11温湿度传感器
  • 试验板(或perfboard)
  • 电力供应
  • 16 × 2液晶显示器[在这里买
  • 10 k欧姆电位计
  • 5K欧姆电阻(1/4 W)
  • 连接电线

电路描述

我们将看到DHT11与Arduino接口的电路设计。DHT11湿度和温度传感器有两种变体:只有传感器或模块。

主要的区别是该模块由上拉电阻组成,也可能包括一个LED电源。我们已经在这个项目中使用了一个模块,如果你希望使用传感器本身,你需要连接一个5K Ω上拉电阻另外。

在设计时,将DHT11 Sensor的数据pin与Arduino的pin 11连接。结果显示采用16 × 2的液晶显示器。LCD的控制引脚RS和E (LCD上的引脚4和6)与Arduino的引脚4和5相连。LCD的数据引脚即D4到D7 (LCD的引脚11到14)连接到LCD的引脚0到3。

注意:为了方便连接,我们已经将DHT11传感器模块连接在Arduino的ICSP引脚上,因为它提供了相邻的VCC、DATA和GND引脚。这种类型的连接是不必要的,你可以将传感器的数据引脚连接到正常的数字I/O引脚。

组件描述

DHT11温湿度传感器

DHT11是DHTXX系列湿度传感器的一部分。本系列的另一款传感器是DHT22。这两个传感器都是相对湿度(RH)传感器。因此,他们将同时测量湿度和温度。DHT11湿度传感器虽然价格便宜,速度慢,但在爱好者和初学者中非常受欢迎。

DHT11传感器

DHT11温湿度传感器由3个主要部件组成。一个电阻式湿度传感器,一个NTC(负温度系数)热敏电阻(测量温度)和一个8位微控制器,转换两个传感器的模拟信号并发出单数字信号。

这个数字信号可以被任何微控制器或微处理器读取,以便进一步分析。

DHT11引出线

DHT11湿度传感器由4个引脚组成:VCC、Data Out、Not Connected (NC)、GND。VCC引脚的电压范围为3.5V至5.5V。5V电源就可以了。数据输出引脚的数据是串行数字数据。

下图为DHT11温湿度传感器的典型应用电路。DHT11湿度传感器可测量相对湿度(Relative humidity, RH)的20 ~ 90%,温度为0 ~ 500C.传感器的采样周期为1秒,即
DHT11应用电路 所有的DHT11传感器都在实验室精确校准,结果存储在内存中。任何微控制器如Arduino都可以与DHT11传感器建立单线通信。

此外,电缆的长度可以长达20米。来自传感器的数据由相对湿度(RH)和温度的整数和小数部分组成。

DHT11传感器的数据为40位,格式如下:

8位数据用于整数RH值,8位数据用于十进制RH值,8位数据用于整数温度值,8位数据用于整数温度值,8位数据用于校验和。

例子

考虑从DHT11传感器接收到的数据是

00100101 00000000 00011001 00000000 00111110。

该数据可以根据上述结构进行如下分离DHT11传感器数据

为了检查接收到的数据是否正确,我们需要执行一个小的计算。将RH和Temperature的所有整数和小数相加,检查和是否等于校验值,即最后8位数据。

00100101 + 00000000 + 00011001 + 00000000 = 00111110

该值与校验和相同,因此接收到的数据是有效的。现在要获得RH和Temperature值,只需将二进制数据转换为十进制数据。

RH = 00100101的小数= 37%

温度= 00011001的十进制数= 250C

项目工作

利用Arduino UNO和DHT11温湿度传感器搭建了一个简单的项目,将周围环境的湿度和温度显示在液晶显示屏上。

在建立连接后,我们不需要做任何事情,因为程序会处理一切。虽然DHT11模块有一个名为“DHT”的特殊库,但我们没有使用它。如果要使用此库,需要单独下载此库并添加到Arduino现有库中。

程序是根据数据表中提供的数据时序图编写的。程序会使Arduino自动读取传感器的数据,并在LCD显示屏上显示为湿度和温度。

代码

应用程序

  • DHT11相对湿度和温度传感器可用于许多应用,如:
  • 暖通、通风和空调系统
  • 气象站
  • 测量湿度的医疗设备
  • 家庭自动化系统
  • 汽车和其他天气控制应用

构建和输出视频

推荐阅读:

27岁的反应

    1. 上面,但如果你看不到它,我为你复制了下面:(我刚刚运行它-工作棒!)

      # include
      LiquidCrystal lcd(4,5,0,1,2,3);
      字节degree_symbol [8] =

      0 b00111,
      0 b00101,
      0 b00111,
      0 b00000,
      0 b00000,
      0 b00000,
      0 b00000,
      0 b00000
      };
      int门= 11;
      Volatile unsigned长持续时间=0;
      unsigned char [5];
      unsigned int [40];
      无符号字符值= 0;
      无符号的答案= 0;
      int z = 0;
      int b = 1;
      无效的设置()

      液晶显示器。开始(16日2);
      液晶显示器。打印(" Temp = ");
      lcd.setCursor (0,1);
      液晶显示器。打印("湿度= ");
      液晶显示器。degree_symbol createChar(1日);
      lcd.setCursor (9,0);
      lcd.write (1);
      lcd.print(“C”);
      lcd.setCursor (13 - 1);
      lcd.print(“%”);

      无效循环()

      延迟(1000);
      而(1)

      延迟(1000);
      pinMode(门、输出);
      digitalWrite(门、低);
      延迟(20);
      digitalWrite(门、高);
      //默认情况下,由于内部拉起,它将变为高
      / / delayMicroseconds (40);

      时间= pulseIn(门、低);
      如果(持续时间= 72)

      而(1)

      时间= pulseIn(门、高);

      如果(持续时间= 20){
      值= 0;}

      Else if(duration = 65){
      值= 1;}

      else if (z = = 40) {
      打破;}

      我(z / 8) | =价值< < (7 - (z % 8));
      j [z] =价值;
      z + +;


      回答=我[0]+ [1]+ [2]+ [3];

      如果回答= =我[4]& &答案! = 0)

      lcd.setCursor (7,0);
      lcd.print(我[2]);
      lcd.setCursor (11 - 1);
      lcd.print(我[0]);

      z = 0;
      我[0]=[1][2]= =我[3]= [4]= 0;

    1. 你好,
      我们没有使用DHT11湿度传感器的任何库。没有库的代码被上传。


  1. 我上传没有错误,你的代码和显示是工作,但程序不是开机后
    没有传感器数据。
    你能告诉我出了什么问题吗?
    我安装第二个DHT11新的和相同的没有数据。
    谢谢斯坦

  2. 谢谢你的这个项目。我跟踪了所有线路,到目前为止上传你的代码没有错误。但它只显示湿度= %,温度=(符号度)C,没有值。

    我只是arduino的初学者。任何建议吗?

    1. 本文对所有内容都进行了非常清楚的说明。在清晰度方面,这是我见过的最好的作品之一。所有这些问题在文章中都有明确的答案,所以请再读一遍。(注:我也是Arduino的新手,但我可以说,这篇文章是你能找到的任何东西中最清楚的。)

  3. 兄弟。请出示面包板的连接。一些电线以前是连接的。我去买东西之前想看看。

留下一个回复

你的电邮地址不会被公布。

Electronicshub图标
Baidu
map