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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章