This tutorial demonstrates how to implement anomaly detection on an Arduino® Opta® PLC using Edge Impulse. Anomaly detection is a machine learning technique that identifies unusual patterns in data, making it ideal for monitoring industrial processes and equipment. By training a model to recognize normal behavior, you can detect deviations that may indicate faults or malfunctions.
To showcase how easy it is to integrate Edge Impulse with the Arduino® Opta® PLC, we'll walk through a practical example using the Arduino DIN Celsius board that comes with the kit, but also a Motor to demonstrate this setup can be used interchangeably. This example demonstrates how to set up a temperature-controlled system, collect data, train a machine learning model, and deploy it for anomaly detection.
In this tutorial, you will:
Collect temperature data from a sensor connected to the Opta® PLC.
Train a machine learning model in Edge Impulse to detect anomalies in the data.
Deploy the model to the Opta® PLC for real-time inference.
Optionally, integrate the model with Arduino Cloud for remote monitoring and visualization.
Arduino® Opta® PLC (Wi-Fi version recommended)
Arduino IDE 2 (Download here)
Edge Impulse account (Sign up here)
Edge Impulse CLI (Installation guide
Arduino Cloud account (optional for cloud visualization here)
About the DIN Celsius Board
The DIN Celsius is an all-in-one temperature laboratory offering two independent heaters and a temperature sensor. It allows you to simulate heating scenarios and monitor temperature changes, making it ideal for testing our anomaly detection use case, we can introduce an anomaly by turning off one of the heaters to cause a deviation from the normal condition.
Connecting the DIN Celsius to the Opta® PLC
Safety First: Before making any connections, ensure that all power sources are disconnected to prevent electric shock or short circuits.
Connections Overview:
Power Connections:
Connect the +24V and GND terminals of the DIN Celsius to the corresponding power supply pins.
Heater Control:
Connect Relay 3 (pin 2) on the Opta® PLC to Input Heat 1 on the DIN Celsius.
Connect Relay 4 (pin 3) on the Opta® PLC to Input Heat 2 on the DIN Celsius.
These connections will control the two independent heaters on the DIN Celsius.
Temperature Sensor Input:
Connect the Output Voltage from the DIN Celsius to the I8 input (analog pin A7) on the Opta® PLC.
This connection allows the PLC to read the temperature sensor data.
Pin Definitions:
HEAT_LEFT (Relay 3) connected to pin 2
HEAT_RIGHT (Relay 4) connected to pin 3
TEMP_SENS connected to analog pin A7
BTN (User Button) on the Opta® PLC
Arduino IDE Configuration
Install Necessary Libraries:
Ensure you have the latest Arduino IDE 2 installed.
Install any required libraries via the Library Manager, such as Edge Impulse SDK and Arduino_HTS221 if using temperature/humidity sensors.
Define Pin Constants:
Testing the Connections
Heater Control Test Code:
Upload the Code: Use the Arduino IDE to upload the sketch to the Opta® PLC.
Verify Operation: The LEDs on the DIN Celsius should blink, indicating the heaters are being activated.
Temperature Sensor Reading Test:
Open Serial Monitor: Set the baud rate to 9600.
Observe Readings: You should see numerical values corresponding to the temperature sensor output.
Log In: Access your Edge Impulse account.
New Project: Create a project named, for example, "Opta PLC Anomaly Detection."
Upload a sketch to the Opta® PLC that reads the temperature sensor and sends data to Edge Impulse.
Steps:
Upload the Data Forwarder Sketch: Use the Arduino IDE to upload the sketch to the Opta® PLC.
Run Data Forwarder: In your terminal, execute the data forwarding command.
Select Serial Port: Choose the serial port corresponding to the Opta® PLC.
Label the Data: As you collect data, assign labels to your data (e.g., "normal," "anomalous") based on the system's behavior.
Note: If you are new to Edge Impulse, please refer to our Data Forwarder documentation for detailed instructions.
Data Forwarder Sketch:
Run Data Forwarder: In your terminal, execute:
Select Serial Port: Choose the serial port corresponding to the Opta® PLC.
Label the Data: Assign labels to your data (e.g., "normal," "anomalous") as you collect it.
If you are new to Edge Impulse please see our Data Forwarder documentation here
Add Blocks: 2. Add Blocks:
Processing Block: Select a Time Series or Spectral Analysis block based on your data characteristics.
Learning Block: Choose Anomaly Detection using the Gaussian Mixture Model (GMM).
Window Size: Set according to the data frequency (e.g., 1000 ms).
Window Increase: Set overlap (e.g., 500 ms).
Compute Features: Navigate to the Generate Features tab and run feature generation.
Training Parameters:
Epochs: Start with 100 and adjust as needed.
Learning Rate: Default of 0.005 is usually sufficient. Start Training: Monitor the accuracy and loss graphs.
Model Testing: Use a separate dataset to evaluate model performance.
Adjust if Necessary: Retrain or adjust parameters based on results.
Deployment Tab: In Edge Impulse, go to Deployment.
Select Arduino Library: Download the library tailored for your model.
Read on here
Add Library to IDE: Import the downloaded library into your Arduino IDE.
If you are new to Arduino inference code, see our Arduino inference code documentation here for more information.
Replace Your_Edge_Impulse_Inference_Library.h
with the actual header file name from your downloaded library.
Set ANOMALY_THRESHOLD
to an appropriate value based on your model's performance.
Compile and Upload: Use the Arduino IDE to program the Opta® PLC with your new inference code.
Monitor Output: Open the Serial Monitor to observe inference results and system behavior.
See the full Arduino OPTA for Arduino Cloud guide here.
Explore how Blues' Wireless for PLC Expansion enables seamless, secure cellular connectivity, allowing your Opta® PLC to communicate with your cloud-based monitoring systems, regardless of location and without the hassle of local Wi-Fi.
See the Blues Wireless here.
This section will be updated following the Blues Wireless Webinar on the 30th of October Sign up here
Congratulations! You have successfully implemented anomaly detection on an Arduino® Opta® PLC using Edge Impulse. This tutorial demonstrates the seamless integration of machine learning models with industrial automation systems, enabling real-time monitoring and fault detection.
Please share your experiences and feedback with us on the Edge Impulse forum.
For more information on Edge Impulse and Arduino® Opta® PLC, visit the official websites:
Arduino Cloud Issues: We are aware of issues with Arduino Cloud .properties file format vs IDE and are working with Arduino. If you have issues try moving the .properties file to the same folder as the .ino file and re-uploading the sketch.