DHT11 是一款低成本温湿度一体化传感器,包含一个电阻式湿度检测元件和一个 NTC 温度测量元件,通过内部 8 位单片机将采集到的数据转换为数字信号输出。DHT11 采用自定义单总线协议。
传感器通信过程分为三个阶段:
阶段 1:主机发送起始信号树莓派 Pico(主机)将 DATA 线拉低至少 18ms然后释放总线,等待 20-40us
阶段 2:传感器响应信号DHT11 检测到起始信号后,会拉低总线 80us接着拉高总线 80us,表明传感器已准备好发送数据
阶段 3:数据传输DHT11 会连续发送 40 位数据(高位在前)
数据格式:8 位湿度整数 + 8 位湿度小数 + 8 位温度整数 + 8 位温度小数 + 8 位校验和校验和为前 4 个字节的和(DHT11 实际只使用整数部分,小数部分固定为 0)
数据读取原理:
位数据判断:传感器发送 0 时:拉低总线 50us,拉高总线 26-28us,传感器发送 1 时:拉低总线 50us,拉高总线 70us,树莓派 Pico 通过测量高电平持续时间来判断数据位是 0 还是 1
数据处理:将 40 位数据拆分为 5 个字节验证校验和是否正确(前 4 字节之和等于校验和字节)提取温度和湿度的整数部分(DHT11 精度为 ±2℃和 ±5% RH)
树莓派 Pico 实现要点:
使用 GPIO 的输入输出模式切换来发送和接收信号
通过精确的延时函数(如 utime.sleep_us ())控制信号时序
采用中断或轮询方式检测总线电平变化
进行校验和验证,确保数据有效性
由于 DHT11 的通信时序要求严格(微秒级),在代码实现时需要精确控制延时,这也是为什么在程序中会频繁使用 utime 模块的延时函数。如果时序控制不当,会导致读取失败或数据错误。

| 🛒传感器扩展板产品链接 | 🛒树莓派Pico核心板链接 |
| DHT11传感器原理图 | DHT11资料 |
| 提醒:请按下图的引脚标识接线,务必不能接错。如果接错线通电后会导致设备烧毁! |

接好线后的实图如下:

| dht11 下载这个dht11的源代码上传至树莓派pico文件内,直接运行查看数据(如下图) |
如果你还没有搭建好树莓派Python编程环境可参考这个帖子→:如何搭建Python编程环境

可以对着传感器吹口热气或手捂着观察温湿度数据是否发生变化
在程序中我们加入了环境状态判断
当温度低于18.5℃时状态为:“温度偏低”,
当温度在18.5℃~27.5℃之间状态为:“舒适温度”
当温度高于29℃时状态为:“舒适温度”
上面的程序只是测试传感器功能是否正常,我们要再次升级功能让其脱离电脑也能使用,那么我们加个显示屏和报警器。实现将温度展现在显示屏上并且温度高了自动报警。请严格按下图的引脚标识进行连接,务必不能接错,接错会损坏设备!

| DHT11传感器+显示屏源代码下载这个源代码Zip压缩包,在解压出来将里面所有文件全部上传至树莓派pico文件内,直接运行查看数据(如下图) |
如果你还没有搭建好树莓派Python编程环境可参考这个帖子→:如何搭建Python编程环境

| 程序全部上传后,运行直接观察结果。后续只需要给主板单独供电即可正常显示! 无需再次连接电脑。(参考下面演示视频) |
联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意
提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...