dht11硬件原理图
dht11工作原理:
当主机没有和dht11交互时,总线处于空闲状态,在上拉电阻的作用下,处于高电平
当主机和dht11交互时,总线处于通信状态,完整通信过程如下:
(时序图)
1.主机将总线I/O配置为输出模式,准备向dht11发送数据。
2.主机将总线拉低至少18ms,以此作为起始信号。再将总线拉高并延时20-40us,以此表示起始信号的结束。
3.主机将总线I/O配置为输入模式,准备接收dht11的数据
4.当dht11检测到起始信号后,开始应答,回传采集到的传感器数据。
(dht11先将总线拉低80us作为对主机的应答(ACK),然后将总线拉高80us,准备回传采集到的温湿度数据。温湿度数据以固定的帧格式发送)
一帧40个bit,每一个bit传输时序逻辑:dht11将总线拉低50us,输出高电平,持续26-28us则为逻辑0,70us则为逻辑1
5.一帧数据完成后,dht11释放总线,总线在上拉电阻作用下恢复高电平
程序设计在采集到40bit数据后,检验校验位
参考博客(整理思路鉴于此): https://www.cnblogs.com/lulipro/p/10815338.html
(arduino实现代码可参考上述博客)