概述:
冬天到了,又到了靠燒煤取暖的季節(jié)了,雖然我們大南方還不知道啥時候才能享受到北方小伙伴一樣的集中供暖,但是冬天的霾卻不分彼此的席卷了全國各地。本方案使用的是RT-Thread的嵌入式實時系統(tǒng),通過PMS70003傳感器采集空氣中的PM2.5濃度數(shù)據(jù),并通過WiFi傳輸?shù)揭苿觨nenet平臺上,可以遠程查看PM2.5實時數(shù)據(jù)。
開發(fā)環(huán)境:
RT-Thread版本: 4.0.3
開發(fā)工具:使用RT-Thread Studio2.0.0
硬件平臺:基于RT-Thread官方ART-Pi開發(fā)板+自制傳感器拓展板
RT-Thread使用情況概述:
本項目基于RT-Thread內(nèi)核版本: Ver 4.0.3開發(fā),使用RT-Thread Studio V2.0.0開發(fā),使用的軟件包包括cjson、onenet、webclient、pahomqtt、fal、easyflash、u8g2;
打開的組件和服務(wù)層有:finsh命令、DFS、ulog日志、C++、lwIP、POSIX、libc、ymodem,以及串口、Pin、SPI、SFUD、SDIO。
硬件框架:
本項目使用的是官方的Art-Pi開發(fā)板+自己做的傳感器拓展板制作的,拓展板上包含了一個SHT20的溫濕度傳感器,一個攀藤的PMS7003PM2.5傳感器、一個煒盛的MQ-4B半導(dǎo)體可燃氣體傳感器、一個0.91”Oled單色顯示屏,以及一個撥盤按鍵。其中PMS7003是通過串口把采集到的數(shù)據(jù)傳輸到ART-PI上,由板載WiFi連接到移動onenet云上實現(xiàn)數(shù)據(jù)上傳。SHT20和OLED共用一組IIC數(shù)據(jù)總線,可燃氣體傳感器占用了兩個ADC口(一組檢測氣體濃度,一組檢測傳感器失效),并且可以通過背面跳線選擇ADC口。按鍵占用了額外的三個GPIO用于設(shè)定一些配置信息。
軟件框架說明:
首先RT-Thread啟動后,對各部分外設(shè)進行初始化,然后進入pms7003的讀取線程,該線程負責(zé)采集PMS7003上傳上來的PM2.5濃度數(shù)據(jù),并在線程里對數(shù)據(jù)進行校驗求解后,通過onenet線程,我們把采集到的數(shù)據(jù)通過WiFi定時推送到移動onenet云平臺,推送頻率為2S/次。通過后臺的數(shù)據(jù)流信息頁面,可以看到實時的濃度數(shù)據(jù)信息。
軟件模塊說明:
軟件采用的RTT4.0.3為內(nèi)核基礎(chǔ),使用了一個獨立線程來讀取PMS傳感器的數(shù)據(jù),一個onenet軟件包來實現(xiàn)聯(lián)網(wǎng)推送的服務(wù),最后由板載的WiFi模塊負責(zé)連接到網(wǎng)絡(luò)并把數(shù)據(jù)推送上去。
演示效果:
附上視頻效果:
比賽感悟:
在使用rt-thread實時系統(tǒng)以前,我一直都是簡單的使用裸機開發(fā),純粹的單流水線模式,經(jīng)常會因為各種時間任務(wù)分配問題搞得頭大,每種硬件使用起來得先仔細了解數(shù)據(jù)手冊,了解器件性質(zhì),功能,然后才敢上板子,擼代碼。
這次其實也是我第一次接觸嵌入式實時操作系統(tǒng)這么一個方式來開發(fā)單片機,講真,里面走了不少的彎路,也有很多沒遇到過的坑。不得不說,RT-Thread的文檔支持工作做的還是非常到位的,每個細節(jié)、功能都做了詳細的介紹,但是誠如此還是有一部分我沒太想明白的地方,這里就多虧了官方的比賽群以及我的小伙伴們,遇到很多事情找他們幫忙都能很快的解決掉。
本次比賽我還是學(xué)到了很多的新鮮知識,而且RTT的使用的便捷性給我了很大的震撼,有許多代碼例程寫的都很經(jīng)典,后面板子上的幾個設(shè)備我還要繼續(xù)調(diào)試下去,爭取把這個項目繼續(xù)走下去,把rtt學(xué)得更深入一些。希望以后也能自己獨立開發(fā)一些項目。把自己平時那么多奇奇怪怪的小點子都實現(xiàn)出來。