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