Browsed by
Tag: shields

Industrial shields Open Source Hardware Case Study: Air-conditioning system

Industrial shields Open Source Hardware Case Study: Air-conditioning system



HVAC systems usually have an available contactor that will allow us to connect a relay. Connecting the relay to an Ardbox Relay PLC, and the PLC to the Touchberry Pi, we will be able to control climate conditions remotely. In this project, Opiron Electronics proposes to make a basic control system with an interface that will enable us to activate the HVAC system remotely with the Ardbox Relay PLC and the Touchberry Pi HMI, both from IndustrialShields. The purposed SCADA that will run on the Touchberry Pi is the following:


Hardware and communication

We are going to use:

  • An Ardbox Relay PLC: This is a 18 digital inputs / outputs Arduino based PLC that offers the possibility of communication between two computers using I2C. For more details, see the following link.
  • A Touchberry PI 10.1″: The Touchberry Pi is a 10.1″ panel PC designed to work in industrial environments and based on the popular Raspberry Pi.  For more details, see the following link.

To communicate both devices, we will make use of the I2C communication. The main advantage to use this protocol is its flexibility as you can easily connect up to 128 slaves to the Touchberry Pi. See below the Software explanation for more details on how to do it. 


Software and code

As mentioned above, the purposed SCADA is owned by myscadatechnologies. We’ve chosen this SCADA because it is open source, available to be downloaded and tested on Raspberry Pi, which is Touchberry Pi processor based. Since the communication point of view, I2C needs one Master. The other device will be the slave. The Ardbox PLC Relay will be the slave and the Touchberry Pi the master. Regarding the Ardbox Relay, the code to be uploaded is the next one:


When the command received from the scada is activated, we will activate the relay. Regarding the Touchberry Pi software to be developed, basically, as well as installing the scada on our Touchberry Pi, we have to set it as a master in the I2C developed network, but before we need to enable the I2C module on the PI.

  1. As root edit /etc/modprobe.d/raspi-blacklist.conf and comment out the line blacklisting i2c-bcm2708
      $ cat /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them) blacklist spi-bcm2708 #blacklist i2c-bcm2708

Next add i2c-dev to the /etc/modules file so it’s loaded on boot:

              # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. # Parameters can be specified after the module name. snd-bcm2835 ipv6 i2c-dev

Finally install i2c-tools:

  $ sudo apt-get install i2c-tools $ sudo adduser pi i2c

Finally, reboot the Touchberry Pi.

Key Benefits

