1.DHT11的数据格式
2.工作原理
3.工作流程
第一步:树莓派发送开始信号,从传感器会返回一个相应的信号进行应答
第二步:树莓派信号线拉高准备接受数据
第三步:开始接受数据(一次接收40位)
单片机和传感器正在通信时,总线处于通信状态,一次完整的通信如下:
第一步:传感器上电后(DHT11上电后要等到1秒越过不稳定状态,在此期间不能发送任何指令),测试环境温湿度数据,开始记录数据,同时DHT11的data数据线由上拉电阻拉高一直保持高电平;此时DHT11的data引脚处于输入状态,时刻检测外部信号。
第二步:微处理器的 I/O 设置为输出,同时输出低电平,且低电平保持时间不能小于 18ms,然后输出高电平20~40us,再树莓派的 I/O设置为输入状态,等待 DHT11 作出回答信号,发送信号如图所示:
第三步:
DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后 DHT11 的 DATA引脚处于输出状态,输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据,树莓派的 I/O 此时处于输入状态,检测到 I/O 有低电平(DHT11 回应信号)后,等待 80 微秒的高电平后的数据接收,发送信号如图所示:
第四步:
由 DHT11 的 DATA 引脚输出 40 位数据,树莓派根据 I/O 电平的变化接收 40 位数据,位数据“0”的格式为: 50 微秒的低电平和 26-28 微秒的高电平;位数据“1”的格式为: 50 微秒的低电平加 70微秒的高电平。位数据“0”、“1”格式信号如图所示:
结束信号:DHT11 的 DATA 引脚输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。但 DHT11 内部重测环境温湿度数据,幵记录数据,等待外部信号的到来。
注意事项:
1、DHT11上电后,要等待 1秒 以越过不稳定状态,在此期间不能发送任何指令。
2、DHT11属于低速传感器,两次通信请求之间的间隔时间不能太短,一般来说要不能低于1秒。
对DHT11的时序做一个总结:
一. 主机(单片机)发送起始信号:
1.主机先拉高data。
2.拉低data延迟18ms。
3.拉高data(单片机引脚设置为输入)。
二. 从机(DHT11)收到起始信号后进行应答:
从机拉低data,主机读取到data线被拉低持续80us后从机拉高data线, 持续80us,直到高电平结束,意味着主机可以开始接受数据。
三. 主机开始接收数据:
1.主机先把data线拉高(io设置为输入)。
2.从机把data线拉低,主机读取data线电平,直到低电平结束(大约50us)从机拉高data线后,对比高电平持续的时间,如果持续时间较短,则为位“0”;如果持续时间较长时,则为位“1”。
3.继续重复上述1,2步骤累计40次。
四. data线拉低50us代表读取结束 五. 校验数据