0021 树莓派电脑控制温湿度传感器

这节课,讲一个新的传感器,温湿度传感器。
温湿度传感器
我们选用的型号是DHT11,下面是这个型号的一些参数:
外文名:DHT11
供电电压:3.3~5.5V DC
输 出:单总线数字信号
测量范围:湿度20-90%RH,温度0~50℃
测量精度:湿度+-5%RH,温度+-2℃
分 辨 率:湿度1%RH, 温度1℃
互 换 性:可完全互换
长期稳定性: <±1%RH/年
这些信息丛哪里可以获取呢,一般通过以下方式获得:
1.通过搜索引擎,搜索“温湿度传感器”,通过百科知识获得基础信息。
2.通过在电商平台上面检索“温湿度传感器”,查看商品详细介绍信息,可能包含厂家的商品参数信息。
3.通过查询厂家的产品白皮书获得更详细的产品介绍以及接口说明。
来看一下实物照片,以及相应的接口说明:

将温湿度传感器有孔洞的一面朝上,引脚朝下方摆放,从左到右依次为1到4号引脚,分别对应的接口说明如图所示。
要了解详细的传感器原理,一般需要去搜索厂家的商品白皮书,关于DHT11,推荐下载下面pdf文件:

查看下载文件,可以了解接口信息以及输出数据格式:

硬件的时序图,文档中有详细说明,根据时序图可以用程序来发送读取温度信号命令以及读取返回值。
硬件连接
通过上面的说明,以及根据厂家的电路图,这样连接硬件:

第一步,树莓派GPIO口接到面包板上。
树莓派GPIO的2号口,用杜邦线母对公连接到面包板上。
树莓派GPIO的18号口,用杜邦线母对公连接到面包板上。
树莓派GPIO的20号口,用杜邦线母对公连接到面包板上。
如下图所示:

第二步,DHT11接到面包板上。
DHT11的1号口,用杜邦线母对公连接到面包板上,和GPIO的2号口的杜邦线同一排。
DHT11的2号口,用杜邦线母对公连接到面包板上,和GPIO的18号口的杜邦线同一排。
DHT11的4号口,用杜邦线母对公连接到面包板上,和GPIO的20号口的杜邦线同一排。
注意,由于DHT11的引脚比较细,插入杜邦线母头不太容易插紧,可以用透明胶粘贴固定。
如下图所示:

第三步,在面包板上面,插入一个10k欧的电阻。
插在DHT的1号口和2号口这2排线当中。
如下图所示:

前面0018这节课里面还少买了一个电阻包,请到那个店铺里面搜索“电阻包”,如图:

找到标签上写有10K的电阻,如下图,然后插入到面包板上。

全部电路连接如下图:

编写程序
启动树莓派电源,打开文本编辑器,编写代码如下:


运行结果如下:

可以看到运行多次的结果可能不一致,这是正常情况,因为这个型号的温湿度传感器本身就不是非常精确的传感器,再加上环境温度一直在变化。
如果希望看到温度测量结果剧烈变化,可以通过以下方式调节:
1.用手掌握住传感器,可以利用人体体温加热,让传感器测量的温度上升。
2.用一个塑料袋包住一个冰块,贴在传感器上,让传感器测量的温度下降。
大家可以试试看,不停测量的温度的变化情况。
这段代码有一个很大的问题,那就是当杜邦线和温度传感器的引脚接触不是很好的情况下,可能会卡住,大家可以尝试看看如何修改代码可以达到不会卡住。
具体代码的说明,我已经写在代码的注释当中了,大家自行学习。
当中关于温度的数据如何解析出来的,大家大概了解明白就可以了。如果想弄清楚,需要仔细研究前面下载文件里面的电子电路时序图。
这里,用到的一个新的知识点,是使用GPIO.input(channel)函数来读取GPIO口传递过来的电平信号。
下节课,讲解说明将温湿度传感器和蜂鸣器结合在一起组成温度报警器,当温度大于某个温度或者小于某个温度时发出蜂鸣声音。
往期教程
因为教程是系列教程,前后关联性非常强,请大家按照微信公众号【零基础学编程】的历史消息发布时间先后次序进行阅读。