树莓派 + DHT11 获取温度与湿度
§§ DHT11介绍
DHT11是一款含有已校准数字信号输出的温湿度复合传感器。包括一个电阻式感湿元件和一个NTC测温元件,可与8位单片机相连接。是一款广泛使用是电子元器件。DHT11的一般形态如下图:
DHT11采用四PIN引脚。
- 引脚1:VCC. 接入3~5.5V直流电源。
- 引脚2:Data. 串行数据总线
- 引脚3:N/A. 空引脚
- 引脚4:GND. 接地线
DHT11的供电电压为 3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态.电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。
串行数据总线用于和单片机进行数据通讯和同步。一次通信时间在4ms左右,传输40bit数据,高位先出。数据协议8位为一组,由高至底分别为:
- 8bit 湿度整数部分
- 8bit 湿度小数部分
- 8bit 温度整数部分
- 8bit 温度小数部分
- 8bit 检验和
温度和湿度目前只有整数部分有效,小数部分是无效的,计数为0.
各数据部分相加,得到的和取末8位,即为检验和。
§§ DHT11工作模式
DHT11空闲状态为低功耗模式。当主机发送起始信号后,DHT11进行高速模式,触发一次温湿度采集,并后主机发送信息,然后再次进入低功耗模式。整个流程可以分为三个阶段如下
起始阶段:
数据总线空闲状态为高电平。当主机需要获取信息时,工作流程如下:
- 主机把总线拉低等待DHT11响应,拉低时间必须大于18ms,以保证DHT11能检测到起始信号
- 主机发送起始信号结束后,延时等待20-40us,切换到输入模式,或者输出高电平
- DHT11等待主机起始信号结束后,发送80us低电平响应信号
- DHT11发送响应信号后,再把总线拉高80us,准备发送数据
数据传输阶段:
数据总线按bit发送数据时,每bit数据起始将电平拉低50us,作为发送间隙,然后将电平拉高,发送数据。数据d为‘0’还是‘1’,由电平持续时间t决定。如果t < 50ms,则d=0,如果d>50us,则d=1. 流程如下:
- DHT11发送50us低电平信息,作为bit起始间隙
- DHT11发送时间t高电平信息,作为数据
- 重复1,2发送数据,直到数据全部发送结束
结束阶段:
当数据发送全部结束后,总线发送结束号,并恢复低功耗模式:
- DHT11发送50us低电平信号
- DHT11将电平拉高,恢复至低功耗模式