看了这篇教程,包你学会怎么连接Arduino和DHT22温度湿度传感器的电路,使用DHT库读取传感器的数据。
DHT库还可以与其他几个DHT传感器一起使用,如DHT22、DHT21和DHT11等,这也是一个功能强大,使用方便的库。
设备清单
必备设备
- Arduino Uno
- 面包板
- 面包板线
- DHT22湿度传感器
- 10k欧姆电阻
DHT22湿度和温度传感器
DHT22温湿度传感器有很多优点,让我选择它。
首先它体积小,价格便宜
DHT22具有较长的传输距离,电缆长度可以达到20米。这个距离使得该传感器非常适用于的Arduino处于中心位置的项目。
该传感器是数字式的,因此不需要与Arduino的模拟引脚打交道。数字化也使得DHT22在较长的距离内不容易受到电噪声的影响。
该传感器唯一的缺点之一是它的轮询率相当慢。只能每隔两秒从湿度传感器中检索一次数据。
要利用DHT22与Arduino一起使用,你需要在数据线上使用一个10k欧姆电阻作为上拉电阻。
DHT22引脚
- 引脚1为VCC(电源)
- 引脚2是DATA(数据信号)
- 引脚3为NULL(不要连接)
- 引脚4为GND(接地)
连接Arduino温湿度传感器电路
这个传感器的电路相当简单,不需要复杂的零件和接线。
- 将10k电阻从引脚1到引脚2放在湿度传感器上。
- 将引脚1接至Arduino上的5v引脚。
- 将引脚2接至Arduino上的引脚2。
- 不要使用传感器上的3号针脚。
- 最后将4号针脚连接到Arduino上的GND。
下图将帮助你正确地组装DHT22电路与Arduino Uno。
Arduino DHT22湿度传感器代码
我们将使用两个库来实现。第一个是Adafruit DHT传感器库,第二个是Adafruit统一传感器库。
导入Sensor和DAdafruit Unified Sensor库
首先,在Arduino IDE中打开库菜单,进入Sketch (1.) ->Include Library (2.) ->Manage Libraries(3.)
在这个窗口中,搜索DHT(1.),找到Adafruit公司的DHT传感器库(2.)。点击 “install”(3.)按钮安装最新版本的传感器库,如下图所示。
现在,在同一个窗口中,搜索Adafruit Unified Sensor(1.),找到库(2.)。找到后,按 “install”(3. )按钮进行。
现在我们需要的所有的库都导入进来了。
编写代码
多亏了Adafruit的DHT库,我们需要编写的代码非常简单,因为库里的大部分工作它已经帮我们完成了。
下面,我们将向您介绍代码,并解释每个部分的作用。
如果你想获得完整的代码而不需要解释,你可以跳到本节的最后。
#include <DHT.h>
首先我们需要做的是导入我们在教程中获得的DHT库的头像。你可以手动输入,也可以在Sketch -> Include Library -> DHT 传感器库下选择 这个库包含了我们在Arduino上处理DHT22传感器所需要的所有代码。
#define dataPin 2
#define DHTType DHT22
现在我们需要定义两个常数值。第一个是我们的dataPin常数。这个常数保持着你连接DHT22的引脚号。这个常数的值应该是2,除非你在Arduino上使用不同的数字输入引脚。
另外,我们要定义我们所使用的湿度传感器的型号,这个常数被分配到DHTType常数。我们所使用的库支持DHT22、DHT21和DHT11传感器。
DHT dht = DHT(dataPin, DHTType);
接下来,我们利用我们在脚本开始时定义的dataPin和DHTType常量实例化DHT库。
这段代码将准备DHT库与DHT22传感器交互,并将准备好的对象存储在我们的 “dht “变量中。
void setup() {
Serial.begin(9600);
dht.begin();
}
setup函数使用9600的波特率来初始化串行监控器,这样我们就可以利用串行监控器从Arduino读回数据。
其次,我们对之前实例化的dht对象进行调用,运行它的begin函数。运行DHT库的begin函数,就可以让它开始从传感器中读取数据。
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
在这里,我们首先将脚本延迟2000毫秒(2秒),这样做是因为我们每隔2秒才能轮询一次DHT22的新信息。
接下来,我们使用我们的”dht”对象从传感器读取湿度。我们将得到的值存储在”h”变量中。
同样的,对于温度,我们使用温度来获取这个值,并将其存储在”t”变量中。
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from the DHT sensor, check wiring.");
return;
}
在这部分代码中,我们要做一些检查,以确保我们所读取的值是我们所期望的。
使用isnan()函数,我们检查”h”和”t”变量是否是数字。如果其中一个变量不是数字,我们就通过串行连接打印一条消息,然后返回到循环的开始。
Serial.print("Humidity: ");
Serial.print(h);
//Print out the Temperature
Serial.print("% || Temperature: ");
Serial.print(t);
Serial.print("°C ");
//Print new line
Serial.println();
}
在最后一段代码中我们再次利用串口连接,但这次我们打印出从传感器收到的湿度和温度值。
使用Arduino IDE等串行监控器,能够看到到Arduino输出的这些值。
测试arduino DHT22传感器代码
另外,确认Arduino是否连接好了,并在工具->端口下选择了它。
- 你的Arduino湿度传感器现在应该已经启动并记录了。现在是时候加载串行监控器,这样就可以看到温度和湿度测量结果。
点击 “Tooles”(1.)打开Arduino串行监控器软件,然后点击 “Serial Monitor”(2.)
希望你一切正常,如果有什么问题,请不要吝啬在文章下面留言寻求帮助。
欢迎转载,请留下出处链接:Labno3 » Arduino怎么使用DHT22温度湿度传感器