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