Introduction: Securing SCADA for Arduino-based Control Systems

About: This is the official account for publishing University of West Florida's SCADA research group findings and documentation

Supervisory Control and Data Acquisition (SCADA) is a framework for monitoring and remotely accessing control systems commonly used in a wide range of industrial systems such as power plants, railways, manufacturing units, steel plants, airplanes, smart homes and many other forms of automated control systems.

Step 1: Shopping for Component List

This project requires the following components:

1. Arduino UNO (Amazon)

2. LEDs (Amazon)

3. Ultrasonic Sensor (Amazon)

4. Resistors, Capacitors, Switches, Jumper Wires (Amazon)

5. MCP4921: Digital-to-Analog Converter 12-bit IC (Amazon)

6. MCP23S17: I/O Expander 16-bit IC (Amazon)

Step 2: Setting Up the Arduino IDE

This project requires the use of certain libraries for interfacing with different ICs such as I/O expander and Digital-to-Analog IC chips. The following libraries are required and have been provided through a Github repository.

0. Go through the following libraries and install them onto the Arduino IDE using Sketch > Include Library > Add .ZIP Library and then browse the ZIP file that is included in the Github repository below:

1. State Machine Library (SM)

2. MCP492X Library

3. MCP23S17 Library

Github Repository: SCADA for Arduino-based Control Systems

Step 3: Understanding the Control System

The project essentially implements a 4-state Finite State Machine (FSM) using the State Machine library. The four states can be described as the following.

1. NO_LED: All LEDs are in the OFF state

2. ALL_LED: All the LEDs are in the ON state

3. BIN_CNT: The set of 8 LEDs functions as the display of an 8-bit binary counting sequence.

4. SENSE: The state switches to ALL_LED if the Ultrasonic sensor detects an object in proximity. Otherwise, continues to count in binary just like the BIN_CNT state.

Step 4: Building the Circuit

Multiple pictures have been provided taken from different angles of the Arduino Control System. Use the images as the reference to build the system.

Step 5: Uploading the Source Code to Arduino

Once the circuit has been built, the Arduino sketch provided in the SCADA.ino file in the Github repository can be uploaded to the Arduino. The State Machine can then be tested using the different push button in the circuit as shown in the video.