RT-Thread DHT11 温湿度传感器驱动

分享一个我整理的 DHT11 温湿度传感器驱动 dht11_rtt 软件包

dht11_rtt 是基于 RT-Thread 物联网操作系统实现的 dht11 驱动软件包,该软件包托管在 GitHub,使用 Apache-2.0 协议许可。

dht11_rtt 驱动使用了 RT-Thread Sensor 传感器框架和 Pin 驱动框架,因此在使用的过程中需要开启这两个功能。不过,在使用 RT-Thread 的 menuconfig 进行配置的时候会默认选中 Sensor 和 Pin 设备配置。

简介

DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 NTC 测温元件,幵与一个高性能 8 位单片机相连接,对外提供单总线通讯接口。更多 DHT11 的使用说明请参考 DHT11 厂家数据手册。

示例

dht11_rtt 驱动软件包提供了示例程序,menuconfig 配置如下:
选择一个 BSP 工程,使用 menuconfig 命令打开如下界面:
在这里插入图片描述
由 menuconfig 配置保存后,使用 pkgs --update 命令将该软件包从 github 下载到本地 bsp 工程中。
该示例程序使用了 RT-Thread 的组件初始化特性,编译下载后,板卡上电的时候自动完成初始化工作,不需要用户修改任何代码(可能需要修改 DHT11 使用的 GPIO,示例中使用的是 GPIOB_12)。

修改 DHT11 连接的 GPIO 管脚:
dht11_sample.c 中修改以下代码:

#define DHT11_DATA_PIN    GET_PIN(B, 12)

程序编译下载到板卡后,会在串口中每 1s 打印一次温湿度数据。

注意事项

DHT11 是采用单总线通讯的传感器,本软件包采用 GPIO 模拟单总线时序。DHT11 的一次完整读时序需要 20ms,时间过长,故无法使用关中断或者关调度的方式实现独占 CPU 以保证时序完整正确。因此可能出现读取数据失败的情况,请用户注意。

DHT11 通讯时序:

主机发送起始信号 —> DHT11 检测到并发送响应信号
DHT11 发送 40 位数据(HSB) —> DHT11 发送结束信号
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RT-Thread作品秀】基于物联网云平台的智能环境监测设计作者:赵帅 概述智能环境监测系统基于 STM32H7系列芯片开发,通过光照传感器与湿度传感器采集环境中的光照与湿度数据,通过WIFI将系统采集到的环境数据实时的上传至物联网云平台,也可以通过PC端软件实时的监控环境数据。该系统适用于家庭、办公室、教室等场所的进行环境监控,该系统具有实时性高、功耗低,丢包率低,随时随地监控数据等特点,是一个实用的设计。 开发环境下位机:硬件:stm32f407-atk-explorer 扩展板:DHT11湿度传感器,BH1750光照传感器,板载AP6212 WIFI模块 RT-Thread版本:RT-Thread V 4.0.3 开发工具及版本:RT-Sudio 上位机: Qt版本:Qt5 开发工具:Qt Creator4.11.0 RT-Thread使用情况概述内核部分:调度器,信号量,事件集 调度器:创建多个线程来实现不同的工作。 信号量:用来同步线程。 事件集:通知数据采集完成 组件部分:IIC框架Sensor框架,SAL 套接字抽象层 IIC框架:驱动光照传感器,获取光照强度数据 Sensor框架:将湿度传感器注册到sensor上。使用该框架提高了代码的复用性。 SAL套接字抽象层:该组件实现了对不同网络协议栈或网络实现接口的抽象,并对上层提供一组标准的API接口,方便网络应用的开发与稳定性。 软件包部分: cJSON:C语言实现的极简的解析 JSON 格式的软件包。 Onenet:RT-Thread 针对 OneNET 平台连接做的的适配,通过这个软件包,可以让设备在 RT-Thread 上非常方便的连接 OneNet 平台,完成数据的发送、接收、设备的注册和控制等功能。 pahomqtt,:本软件包是在 Eclipse paho-mqtt 源码包的基础上设计的一套 MQTT 客户端程序。 Webclient:提供设备与 HTTP Server 的通讯的基本功能。 硬件框架使用stm32h7做为系统主控,通过外接dht11传感器、bh1750传感器来采集外界的湿度数据与光照强度。 使用AP6211wifi模块,实现设备的联网,以及连接云平台的功能。 软件框架说明下位机流程图: 上位机流程图: 上位机数据的获取是通过调用OneNet云平台的API接口来获取数据,因此需要使用HTTP协议。在QT中,QNetworkAccessManager类可以完成基于HTTP协议的数据传输。既可以向网络发送请求,也可以接收网络的应答。但是,具体的网络请求需要通过QNetworkRequest类实现,网络的应答通过QNetworkReply类来实现。在数据获取成功之后,通过调用QT中JSON相关的API函数,根据数据格式匹配出相应的环境数据。之后发送dataSignal()信号,执行setVallue槽函数将数据显示在用户界面上。通过定时器来定时发送get请求,实现数据实时更新的目的。流程图如下图所示。 软件模块说明art_mqtt_init_entry:初始化mqtt,初始化成功后,释放信号量,通知ArtOneNetUploadThread线程可以向OneNet发送数据。 art_onenet_upload_entry:线程接收到事件后,将数据发送至OneNet云平台 art_dht11_read_entry:湿度数据采集线程,采集到数据后发送事件 art_bh1750_read_entry:光照采集线程,采集到数据后发送事件 演示效果演示视频

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值