基于深度学习的机器故障智能检测设备
作者:徐华
应用背景
在智能制造时代,随着工厂设备自动化程度不断越高,设备的预测性维护工作在生产中起着越来越重要的作用。预测性维护技术是未来智慧工厂重要构成部分,通过部署各种传感器,采集工厂设备各种运行状态数据,研究检测数据分析、预测算法微型化实现,快速便捷的对工业设备健康状况进行检测,在设备健康状况发生恶化之前做出合理的维护决策,消除设备的安全隐患。
实现功能
本项目基于RT-Thread、STM32开发板(NUCLEO-H743ZI2做了演示版本,ART-Pi只验证调试了传感器,跑通了流程,存在模拟i2c通信效率问题)、STM32 LSM6DSOX传感器、1.12寸OLED屏,SHT31温湿度传感器(温湿度数据暂时未参与建模)以及按键和指示灯设计一个MEMS振动监控设备。实际要求是利用检测设备运行状态数据预测机器的健康状况,但本项目只是一个原型设计,验证MCU采集传感器数据,并验证运行CNN学习模型离线预测的可行性,最终预测结果输出到OLED屏。
RT-Thread 使用情况概述
本项目功能基于RT-Thread开发,由于使用了Tensorflow,采用C/C++混合编程。NUCLEO-H743ZI2和ART-Pi开发板分别基于KEIL MDK和RT-Thread Studio开发。I2C分别采用了STM32HAL库(H743)和RT-Thread GPIO软件模拟(H750)调试开发。
硬件框架说明
NUCLEO-H743ZI2开发板,传感器及OLED屏幕接I2C2_SDA和I2C2_SCL。BUTTON接PD_1, 指示灯接PD_0。引脚对照如下:
ART-Pi开发板,传感器及OLED屏幕接PH11和PH12。BUTTON接PH14, 指示灯接PC7。
软件框架说明
程序大体工作流程如下:
软件模块说明
NUCLEO-H743ZI2开发板软件:
Source目录:Tensorflow Lite for Micro相关代码,收集传感器数据,基于训练的模型预测传感器状态,并在OLED上显示结果;
Applications目录:main.c为主程序,其中增加了RT-Thread shell commands用于测试和调试。Sht31_sensor命令用于读取温湿度传感器值,实际暂时未参与建模和预测;sh1107g_oled命令为OLED显示测试命令;collect命令采集各状态传感器数据,输出到PC侧,整理标注后用于建模。Check命令为采集预测功能。主程序启动后,屏幕上显示提示信息,按button,开始运行。
Sensors:分别为LSM6DSOX,SHT31,OLED的驱动程序。
首先以RT-Thread shell commands形式,调试用到的各个外围设备。其中collect命令调试LSM6DSOX,并采集数据用于建模,采集的数据归为四类,在PC上构建CNN并训练模型,并保存模型文件。
通过xxd -i my_model.tflite > my_model_.cc命令,把模型文件转为数组形式。
Tensorflow相关代码用C++写,直接编译可能报如下错误,需要调整ARM Compile,以及不勾选Use MicroLIB。
ART-Pi开发板软件:
与NUCLEO-H743ZI2基本类似,最大区别是Tensorflow Lite是通过RT-Thread Settings添加的,i2c是gpio软件模拟的。检测识别代码放于下图红色标注处。
作品完整图片
视频演示效果
首先是复位状态,屏幕上显示
“Measuring System
Test for RT-Thread
Test for Tensorflow Lite Micro
Press button to start or stop”
按button,开始运行,屏幕显示预测状态。
调整传感器状态,MCU依据训练好的深度学习模型进行预测,屏幕上结果也跟着变化。
串口工具显示预测过程日志信息。
写在最后:
首先感谢活动的组织者。作品只是一个原型设计,跑通了基本流程。算法没有优化。同时在ART-Pi上模拟I2C还在存在通信效率问题,还在优化。最后再次感谢组织者!!