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