風(fēng)速監(jiān)測(cè)報(bào)警
作者:蘇慶洪
概述
風(fēng)速監(jiān)測(cè)報(bào)警系統(tǒng)基于 MCU芯片開(kāi)發(fā),支持采集多路從機(jī)分節(jié)點(diǎn)的風(fēng)速數(shù)據(jù),通過(guò)無(wú)線主從傳輸,主機(jī)收集數(shù)據(jù),通過(guò)顯示屏實(shí)時(shí)監(jiān)視,在風(fēng)速超過(guò)報(bào)警值時(shí),通過(guò)GPIO輸出接點(diǎn)信號(hào),啟動(dòng)預(yù)警,降低自然風(fēng)災(zāi)害對(duì)生命財(cái)產(chǎn)損失的風(fēng)險(xiǎn)。點(diǎn)對(duì)點(diǎn)無(wú)線傳輸距離可達(dá) 2000m ~ 3000m,具有傳輸距離遠(yuǎn)的特點(diǎn),通過(guò)組網(wǎng)可以覆蓋大面積預(yù)警區(qū)域,該系統(tǒng)適用于野外對(duì)風(fēng)速敏感的設(shè)備,房屋進(jìn)行監(jiān)測(cè),特別是各風(fēng)景名勝區(qū),地處名山大川,其載客索道纜車(chē),當(dāng)線路上風(fēng)速過(guò)大時(shí),可以和主控系統(tǒng)聯(lián)動(dòng),進(jìn)行減速和停機(jī)控制。
開(kāi)發(fā)環(huán)境
RT-Thread版本:RT-Thread V 4.0.3
開(kāi)發(fā)工具及版本:MDK 5.25
RT-Thread使用情況概述
內(nèi)核部分:調(diào)度器,信號(hào)量,消息隊(duì)列。
調(diào)度器:創(chuàng)建多個(gè)線程來(lái)實(shí)現(xiàn)不同的工作。
信號(hào)量:用來(lái)同步線程。
設(shè)備框架:通過(guò) RT-Thread提供的 I/O 設(shè)備管理接口來(lái)訪問(wèn)串口硬件。
硬件框架
從機(jī)MCU 定時(shí)讀取 風(fēng)速傳感器數(shù)據(jù),然后通過(guò) ATK-LORA 傳輸?shù)街鳈C(jī),主機(jī)對(duì)數(shù)據(jù)進(jìn)行比例運(yùn)算處理,LCD顯示和GPIO輸出
軟件框架說(shuō)明
MCU 上電之后首先完成板級(jí)外設(shè)的初始化,圖形界面littleVGL初始化,定時(shí)請(qǐng)求數(shù)據(jù),串口中斷釋放信號(hào)量,線程實(shí)時(shí)處理數(shù)據(jù),并顯示、控制。
軟件模塊說(shuō)明
主機(jī)創(chuàng)建了3個(gè)線程,1個(gè)信號(hào)量。
main:完成初始化,創(chuàng)建信號(hào)量,打開(kāi)串口設(shè)備,設(shè)置中斷響應(yīng)函數(shù),創(chuàng)建線程,定時(shí)請(qǐng)求從機(jī)數(shù)據(jù)。
lcd_thread_entry:開(kāi)啟littlevgl的事務(wù)處理lv_task_handler()。
usart_thread_entry:take信號(hào)量的方式,獲取到信號(hào)量之后,開(kāi)始數(shù)據(jù)接收,正確收到數(shù)據(jù)后,顯示,并輸出IO信號(hào)。
演示效果
模擬儀表顯示,綠色指針為當(dāng)前風(fēng)速值,紅色指針為故障上限,黃色指針為報(bào)警上限
拖動(dòng)滑塊左右移動(dòng)可以設(shè)定報(bào)警值
切換軟件開(kāi)關(guān),對(duì)太陽(yáng)能電池進(jìn)行充電
B站地址
比賽感悟
時(shí)代的發(fā)展,MCU的性能也越來(lái)越強(qiáng),萬(wàn)物互聯(lián)的需求也愈加強(qiáng)烈,使用RTOS來(lái)實(shí)現(xiàn)物與網(wǎng)的鏈接,是時(shí)代發(fā)展的潮流,當(dāng)我接觸到RT-Thread 這個(gè)國(guó)人自主RTOS后,經(jīng)過(guò)對(duì)比其他的freertos,ucos等,RT-Thread代碼很優(yōu)雅,組件功能多,小而美,我開(kāi)始了深入的學(xué)習(xí)。
通過(guò) RT-Thread官網(wǎng)上的文檔中心,我學(xué)習(xí)了多線程及其調(diào)度、信號(hào)量、郵箱、消息隊(duì)列、內(nèi)存管理、定時(shí)器等,但是感覺(jué)認(rèn)識(shí)很膚淺,對(duì)于信號(hào)量是怎么實(shí)現(xiàn)的?rtos是怎么達(dá)到實(shí)時(shí)性?還是一頭霧水。
于是又學(xué)習(xí)了火哥出版的《RT-Thread 內(nèi)核實(shí)現(xiàn)與應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)—基于STM32》,手把手,一步一步實(shí)現(xiàn)了RT-Thread,終于有了深刻認(rèn)識(shí),可以實(shí)際操作了。
通過(guò)這次比賽的項(xiàng)目實(shí)踐,我對(duì)RT-Thread有了全新的認(rèn)識(shí),他不僅僅是一個(gè)嵌入式RTOS,當(dāng)各種組件有序結(jié)合起來(lái),必能夠發(fā)揮出更大能量,體現(xiàn)無(wú)與倫比的擴(kuò)展性和靈活性,無(wú)愧小而美物聯(lián)網(wǎng)操作系統(tǒng)的稱呼,現(xiàn)在RT-Thread smart已經(jīng)上線了,無(wú)疑體現(xiàn)出來(lái)RT-Thread的蓬勃生命力和無(wú)限美好的發(fā)展前景,我相信選擇RT-Thread絕對(duì)是正確的。
這個(gè)小作品,還有待完善,現(xiàn)在僅能通過(guò)觸摸屏顯示一些數(shù)據(jù),并調(diào)整參數(shù),還得增加一些功能,比如省電管理,遠(yuǎn)程開(kāi)關(guān)機(jī),還得解決開(kāi)發(fā)硬件、軟件的版權(quán)問(wèn)題,在此僅作為演示,給下一步的開(kāi)發(fā)提供一些思路,距離產(chǎn)品還有很長(zhǎng)的路要走。
美中不足的地方,RT-Thread studio編譯代碼偏大,以至于我這個(gè)mini板flash和ram容量不夠,下一步還得好好研究,怎樣裁剪,用RT-Thread studio做產(chǎn)品的問(wèn)題。
最后感謝主辦方提供了這么好的一個(gè)平臺(tái),不僅能展示自我,也能學(xué)到很多知識(shí),還要感謝論壇上那些解決我問(wèn)題以及制作軟件包的大佬,希望有朝一日我也能給開(kāi)源社區(qū)貢獻(xiàn)一份自己力量。