基于深度學(xué)習(xí)的機(jī)器故障智能檢測(cè)設(shè)備
作者:徐華
應(yīng)用背景
在智能制造時(shí)代,隨著工廠設(shè)備自動(dòng)化程度不斷越高,設(shè)備的預(yù)測(cè)性維護(hù)工作在生產(chǎn)中起著越來(lái)越重要的作用。預(yù)測(cè)性維護(hù)技術(shù)是未來(lái)智慧工廠重要構(gòu)成部分,通過部署各種傳感器,采集工廠設(shè)備各種運(yùn)行狀態(tài)數(shù)據(jù),研究檢測(cè)數(shù)據(jù)分析、預(yù)測(cè)算法微型化實(shí)現(xiàn),快速便捷的對(duì)工業(yè)設(shè)備健康狀況進(jìn)行檢測(cè),在設(shè)備健康狀況發(fā)生惡化之前做出合理的維護(hù)決策,消除設(shè)備的安全隱患。
實(shí)現(xiàn)功能
本項(xiàng)目基于RT-Thread、STM32開發(fā)板(NUCLEO-H743ZI2做了演示版本,ART-Pi只驗(yàn)證調(diào)試了傳感器,跑通了流程,存在模擬i2c通信效率問題)、STM32 LSM6DSOX傳感器、1.12寸OLED屏,SHT31溫濕度傳感器(溫濕度數(shù)據(jù)暫時(shí)未參與建模)以及按鍵和指示燈設(shè)計(jì)一個(gè)MEMS振動(dòng)監(jiān)控設(shè)備。實(shí)際要求是利用檢測(cè)設(shè)備運(yùn)行狀態(tài)數(shù)據(jù)預(yù)測(cè)機(jī)器的健康狀況,但本項(xiàng)目只是一個(gè)原型設(shè)計(jì),驗(yàn)證MCU采集傳感器數(shù)據(jù),并驗(yàn)證運(yùn)行CNN學(xué)習(xí)模型離線預(yù)測(cè)的可行性,最終預(yù)測(cè)結(jié)果輸出到OLED屏。
RT-Thread 使用情況概述
本項(xiàng)目功能基于RT-Thread開發(fā),由于使用了Tensorflow,采用C/C++混合編程。NUCLEO-H743ZI2和ART-Pi開發(fā)板分別基于KEIL MDK和RT-Thread Studio開發(fā)。I2C分別采用了STM32HAL庫(kù)(H743)和RT-Thread GPIO軟件模擬(H750)調(diào)試開發(fā)。
硬件框架說(shuō)明
NUCLEO-H743ZI2開發(fā)板,傳感器及OLED屏幕接I2C2_SDA和I2C2_SCL。BUTTON接PD_1, 指示燈接PD_0。引腳對(duì)照如下:
ART-Pi開發(fā)板,傳感器及OLED屏幕接PH11和PH12。BUTTON接PH14, 指示燈接PC7。
軟件框架說(shuō)明
程序大體工作流程如下:
軟件模塊說(shuō)明
NUCLEO-H743ZI2開發(fā)板軟件:
Source目錄:Tensorflow Lite for Micro相關(guān)代碼,收集傳感器數(shù)據(jù),基于訓(xùn)練的模型預(yù)測(cè)傳感器狀態(tài),并在OLED上顯示結(jié)果;
Applications目錄:main.c為主程序,其中增加了RT-Thread shell commands用于測(cè)試和調(diào)試。Sht31_sensor命令用于讀取溫濕度傳感器值,實(shí)際暫時(shí)未參與建模和預(yù)測(cè);sh1107g_oled命令為OLED顯示測(cè)試命令;collect命令采集各狀態(tài)傳感器數(shù)據(jù),輸出到PC側(cè),整理標(biāo)注后用于建模。Check命令為采集預(yù)測(cè)功能。主程序啟動(dòng)后,屏幕上顯示提示信息,按button,開始運(yùn)行。
Sensors:分別為LSM6DSOX,SHT31,OLED的驅(qū)動(dòng)程序。
首先以RT-Thread shell commands形式,調(diào)試用到的各個(gè)外圍設(shè)備。其中collect命令調(diào)試LSM6DSOX,并采集數(shù)據(jù)用于建模,采集的數(shù)據(jù)歸為四類,在PC上構(gòu)建CNN并訓(xùn)練模型,并保存模型文件。
通過xxd -i my_model.tflite > my_model_.cc命令,把模型文件轉(zhuǎn)為數(shù)組形式。
Tensorflow相關(guān)代碼用C++寫,直接編譯可能報(bào)如下錯(cuò)誤,需要調(diào)整ARM Compile,以及不勾選Use MicroLIB。
ART-Pi開發(fā)板軟件:
與NUCLEO-H743ZI2基本類似,最大區(qū)別是Tensorflow Lite是通過RT-Thread Settings添加的,i2c是gpio軟件模擬的。檢測(cè)識(shí)別代碼放于下圖紅色標(biāo)注處。
作品完整圖片
視頻演示效果
首先是復(fù)位狀態(tài),屏幕上顯示
“Measuring System
Test for RT-Thread
Test for Tensorflow Lite Micro
Press button to start or stop”
按button,開始運(yùn)行,屏幕顯示預(yù)測(cè)狀態(tài)。
調(diào)整傳感器狀態(tài),MCU依據(jù)訓(xùn)練好的深度學(xué)習(xí)模型進(jìn)行預(yù)測(cè),屏幕上結(jié)果也跟著變化。
串口工具顯示預(yù)測(cè)過程日志信息。
寫在最后:
首先感謝活動(dòng)的組織者。作品只是一個(gè)原型設(shè)計(jì),跑通了基本流程。算法沒有優(yōu)化。同時(shí)在ART-Pi上模擬I2C還在存在通信效率問題,還在優(yōu)化。最后再次感謝組織者??!