【RT-Thread作品秀】設(shè)備運(yùn)行數(shù)據(jù)分析預(yù)警系統(tǒng)
作者:林宏華
概述
我們?cè)诠S里,特別是生產(chǎn)重型機(jī)械的工廠里工作過(guò)的人都知道,當(dāng)我們需要吊起幾百斤到到幾十噸的重物時(shí),一般都會(huì)用到起重機(jī),常見(jiàn)起重機(jī)又分為橋式起重機(jī)、門式起重機(jī)等,都具有自身運(yùn)行軌道的起重機(jī)設(shè)備,他們的運(yùn)行軌道一般根據(jù)車間的長(zhǎng)度來(lái)安裝和車間的寬度來(lái)設(shè)計(jì)制造,相當(dāng)于每臺(tái)起重設(shè)備都是定制的。常見(jiàn)的起重機(jī)有雙梁和單梁,一般10噸以下多以單梁和小型雙梁為主,10噸到20噸以小型雙梁為主,20噸以上以雙梁為主,同時(shí)還配有司機(jī)室。
由于軌道很長(zhǎng),所以是由多根軌道拼接而成,連接處會(huì)有縫隙,如果縫隙過(guò)大會(huì)造成起重機(jī)運(yùn)行過(guò)程出現(xiàn)劇烈抖動(dòng),如果軌道不平,起重機(jī)運(yùn)行時(shí)就會(huì)有上坡下坡的情況。設(shè)備會(huì)增加自身負(fù)載而影響運(yùn)行安全。為了實(shí)時(shí)監(jiān)測(cè)設(shè)備運(yùn)行狀態(tài),需要一個(gè)小巧跟隨設(shè)備運(yùn)行的數(shù)據(jù)分析儀??梢苑奖惆惭b在需要監(jiān)測(cè)的部位,當(dāng)超過(guò)設(shè)定相關(guān)參數(shù)的閾值時(shí)就會(huì)發(fā)出報(bào)警信息,配合這樣測(cè)量的數(shù)據(jù)更加真實(shí)可靠。除了用于起重機(jī),還可以用于船舶,游樂(lè)設(shè)施等。
開(kāi)發(fā)環(huán)境
本項(xiàng)目采用到硬件方案是:通過(guò)ART-Pi STM32H750主板上的I2C引腳和UART以及一個(gè)普通IO口就可以實(shí)現(xiàn)與STEVAL-MKI197V1(LSM6DSOX)六軸傳感器和STEVAL-MKI192V1(LPS22HH)氣壓傳感器的I2C通信,與廣和通 L610-CN-00 Cat1 模塊實(shí)現(xiàn)串口通信連接物聯(lián)網(wǎng)平臺(tái)。
除了以上的外擴(kuò)硬件外,還使用到了ART-PI板載的資源,如WIFI模塊的WIFI和藍(lán)牙功能實(shí)現(xiàn)小程序進(jìn)行藍(lán)牙配網(wǎng)后啟動(dòng)TCP服務(wù)器,等待其他客戶端連接并進(jìn)行相關(guān)控制。
軟件方案是:
- 開(kāi)發(fā)源碼基礎(chǔ):ART-PI SDK1.0,主要使用到出廠案例中的藍(lán)牙配網(wǎng)
- STM32CubeMX:主要用于生成相關(guān)硬件驅(qū)動(dòng)
- 開(kāi)發(fā)工具及版本:MDK5.31.0.0
- ENV工具:通過(guò)menuconfig配置L610組件到工程
- 物聯(lián)網(wǎng)可視化軟件Node-Red:人機(jī)交互頁(yè)面
- 阿里云物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái),其中阿里云和Node-Red是作為數(shù)據(jù)采集顯示運(yùn)動(dòng)曲線的上位機(jī),方便對(duì)采集的數(shù)據(jù)進(jìn)行分析。
- 手機(jī)APP:具有TCP/IP協(xié)議,實(shí)現(xiàn)連接開(kāi)發(fā)板WIFI。
RT-Thread使用情況概述
總的來(lái)講,RT_Thread大部分功能都用到了,因?yàn)槲沂腔诔鰪S代碼來(lái)添加自己的應(yīng)用代碼的,這里只介紹自己添加了哪些功能代碼。
內(nèi)核部分:使用了任務(wù)創(chuàng)建、任務(wù)休眠
組件部分:使用了WIFI框架來(lái)實(shí)現(xiàn),網(wǎng)絡(luò)接口驅(qū)動(dòng)、輕量級(jí)的TCP/IP協(xié)議、AT指令框架、MQTT組件
軟件包:使用了廣和通L610模組驅(qū)動(dòng),連接阿里云軟件包。
硬件框架
框架如圖所示:主要用到ART-PI主板、廣和通L610 cat1模組、六軸傳感器和氣壓計(jì)。
- 利用ART-PI板載的WIFI/BT(AP6212A)模組實(shí)現(xiàn)TCP服務(wù)器,首先通過(guò)手機(jī)的微信小程序讓開(kāi)發(fā)板連接到無(wú)線路由器,然后創(chuàng)建TCP服務(wù)器。通過(guò)局域網(wǎng)手機(jī)軟件或網(wǎng)絡(luò)助手軟件都可以連接TCP服務(wù)器。
- 六軸傳感器和氣壓計(jì)是用于測(cè)量設(shè)備運(yùn)行的狀態(tài),如姿態(tài)、方向、高度、溫度等,通過(guò)HAL庫(kù)的I2C實(shí)現(xiàn)數(shù)據(jù)讀取。
- LSM6DSOX 是小尺寸低噪聲低功耗的加速度計(jì)陀螺儀二合一芯片 . 具有數(shù)字I²C、SPI 和MIPI I3CSM 串口標(biāo)準(zhǔn)輸出. 是手持便攜式應(yīng)用的理想選擇,如物聯(lián)網(wǎng)(IoT)連接設(shè)備,穿戴,等其他應(yīng)用??衫糜布R(shí)別出的自由落體事件、6D 方向、單擊和雙擊感應(yīng)、活動(dòng)或不活動(dòng)、喚醒事件,來(lái)生成中斷信號(hào)??蓡为?dú)設(shè)定最多16 個(gè)嵌入式有限狀態(tài)機(jī),用于運(yùn)動(dòng)檢測(cè)或手勢(shì)識(shí)別,例如查看、絕對(duì)手腕傾斜、搖晃、連續(xù)兩次搖晃或拿起。LSM6DSOX 還嵌入了機(jī)器學(xué)習(xí)內(nèi)核邏輯,可以識(shí)別數(shù)據(jù)模式與用戶定義的類別集是否匹配。應(yīng)用的典型示例有跑步、行走和駕車等活動(dòng)檢測(cè)。
- LSM6DSOX EVB提供完整的LSM6DSOX信號(hào)輸出,并在VDD/VDDIO上提供所需的去耦電容,用戶基于它可以快速設(shè)計(jì)自己的系統(tǒng)原型和設(shè)備,直接調(diào)試評(píng)估芯片的功能和性能參數(shù)。
- LPS22HH 是一款高精度氣壓傳感器,可用作數(shù)字輸出氣壓計(jì),具有數(shù)字I²C / MIPI I3CSM / SPI 串行接口標(biāo)準(zhǔn)輸出。工作壓力范圍為260 hPa 至1260 hPa,器件能夠以最高200 Hz 的輸出數(shù)據(jù)率測(cè)量壓力值。絕對(duì)精度是0.5hPa.LPM下功耗只有4uA.可以用于測(cè)量海拔高度,樓層定位,無(wú)人機(jī)定高,吸塵器吸力大小判斷等應(yīng)用。
- LPS22HH EVB提供完整的氣壓計(jì)LPS22HH信號(hào)輸出,并在VDD/VDDIO上提供所需的去耦電容,用戶基于它可以快速設(shè)計(jì)自己的系統(tǒng)原型和設(shè)備,直接調(diào)試評(píng)估芯片的功能和性能參數(shù)。
- 廣和通LTE Cat 1模組L610技術(shù)規(guī)格:
-
(1)、L610是LTE-Cat1制式;(2)、L610的基帶是展銳春藤 8910DM,是完全符合3GPP R13官方標(biāo)準(zhǔn)的 Cat.1bis 通信終端解決方案;(3)Cat1 最大上/下行速率 5Mbps UL/10Mbps DL;(4)Cat1 是LTE終端的一個(gè)類別,不是新技術(shù),用現(xiàn)有的LTE網(wǎng)絡(luò),網(wǎng)建成熟;(5)、完美承接2G/3G的退網(wǎng)迭代需求;(6)、完美承接部分Cat4的向下兼容替代需求;(7)、Cat1可以覆蓋超30%的物聯(lián)網(wǎng)場(chǎng)景 ;(8)、Catx(UE-Category),3GPP定義 LTE終端能力等級(jí),表明了終端所支持的數(shù)據(jù)處理能力(下載、上傳速 率)、最大的空分復(fù)用、調(diào)制編碼能力;(9)Cat.1 bis是唯一符合規(guī)范的Cat1單天線方案。
通過(guò)它可以實(shí)現(xiàn)戶外將測(cè)量傳感器數(shù)據(jù)通過(guò)MQTT協(xié)議發(fā)送到阿里云平臺(tái),模組是通過(guò)ART-PI主板的UART1和一個(gè)GPIO引腳實(shí)現(xiàn)AT指令控制的。模組的供電電源由ART-PI主板5V引腳提供。詳情閱讀:基于廣和通Cat1模塊L610+ RT-Thread AT-Device應(yīng)用講解.pdf文件
軟件框架說(shuō)明
軟件部分主要是利用ART-PI的出廠固件實(shí)現(xiàn)小程序藍(lán)牙配網(wǎng),為實(shí)現(xiàn)局域網(wǎng)連接做好準(zhǔn)備,連接好WIFI路由器,然后開(kāi)發(fā)板創(chuàng)建兩個(gè)TCP服務(wù)器后,即可使用手機(jī)端TCP/IP APP來(lái)連接開(kāi)發(fā)板,實(shí)現(xiàn)手機(jī)APP發(fā)送相關(guān)指令來(lái)查看開(kāi)發(fā)板采集到的數(shù)據(jù)。此時(shí)NODERED也可以實(shí)現(xiàn)同樣的連接方式,同時(shí)還具備連接阿里云的MQTT功能,讓數(shù)據(jù)可視化,例如查看數(shù)據(jù)曲線。Cat1 L610模組也是實(shí)現(xiàn)MQTT連接阿里云,它的重要意義在于可以在戶外測(cè)試設(shè)備的運(yùn)行狀態(tài),因?yàn)橹恍枰娫捒ň涂梢詫?shí)現(xiàn)了數(shù)據(jù)實(shí)時(shí)上傳到云端,并用Node-RED遠(yuǎn)程監(jiān)控。
軟件模塊說(shuō)明
應(yīng)用軟件關(guān)鍵部分的邏輯有:
- 官網(wǎng)提供的微信小程序:檢測(cè)開(kāi)發(fā)板藍(lán)牙,并實(shí)現(xiàn)通過(guò)藍(lán)牙配置手機(jī)連接的WIFI。
- TCP/IP:?jiǎn)?dòng)兩個(gè)TCP服務(wù)器實(shí)現(xiàn)局域網(wǎng)控制,提供兩個(gè)端口號(hào)5000和6000。
- Node-Red:通過(guò)物聯(lián)網(wǎng)平臺(tái)軟件連接TCP服務(wù)器和阿里云平臺(tái)進(jìn)行控制和接收開(kāi)發(fā)板采集的數(shù)據(jù)。
- 阿里云物聯(lián)網(wǎng)平臺(tái):與L610實(shí)現(xiàn)MQTT連接,上傳傳感器數(shù)據(jù);與Node-Red連接獲取傳感數(shù)據(jù)并集中顯示在Node-Red人機(jī)交互頁(yè)面中。
- 手機(jī)APP :下載第三方的TCP/IP協(xié)議的APP連接開(kāi)發(fā)板的TCP服務(wù)器,例如連接192.168.1.6 端口5000。實(shí)現(xiàn)查詢傳感器數(shù)據(jù),控制開(kāi)發(fā)板。
演示效果
視頻演示:
比賽感悟
本次比賽獲益良多,剛拿到開(kāi)發(fā)板不知道如何下手,特別燒錄程序就折騰很久,然后終于了解到還有下載算法實(shí)現(xiàn)程序運(yùn)行在外部FLASH里面。接著時(shí)傳感器數(shù)據(jù)的讀取,由于對(duì)硬件的I2C不是特別了解,為了解決通信問(wèn)題,把官方的源碼做了許多的測(cè)試和修改。遇到問(wèn)題只能尋求幫助,在群里問(wèn)了大佬們的讀取情況,他們都說(shuō)能夠正常讀取,讀取數(shù)據(jù)很方便,這使得我不得不懷疑人生,這么簡(jiǎn)單的問(wèn)題我都沒(méi)有解決。最后就是啃官方代碼和測(cè)試,最后發(fā)現(xiàn)居然是一個(gè)指令發(fā)錯(cuò)了,導(dǎo)致讀取不到。
這些傳感器數(shù)據(jù)解決了之后,接下來(lái)就是通訊問(wèn)題了。根據(jù)廣和通的官方視頻教程,實(shí)現(xiàn)了連接阿里云的物聯(lián)網(wǎng)平臺(tái),這個(gè)連接過(guò)程也是一波三折。最開(kāi)始是通過(guò)env 的menuconfig添加串口、IOT組件等一些操作,視頻中是使用的LED案例,而我為了使用的WIFI藍(lán)牙設(shè)備,所以采用出廠案例?;谶@個(gè)案例開(kāi)發(fā)本次作品。