The main benefits of the Opiron purposed solution are: –      Scalable system: The purposed system permits to connect multiple devices to the Touchberry Pi. –      Open Sourcebased: This feature means big flexibility, big availability of resources on the internet in case of failures or change implementations, etc. –      Remote control: Control climate conditions through an HMI panel.

  // Industrial Shields by BOOT & WORK CORP. // Powered by Opiron Electronics // Feb.2015 technical information for newsletter // The sketch demonstrates how to control a relay // with Ardbox Relay PLC and a Toucbberry Pi. // Keywords: Ardbox Relay PLC, Touchberry Pi. ////////////////////////////// //// PLC: ARDBOX RELAY PLC //// //// Number of inputs: 0 //// Number of outputs: 1 //// you need to configurate the correctly switch position for running like digital / analog or PWM mode ////////////////////////////// //// EXTERNAL BOX PIN NUMBERS: //// LEFT SIDE (Where Input Voltage lives). //// Pin 4 (RELAY 1) => (Box Pins: 0 and 1) //// Pin 5 (RELAY 2) => (Box Pins: 2 and 3) //// Pin 6 (RELAY 3) => (Box Pins: 4 and 5) //// Pin 7 (RELAY 4) => (Box Pins: 6 and 7) //// Pin 8 (RELAY 5) => (Box Pins: 8 and 9) //// Pin 9 (RELAY 6) => (Box Pins: 10 and 11) //// Pin 10 (RELAY 7) => (Box Pins: 12 and 13) //// RIGHT SIDE (The other side). //// Pin 11 (RELAY 8) => (Box Pins: 0 and A) //// //// Pin 13 => (Box Pin 1 Arduino Digital => 5Vdc output if pinMode(13,OUTPUT)) //// OR //// (Box Pin 1 Arduino Digital => 5Vdc input if pinMode(13,INPUT)) //// //// Box Pin 2 (GND) //// Box Pin 3 (GND) //// //// Pin 3 => (Box Pin 4) //// Pin 2 => (Box Pin 5) //// //// Pin A0 => (Box Pin 6) //// Pin A1 => (Box Pin 7) //// Pin A2 => (Box Pin 8) //// Pin A3 => (Box Pin 9) //// Pin A4 => (Box Pin 10) //// Pin A5 => (Box Pin 11) //// //// Analog pins 0 to 5. Put the jumper ON in case of digitalRead (24Vdc) otherwise analogRead (10Vdc) //// //Libraries #include //Library for I2C Master & Slave //Pins defintion #define Relay 4 // Relay //I2C Address for the Ardbox Relay PLC #define SLAVE_ADDRESS 0x04 // Variables int number = 0; // Functions void receiveData(int byteCount); void setup() { pinMode(Relay, OUTPUT); Serial.begin(9600); // start serial for output // initialize i2c as slave Wire.begin(SLAVE_ADDRESS); // define callbacks for i2c communication Wire.onReceive(receiveData); Serial.println(“Ready!”); } void loop() { //Nothing } // I2C Slave communication void receiveData(int byteCount){ while(Wire.available()) { number =; if (number == 1) { digitalWrite(Relay, HIGH); // Switch on the Relay } else if (number == 0) { digitalWrite(Relay, LOW); // Switch off the Relay } } }
Controlling the level of a tank for sewage treatment with an Arduino base PLC

Controlling the level of a tank for sewage treatment with an Arduino base PLC

10 Inputs / 10 Outputs
PLC Arduino ARDBOX 20 I/Os Analog


This project was undertaken to ensure the supply of a treatment plant for waste water purification. This required the correct filling of the tank that was responsible for providing the Dirty water. 2014111_Tratamiento_de_aguas


Ardbox is an easy, compact and economical way to automate your installation

10 Inputs / 10 Outputs
PLC Arduino ARDBOX 20 I/Os Analog

Signals configuration:

  • IN:                                                                                                                Ardbox Analog Signal
    • Full level Gravity filling tank (Digital input “24Vdc”)                          I0.1
    • Minimum level of Gravity filling tank (Digital input “24Vdc”)          I0.2
    • Level of storage tank (Analog input “0-10Vdc”)                                 I0.9
    • Auto/Manual Selector (Digital input “24Vdc”)                                   I0.3
    • Regulator quantity of Acid (Analog input “0-10Vdc”)                       I0.8
    • Regulator quantity of Flocculant (Analog input “0-10Vdc”)            I0.7
    • Ok water into processing plant ( Digital input “24Vdc”)                   I0.4
  • OUT:
    • Grinder pump (Digital output “ 24Vdc”)                                Q0.5
    • Acid dosing PUMP (Analog output “0-10Vdc”)                                   Q0.6
    • Filling pump to processing machine (Digital output “24Vdc”)         Q0.4
    • Flocculant dosing PUMP (PWM output “24Vdc”)                Q0.3
    • Full level Gravity filling tank (Digital output “24Vdc”)                       Q0.2
    • Air Electrovalve (Digital input “24Vdc”)                                               Q0.7
    • Red Light (Manual MODE)                                                                      Q0.8
    • Green Light (Auto MODE)                                                                       Q0.9

_2014111_water_treatment_V1_0 2014111_arduino_code

10 Inputs / 10 Outputs
PLC Arduino ARDBOX 20 I/Os Analog