【RT-Thread作品秀】智能天氣小站
作者:AlgoIdeas
概述
嵌入式開發(fā)需要多動手,多實踐才能不斷取得成長和進(jìn)步。第一次接觸新的知識,難免會遇到挫折和困難,只要有足夠的耐心和不斷探索的信心,并不斷學(xué)習(xí)和實踐,同時有所思考,就會有收獲。智能天氣小站是一個很好的切入點,同時自己作為一名STM32新手,第一次接觸RT-Thread、也第一次接觸TouchGFX,感受頗多,收獲頗豐。
開發(fā)環(huán)境
硬件:ART-Pi
RT-Thread版本:4.0.3
開發(fā)工具及版本:RT-ThreadStudio 2.0
ART-Pi SDK版本: SDK v1.0.1
RT-Thread使用情況概述
項目主要基于ART-Pi SDK中的art_pi_factory例程,并在例程基礎(chǔ)上增加其他軟件基礎(chǔ)組件。
內(nèi)核采用RT-Thread原生內(nèi)核,版本RT-Thread v4.0.3
組件列表:
rt_ota_lib – 升級相關(guān)
touchgfx_lib – TouchGFX相關(guān)界面實現(xiàn)
wlan_wiced_lib – WLAN庫
涉及軟件包:
EasyFlash-v4.1.0 -- 輕量級物聯(lián)網(wǎng)存儲庫
adbd-v1.1.1 – ADB遠(yuǎn)程調(diào)試
btstack-v0.0.1 – 藍(lán)牙協(xié)議棧
cJSON-v1.0.2 – JSON庫
fal-v0.5.0 -
gt9147-latest -- 觸摸驅(qū)動
littlefs-v2.0.5 --
lwgps-latest -- 輕量級GPS解析庫
netutils-v1.2.0 – 網(wǎng)絡(luò)相關(guān)工具
webclient-v2.1.2 – WEB客戶端
webnet-v2.0.2 – web接口相關(guān)實現(xiàn)
注:gps和presssensor相關(guān)包或模塊可供二次開發(fā)
硬件框架
主控芯片:STM32H750XB (ART-Pi開發(fā)板)
圖形框架:TouchGFX
SD卡1張: 8G
溫濕度傳感器DHT11:使用GPIO獲取數(shù)據(jù)
網(wǎng)絡(luò):板端自帶的AP6212A WIFI+藍(lán)牙一體芯片
4.3寸電容屏:使用I2C總線驅(qū)動觸摸(觸摸芯片GT9147),LCD使用RGB888格式
時間的獲?。豪套詭У腞TC+NTP自動網(wǎng)絡(luò)對時
天氣的獲?。和ㄟ^http客戶端的方式獲取網(wǎng)絡(luò)開放API接口的天氣數(shù)據(jù),目前主要從心知天氣(https://www.seniverse.com/api)獲取,
后續(xù)二次開發(fā),也可采用其他網(wǎng)站獲取,如openweathermap(https://api.openweathermap.org/data/2.5/)等
軟件框架說明
軟件如果需要通過網(wǎng)絡(luò)獲取天氣信息,需要先進(jìn)行聯(lián)網(wǎng),目前支持藍(lán)牙配網(wǎng)(具體請參考ART-Pi官方教程),目前僅支持本地預(yù)先設(shè)置好的地區(qū)的溫度的獲取,后續(xù)可以擴展UI設(shè)計,或通過GPS定位來獲取位置信息。
同時,默認(rèn)支持DHT11數(shù)字溫度傳感器獲取本地的實時溫濕度數(shù)據(jù),并通過GUI進(jìn)行顯示。軟件主體框架如下圖所示:
系統(tǒng)設(shè)置界面,支持將溫濕度數(shù)據(jù)存儲為日志文件到SD卡(后續(xù)可以二次開發(fā),讀取歷史文件并直接在UI界面顯示歷史數(shù)據(jù)),可以開啟或關(guān)閉該功能,同時支持自動關(guān)屏設(shè)置。
軟件模塊說明
UI設(shè)計
GUI采用TouchGFX來設(shè)計,目前采用的版本是TouchGFX 4.15.0,主要分為3個主要界面:主頁、系統(tǒng)設(shè)置和歷史溫度數(shù)據(jù)分析,分別如下圖圖1、圖2和圖3所示。
TouchGFX官方介紹
TouchGFX 4.13 版本是繼TouchGFX 4.12 之后的又一重要版本。4.13版具備了將動畫推到60FPS的功能,還增加了可緩存容器、不完全幀緩沖區(qū)以及新的L8壓縮格式等性能,這表明了 ToughGFX 不斷追求優(yōu)化性能和持續(xù)迭代的匠心。4.13版本還解決了另一個問題:嵌入式系統(tǒng)開發(fā)人員的用戶界面可訪問性。通過將TouchGFX Generator集成到 STM32CubeMX 中,經(jīng)驗較少的工程師在使用 TouchGFX 4.13 時,可以通過 STM32CubeMX 這個廣為流行的 ST 實用軟件程序快速啟動項目。這樣做的目的在于降低開發(fā)者入門門檻,讓專業(yè)人士和愛好者都能受益于這個交互式的高效解決方案。
天氣數(shù)據(jù)獲取
-
通過DHT11數(shù)字溫濕度傳感器獲??;
-
通過注冊心知天氣(https://www.seniverse.com/),采用其Weather API,并配合web相關(guān)API獲取當(dāng)?shù)氐奶鞖猓?/span>
演示效果
視頻演示:
界面設(shè)計效果:
圖1 主頁
圖2 系統(tǒng)設(shè)置
圖3 溫度歷史數(shù)據(jù)與分析
比賽感悟
一次偶然翻看網(wǎng)頁的機會,讓我看到了 RT-Thread x STM32 全連接創(chuàng)意創(chuàng)客大賽,于是順手點了進(jìn)去,并于第二天才最終確認(rèn)參加比賽。在這近一天的時間里,經(jīng)歷了比較糾結(jié)的思想歷程。
首先,工作雖然一直涉及到嵌入式Linux或Android,但未涉及過RT-Thread,且沒有任何STM32使用或開發(fā)經(jīng)驗,不清楚這個學(xué)習(xí)的過程需要多久,畢竟大賽1個月,除去平時還需要工作和周末的其他安排,時間倍感不夠。而且,這個過程是需要有一定的積累才能出好的作品。時間方面和學(xué)習(xí)成本方面,讓自己剛開始很猶豫,甚至不打算報名。
其次,報名前一天才去大概了解了下RT-Thread,是什么樣的一款RTOS,了解到RT-Thread是一個集實時操作系統(tǒng)(RTOS)內(nèi)核、中間件組件和開發(fā)者社區(qū)于一體的技術(shù)平臺,具有極小內(nèi)核、穩(wěn)定可靠、簡單易用、高度可伸縮、組件豐富等特點。
剛開始看到簡介,最吸引我的還是,它是用C語言開發(fā)的,且包含豐富的組件,這一點于平時工作有著不可分割的關(guān)系。同時,考慮到官方還提供了ART-Pi開發(fā)板,對于手上沒有任何STM32硬件開發(fā)板的我來說,無疑降低的入門硬件的門檻。
主要由于第二點與工作比較契合,第二天最終還是決定先報名參加比賽。
到比賽前作品的提交,自己其實算比較晚提交了。期間,利用空閑時間,從頭到尾,熟悉了STM32相關(guān)工具的使用,及UI設(shè)計工具TouchGFX Desinger的使用,同時也熟悉了官方的IDE工具 —— RT-Studio,以及最最核心的RT-Thread的使用,及一些設(shè)計理念。
作為一個新手或小白,第一次燒寫程序都存在問題,后面閱讀了相關(guān)文檔,才搞定。類似這樣的事情,期間也都通過查閱相關(guān)文檔,或通過網(wǎng)絡(luò)及熱心的網(wǎng)友才一一解決,在此表示感謝。
比賽前期,計劃是做一個功能強大的智能天氣助手,因此也申請了氣壓傳感器,剛開始接觸這款氣壓傳感器也是一頭霧水,不清楚如果使用,需要用到SPI,沒有現(xiàn)成的可以直接拿來用的驅(qū)動,后面經(jīng)過差不多幾天折騰,驅(qū)動有了,但通信還是沒有成功,不得不調(diào)整方案,這一點是沒有預(yù)估到的,所以開發(fā)計劃得做詳細(xì)些,就像平時工作的項目開發(fā)一樣。
最終,作品通過DHT11和網(wǎng)絡(luò)獲取本地天氣,保留了定位功能,需要額外的硬件。雖然,在其他人看來,難度不大,但是對于第一次接觸STM32、第一次接觸TouchGFX,第一次接觸RT-Thread的人來說,有些為難,甚至,遇到一些不知下手的BUG,曾一度想放棄提交作品,放棄比賽,即使放棄自己也學(xué)到了東西。還好自己通過不斷地自我反省,不斷的去學(xué)習(xí)相關(guān)知識,和家人和同時的關(guān)切,才堅持了下來,才完成了此次比賽。在此,也謝謝他(她)們,相信通過此次比賽,未來在其他新的領(lǐng)域也會有所精進(jìn),也相信未來會有更加好的關(guān)于IOT,關(guān)于RT-Thread的作品,無論是生活上的,還是工作上的。
為了未來,加油!加油!加油!