"VibroGuard": A Hardware-Software Co-Solution for Monitoring and Analyzing Vibrations of Industrial Machines
Many machines used in the industry tend to vibrate in their natural operating conditions. However, these vibrations can be analyzed to get valuable insights about the machine, such as detecting anomalous behavior or an indication for a near-future repair.
This project is done as a partial fulfillment for EN2160: Electronic Design Realization module in the Semester 4 curriculum in the Department of Electronic and Telecommunication Engineering at University of Moratuwa, Sri Lanka.
Project "VibroGuard" was aimed to design and develop an industry level solution. Accordingly, a hardware-software co-solution is developed including PCB, Enclosure, Software, and Firmware.
Demonstration.Video.-.VibroGuard.mp4
Product hardware consisted of two modules. Each of them contained a separate 2-layer PCB designed using Altium Designer.
Main Module | Sensor Module |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
PCB design files and schematics can be found here.
ATmega328P-AU microcontroller is used along with FT232RL Serial UART IC in the Main Module. The microcontroller in programmed in C++, using register level programming such as IO port manipulation, UART and I2C communication, sampling accelerometer reading with given sampling frequency, etc.
The code can be found here.
Similar to PCB design, enclosures were also designed for the two separate modules in SOLIDWORKS and 3D printed. In the process, moldability of the designs were also considered.
Main Module | Sensor Module |
---|---|
Enclosure design files can be found here.
Once the acceleration data is sampled and sent by the microcontroller via the UART interface, it is acquired by the computer, and displayed on screen in graphical format. Matplotlib is used for data visualization.
Data visualization can be performed in two modes.
- Just visualize incoming data of vibrations.
- Visualize with detected anomalies (anomalies in red).
Just Visualizing | Visualizing with Anomalies |
---|---|
![]() |
![]() |
For code in initial stages of data visualization, see here.
Anomaly detection is done by utilizing autoencoders, by utilizing TensorFlow. Three copies of the same model architecture are used for the x, y, and z axes of the accelerometer data streams.
User is given the flexibility to train their own models or load saved models depending on the situation. e.g.: If the device is connected to a new vibrating machine, models should be re-trained accordingly.
For code in initial stages of machine learning model development, see here.
A Graphical User Interface (GUI) application was developed using Tkinter framework in Python. With the GUI application, the user can navigate through the following options.
- Set baud rate and port (COM port in Windows) where the device is connected.
- Collect a dataset of,
- specified number of samples or
- for a specified amount of time,
- Train machine learning models by,
- Collect data and train at the same time
- Train using data collected before
- Load saved models
- Visualize data either,
- without anomaly detection (just visualize incoming data) or
- with anomaly detection
![]() |
![]() |
---|---|
![]() |
![]() |
Code related to GUI application development and integration of both data visualization and machine learning parts can be found here.
The following images show some steps of system integration including wiring, assembling, and working of powered-up module.
![]() |
![]() |
---|---|
![]() |
![]() |
Detailed documentation of the project can be found using the following links. Feel free to refer them to get a thorough understanding of the project.