概述
數(shù)采一期下位機(jī)是基于ART-PI開(kāi)發(fā)板開(kāi)發(fā),服務(wù)器采用阿里云學(xué)生版云服務(wù)器ECS,單機(jī)器部署支持每秒采集2000臺(tái)設(shè)備溫度壓力數(shù)據(jù),連接對(duì)象(下稱下位機(jī))可以是設(shè)備也可以是網(wǎng)關(guān)(連接協(xié)議目前僅支持基于WebSocket,詳情參考SocketIO),下位機(jī)采集或匯總的數(shù)據(jù)并通過(guò) WIFI 上傳云端遠(yuǎn)程實(shí)時(shí)監(jiān)視,也可本地連接串口與 PC 端通訊,上位機(jī)通過(guò)自定義解析數(shù)據(jù)后展示到相關(guān)訂閱端(可同時(shí)同步到多個(gè)Android手機(jī))。對(duì)于物聯(lián)網(wǎng)初創(chuàng)公司、自由開(kāi)發(fā)者、學(xué)生,是一個(gè)相當(dāng)實(shí)用的設(shè)計(jì)。數(shù)據(jù)流向完全透明,不存在黑匣子,有助于開(kāi)發(fā)者快速掌握物聯(lián)網(wǎng)運(yùn)行流程。
開(kāi)發(fā)環(huán)境
硬件:ART-PI
RT-Thread版本:RT-Thread Nano v3.1.3
開(kāi)發(fā)工具及版本:CubeMX v6.1.0、Keil v5.33、VSCode v1.51.1、Android Studio 4.1.1、HBuilder X v2.9.8.20201110、NodeJS v14.15.1、MongoDB v4.4.1(1主2副)、redis v6.0
RT-Thread使用情況概述
內(nèi)核部分:調(diào)度器。
軟件包:CJSON v1.7.7
硬件框架
ART-Pi是 RT-Thread 團(tuán)隊(duì)經(jīng)過(guò)半年的精心準(zhǔn)備,專門為嵌入式軟件工程師、開(kāi)源創(chuàng)客設(shè)計(jì)的一款極具擴(kuò)展功能的 DIY 開(kāi)源硬件。
軟件框架說(shuō)明
本項(xiàng)目采用WebSocket協(xié)議進(jìn)行設(shè)備與云端互聯(lián),本期目標(biāo),融合CubeMX、keil、RTT Nano的同時(shí)提供OTA功能和壓力傳感器(LPS22HH)的示例。本項(xiàng)目可分為4個(gè)部分:
第一部分 服務(wù)端
本期采用關(guān)鍵技術(shù)有nodejs、eggjs、socketio、mongodb等,主要為設(shè)備提供云端連接服務(wù)、可定制化協(xié)議解析、消息轉(zhuǎn)發(fā),報(bào)警等功能。
第二部分 后臺(tái)管理端
本期采用關(guān)鍵技術(shù)有vue、element-ui、vue-router、vuex、monaco-editor等,主要提供一些權(quán)限分組管理,設(shè)備模型的定義(不同協(xié)議的解析),設(shè)備OTA測(cè)試。
第三部分 下位機(jī)
本期采用關(guān)鍵技術(shù)有RTT Nano、CJson、WebSocketClient等,主要實(shí)現(xiàn)了設(shè)備溫度采集上傳,模擬溫度過(guò)載報(bào)警,OTA,以及C++14的示例代碼。
第四部分 移動(dòng)端
本期采用關(guān)鍵技術(shù)有uniapp、vue、echarts等,主要實(shí)現(xiàn)了設(shè)備數(shù)據(jù)實(shí)時(shí)上報(bào)、數(shù)據(jù)下發(fā)、模擬報(bào)警的功能。
軟件模塊說(shuō)明
sensor_thread_entry:傳感器線程,采集數(shù)據(jù)并通過(guò)WebSocketClient發(fā)送給云端。
led_ thread _entry:閃燈線程,用來(lái)指示當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)。
wifi_ thread _entry: wifi線程,用來(lái)處理來(lái)自服務(wù)器的數(shù)據(jù)。
演示效果
視頻:
代碼地址
請(qǐng)下載附件獲取代碼。
若使用上有啥問(wèn)題,請(qǐng)聯(lián)系QQ: 296565890,微信:xiaosichuan2013
本項(xiàng)目遵循 Apache 許可證 2.0 版本,所包含4個(gè)端均可以免費(fèi)在商業(yè)產(chǎn)品中使用,不需要公布應(yīng)用程序源碼,沒(méi)有潛在商業(yè)風(fēng)險(xiǎn)。
真心希望有志同道合的朋友一期參與此開(kāi)源項(xiàng)目
工作時(shí)間不一定及時(shí)回復(fù),忘諒解!
比賽感悟
紙上得來(lái)終覺(jué)淺,絕知此事要躬行。陸游的這首詩(shī),完美的詮釋了我在這次比賽中的收獲。
物聯(lián)網(wǎng)的時(shí)代,RTOS多線程是核心,通過(guò)綜合對(duì)比,我最終選擇了國(guó)產(chǎn)的RT-Thread。
通過(guò)本次比賽,讓我深深體會(huì)到RTT Nano的小而美,尤其是在改動(dòng)部分源碼后,RTT Nano支持C++ 14,lambda、auto、函數(shù)重載、類模板用起來(lái)真是爽!(開(kāi)啟C++支持)
雖然本次比賽沒(méi)有用到RT-Thread提供的軟件包,但手動(dòng)寫一次WebSocketClient收獲已經(jīng)很滿意了。
最后感謝主辦方提供了這么好的一個(gè)平臺(tái),不僅能展示自我,也能學(xué)到很多知識(shí),還要感謝論壇上那些解決我問(wèn)題以及提供技術(shù)支持的大佬,希望有朝一日我也能給開(kāi)源社區(qū)貢獻(xiàn)一份自己力量。