第9课 DHT11 温湿度计与模块库使用

我是潘,曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。上一课我们介绍 LM35温度传感器,学会了利用参考电压提高测量精度,这节课我们将使用 DHT系列模块和它的库函数来测量温度和湿度。有任何疑问请在评论区提出,我会逐一回答。

Arduino 之所以风靡,不仅仅是因为它的电路简单、程序易懂,而且它作为一个平台,有大量现成模块,简单调用对应的库,就可以使用,极大简化了开发流程和难度。下面我们将介绍怎么使用 DHT11 模块和它的库。

之前用过的 LM35 也是一个模块,将温度转化为模拟量(电压)输出,其实,不用 Arduino 也能通过模拟电路的方式来使用。而 DHT11(AM2301)则是一个数字模块,将温度、湿度传感器和 一个8bit 的 ADC 集成在一起,以数字的方式输出到 Arduino 。

DHT11 规格如下:
测量范围:20~90&RH、0~50°C
测量精度:温度±2%,湿度±5%
分辨率:温度1°C,湿度1%

另外,DHT11 的升级版本 DHT22(AM2302),外观一样,但可以带来更大的测量范围(温度-40°C ~ 80°C,湿度0~99%)和更高的精度(温度±0.5°C,湿度±2%),但价格相差达3倍以上。

由于 DHT 系列模块已经有非常成熟的库,所以使用很简单。只需接上电源,DataPin 接数字端口(远距离传输接上拉电阻至5V端口) ,非模块直接使用的话则悬空NC:

然后下载 DHT 的库文件:打开 IDE 界面,在顶部菜单选择“项目”,选择“管理库”,等待索引加载完成后搜索DHT,选择 Arduino Uno 目前支持的 1.2.3 版(1.3.0 版会导致编译出错),安装即可:

程序如下,注意阅读注释:

要注意 DHT 采样速度为每秒1次,为保证采样成功,采样延时设置1秒以上。打开串口监视器,采集结果如下:

DHT 系列模块与 LM35 相比的另一优势是数据传输距离可达20m以上,而不会影响精度。由于 LM35 使用电压模量,尤其在 10mV 的量级上,导线存在内阻和分压效应会极大影响数据的精确性。

Leave a Reply

Your email address will not be published. Required fields are marked *