RTT&&STM32开发实践之外设篇1:驱动DHT11温湿度传感器

前言

本文研究STM32F411RE_NUCLEO如何使用RT_Thread开源软件包快速驱动DHT11温湿度传感器。

一、基础知识

1.RT_Thread开源软件包简介

软件包运行于RT-Thread物联网操作系统平台上,面向不同应用领域的软件组件形成一个个软件包,由软件包描述信息,软件包源代码或库文件组成。
包管理

(1) 类似Linux Kconfig方式的menuconfig

(2) 支持Linux、Windows、MacOS跨平台使用

(3) 管理系统功能,组件以及线上软件包

软件包下载统计:
tongji

由上图可知,RT_Thread软件包逐渐的受大家欢迎,目前RT_Thread每年开巡城演唱会,哈哈,大家可以关注RT_Thread公众号及时了解RT_Thread最新发展情况。

2.Kconfig基础知识

RT-Thread 借助 Kconfig 文件生成的配置文件 rtconfig.h 来配置系统,Kconfig 文件是各种配置界面的源文件。

举个简单的例子,我们修改kconfig文件内容,增加一组显示在env配置工具的配置信息。

(1)查看当前映射关系

我们先看下bsp/stm32/stm32f411-st-nucleo/board/下的kconfig文件内容
origin_config

可以看到menu "Onboard Peripheral Drivers"栏目内容为空,env控制台输入menuconfig,结果如下:
origin_show

可以看到Onboard Peripheral Drivers、on-chip Peripheral Drivers和kconfig文件中的配置对应,打开Onboard Peripheral Drivers ,为空。
onboard

(1)修改kconfig文件

增加一组DHT11的配置信息,如下:
kconfig_modify

查看env工具下Hardware Drivers Config/Onboard Peripheral Drivers:
modify_show

使能Enable DHT11 drivers,可以看到子栏目显示出来了。
modify_enable

这个时候退出保存后,会在rtconfig.h中显示PKG_USING_DHT11,至此,我们达到了通过修改kconfig文件,自定义配置信息的目的。
config_res

关于kconfig更多使用,请参考rt_thread官网文档中心:https://www.rt-thread.org/document/site/programming-manual/kconfig/kconfig/

二、使用实例

1.下载dht11软件包

登录rt_thread官网软件包页面,http://packages.rt-thread.org/
package_show

搜索dht11,如下所示:
package_dht11

2.环境配置

(1) 配置DHT11

上述介绍Kconfig的时候,我们已经修改了kconfig,而修改的内容正式驱动DTH11所必须的,原因如下:
code_dht11

我们下载的软件包需要依赖两个全局变量,这个时候我们可以手动定义在rtconfig.h中,但是这样会引入一个问题,当你下次再使用env工具增加其他工具,退出保存后,我们在rtconfig.h中的手动定义内容会丢失,因为rtconfig.h中文件是根据env配置自动生成更新,而我们从后台下载的软件包不在env配置工具上面,所以需要咱们把PKG_USING_DHT11放到kconig文件下,然后可以通过env工具打开即可,如果读者按照我得步骤,此时我们已经修改好了PKG_USING_DHT11,接下来,我们继续修改env配置信息,打开PKG_USING_DHT11_SAMPLE.
env_dht11_sample

查看rtconfig.h变化:
dht_res_sample

(2) 配置Sensor

进入RT-Thread Components/Device Drivers/目录,打开Using Sensor device drivers
env_open_sensor

三、运行

1.硬件连接

查看原理图,找到PB12引脚:
sch_pb12

实物连接:
shiwu

2.下载rtthread.bin

在Env控制台输入scons编译代码,然后将rtthread.bin文件烧录到stm32中即可。重新上电设备Log如下:
RTT&&STM32开发实践之外设篇1:驱动DHT11温湿度传感器

从Log信息可以看出,我们已经成功驱动起来了DHT11温湿度传感器。

四、结语

1.总结:

本节完,实际操作过程中需要注意的地方有如下几点:

(1) kconfig使用

对于一些env工具默认没有提供的组件,个人认为手动修改kconfig,使其出现在env工具中便于之后更多组件的统一管理,如果不修改kconfig组件,直接定义在rtconfig.h文件中,后续增加其他组件时候,我们之前在rtconfig.h中定义的宏将会消失,这样导致,每次增加一个组件,都需要手动添加回去,比较痛苦,所以我们配置下kconfig.

(2) 组件使用

我们下载了dht11组件,也配置了kconfig文件的时候,会发现scons编译仍然失败,此时不要怕,看错误提示,我这边看到提示找不到include "sensor.h"于是想起来没有用env配置工具打开sensor,总之遇到问题不要方,好好排查吧,实在解决不了,可以在群里和大家交流。

2.后记:

如您在使用过程中有任何问题,请加QQ群进一步交流,也可以github提Issue。

QQ交流群:906015840 (备注:物联网项目交流)

github仓库地址:https://github.com/solitary-sand/rt_thread/

一叶孤沙出品:一沙一世界,一叶一菩提
wechat

猜你喜欢

转载自blog.51cto.com/14616151/2452861