前言
本文研究STM32F411RE_NUCLEO如何使用RT_Thread開源軟件包快速驅動DHT11溫溼度傳感器。
一、基礎知識
1.RT_Thread開源軟件包簡介
軟件包運行於RT-Thread物聯網操作系統平臺上,面向不同應用領域的軟件組件形成一個個軟件包,由軟件包描述信息,軟件包源代碼或庫文件組成。
(1) 類似Linux Kconfig方式的menuconfig
(2) 支持Linux、Windows、MacOS跨平臺使用
(3) 管理系統功能,組件以及線上軟件包
軟件包下載統計:
由上圖可知,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文件內容
可以看到menu "Onboard Peripheral Drivers"欄目內容爲空,env控制檯輸入menuconfig,結果如下:
可以看到Onboard Peripheral Drivers、on-chip Peripheral Drivers和kconfig文件中的配置對應,打開Onboard Peripheral Drivers ,爲空。
(1)修改kconfig文件
增加一組DHT11的配置信息,如下:
查看env工具下Hardware Drivers Config/Onboard Peripheral Drivers:
使能Enable DHT11 drivers,可以看到子欄目顯示出來了。
這個時候退出保存後,會在rtconfig.h中顯示PKG_USING_DHT11,至此,我們達到了通過修改kconfig文件,自定義配置信息的目的。
關於kconfig更多使用,請參考rt_thread官網文檔中心:https://www.rt-thread.org/document/site/programming-manual/kconfig/kconfig/
二、使用實例
1.下載dht11軟件包
登錄rt_thread官網軟件包頁面,http://packages.rt-thread.org/
搜索dht11,如下所示:
2.環境配置
(1) 配置DHT11
上述介紹Kconfig的時候,我們已經修改了kconfig,而修改的內容正式驅動DTH11所必須的,原因如下:
我們下載的軟件包需要依賴兩個全局變量,這個時候我們可以手動定義在rtconfig.h中,但是這樣會引入一個問題,當你下次再使用env工具增加其他工具,退出保存後,我們在rtconfig.h中的手動定義內容會丟失,因爲rtconfig.h中文件是根據env配置自動生成更新,而我們從後臺下載的軟件包不在env配置工具上面,所以需要咱們把PKG_USING_DHT11放到kconig文件下,然後可以通過env工具打開即可,如果讀者按照我得步驟,此時我們已經修改好了PKG_USING_DHT11,接下來,我們繼續修改env配置信息,打開PKG_USING_DHT11_SAMPLE.
查看rtconfig.h變化:
(2) 配置Sensor
進入RT-Thread Components/Device Drivers/目錄,打開Using Sensor device drivers
三、運行
1.硬件連接
查看原理圖,找到PB12引腳:
實物連接:
2.下載rtthread.bin
在Env控制檯輸入scons編譯代碼,然後將rtthread.bin文件燒錄到stm32中即可。重新上電設備Log如下:
從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/
一葉孤沙出品:一沙一世界,一葉一菩提