树莓派 + DHT11 获取温度与湿度

§§ DHT11介绍

DHT11是一款含有已校准数字信号输出的温湿度复合传感器。包括一个电阻式感湿元件和一个NTC测温元件,可与8位单片机相连接。是一款广泛使用是电子元器件。DHT11的一般形态如下图:

DHT11采用四PIN引

bKKNC

脚。

  •   引脚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  检验和
    

dht11_data

温度和湿度目前只有整数部分有效,小数部分是无效的,计数为0.

各数据部分相加,得到的和取末8位,即为检验和。

§§ DHT11工作模式

DHT11空闲状态为低功耗模式。当主机发送起始信号后,DHT11进行高速模式,触发一次温湿度采集,并后主机发送信息,然后再次进入低功耗模式。整个流程可以分为三个阶段如下

**起始阶段:**

数据总线空闲状态为高电平。当主机需要获取信息时,工作流程如下:
  1.  主机把总线拉低等待DHT11响应,拉低时间必须大于18ms,以保证DHT11能检测到起始信号
    
  2.  主机发送起始信号结束后,延时等待20-40us,切换到输入模式,或者输出高电平
    
  3.  DHT11等待主机起始信号结束后,发送80us低电平响应信号
    
  4.  DHT11发送响应信号后,再把总线拉高80us,准备发送数据
    

    数据传输阶段:

    数据总线按bit发送数据时,每bit数据起始将电平拉低50us,作为发送间隙,然后将电平拉高,发送数据。数据d为‘0’还是‘1’,由电平持续时间t决定。如果t < 50ms,则d=0,如果d>50us,则d=1. 流程如下:

  5.  DHT11发送50us低电平信息,作为bit起始间隙
    
  6.  DHT11发送时间t高电平信息,作为数据
    
  7.  重复1,2发送数据,直到数据全部发送结束
    

    结束阶段:

    当数据发送全部结束后,总线发送结束号,并恢复低功耗模式:

  8.  DHT11发送50us低电平信号
    
  9.  DHT11将电平拉高,恢复至低功耗模式