Browsed by
Etiqueta: panel pc

Control of soil humidity in an irrigation installation

Control of soil humidity in an irrigation installation

This newsletter is really interesting because control soil humidity in irrigation installations makes saving water, time and money.  Continue reading… sch0   Hardware

Hardware selection is very important when you try to develop projects where sensors, actuators and PLC´s must talk each other. For this project, with chosen the following equipment:

  • PLC: Any PLC from IndustrialShields is a good option. We have chosen the M-Duino PLC Arduino 21 I/Os Analog/Digital because we think it has different communication options to be communicated with other systems (Ethernet, RS232, I2C…).
  • Panel PC: For this project, we are going to visualize and control our installation with the HummTouch 10.1” Linux panel pc.
  • Humidity sensor: Probably, when you try to develop an application like we are trying to, the most important selection is the sensor itself. There are a lot of humidity sensors available around the market completely compatible with Arduino based hardware. We´ve chosen the SHT10 sensor from Adafruit because it includes a temperature sensor as well, it comes with an intermetal mesh encasing, which is weatherproof and because it is designed to be submersible in water.
  •  Others: A relay to activate the irrigation system, a 24Vdc power supply, a good enclosure to protect the equipment and cables are important things to keep in mind too.


To develop the project, the first thing to do is to ensure that we have the proper software and libraries. As we are going to use the SHT10 sensor, we will use the SHT1x library that you can download in the following link: SHT10 uses a two wire communication interface similar to I2C. As usual, we will use the Arduino IDE to develop the software. You can download it here: You can see the code in the following file: 2014111_arduino_code   Key benefits   There are a lot of benefits to implement a humidity control in an irrigation system. Let´s see the most important:

  • Saves Time: Automation does the job for you, so you can go on holidays knowing that your flowers will be maintained when you come back.
  •  Saves Money: No more water wasted, automation guarantees efficiency: water is used when is needed.
  •  Improves Growth: An irrigiation system guarantees flowers waterd with proper amount of water. In a reasonable time, you will have a greener garden.

  Contact us!

Do you have a process to be automated? Contact Industrialshields to buy the proper hardware and Opiron to implement the entire solution.

Labeling machine automation with M-Duino PLC

Labeling machine automation with M-Duino PLC

We will make the automation of a labeling machine based on the M-Duino PLC from Industrialshields. The labeling machine will label bottles of a plant.


Hardware I: Equipment to be used Basically, the labeling machine system consists of:

  • An M-Duino PLC: This controller is the heart of the system. It controls the display, generates interrupts, and controls the communication.
  • A Panel PC: Used to read and display the status of the system over the Panel Pc.
  • A detection Sensor:  We will make use of optical fork sensors based on infrared (non visible) light sources because they are easy to be programmed and they allow us a manual adjustment to the sensitivity via potentiometer.     
  • A motor: The motor is used to fix a constant speed in the conveyor belt. –
  • A relay: Used to activate the labeling piston.

sch Hardware II:  System   Regarding the system, in this section we will explain the interface between the M-Duino PLC and the other elements:

  • We have one detection sensor that we will program it as a Digital Input. Each time a bottle is placed in fornt of the detector, the conveyor belt will stop and wait for label the bottle.
  • The PLC will control the motion of the conveyor belt activating a motor through a relay. This will be programmed as a Digital Output.
  • The PLC will control too the labeling piston. This system will be activated through a relay too, and therefore, programmed as a Digital Output too.
  • As we made in other newsletters, the communication between Panel PC and the M-Duino will be made with I2C.

Furthermore, the system will be able to be stopped through the Panel PC. Let´s see a picture of the system to be automated:   foto       Software and code As we explained before, the system has a Panel PC which will allow us to visualize the system status (not implemented in this code) and stop the system whenever we need. The communication between the PLC and the Panel PC will be with I2C, so we will use the Wire library (you can get more information about the library here). The system will have 3 states:

  1. STOP: When the command is received from the Panel PC. This state will enable us to make maintenance activities on the system and other related tasks.
  2. Running and Bottle detected: When a bottle is detected, the system will stop the motor and activate the labeling piston.
  3. Running: This state activates the motor.

As in other newsletters, we recommend using Tesla Scada, which is able to work on Android systems. You can download the code here: 2014111_arduino_code     Key Benefits The main benefits of the Opiron purposed solution are:

  • Open Hardware: Which reliable, cheap and expandable
  • Real time measurement: Panel PC enable users to visualize the system status and stop it easy.
  • Easy to be integrated: If you plant has already installed an automation system, M-Duino can be integrated using Ethernet.
Contact us!
Do you have a process to be automated? Contact Opiron to implement the entire solution and Industrialshields to buy the proper hardware.


Real time electrical consumption monitoring with M-Duino

Real time electrical consumption monitoring with M-Duino

In this Project, we will show you how to read electrical consumption using Modbus communication. Modbus is an industry standard communications protocol for electronic device Hardware I: Equipment to be used The electrical consumption monitoring system consists of:

  • An M-Duino PLC: This controller is the heart of the system. It controls the display, generates interrupts, and controls the communication.

  • A Panel PC: Used to read on the status of a counter and display the graph of monthly consumption over the Panel Pc. –         Switch: Switch will work as the interface between slaves and Master in our control network.


  • A Power Meter witch Modbus TCP/IP communication capabilities (as TCP is Transmission Control Protocol and IP is Internet Protocol.)
  • Wires and some programming experience J.

Hardware II:  Communication The nice feature of Panel PC we used is that it has many interfaces such as Ethernet, USB  and I²C as well. We´ve expressly chosen Ethernet because our PLC  and our I2C panel have this Ethernet connecitivity. See the following picture to understand it: sch2   Software and code Arduino sketch essentially uses the Modbus TCP library for Arduino  (see the Arduino installer tutorial here).  Some important things to take care when we use this library:

  1. Insert the modbus_update function in the loop, because. takes care of the received modbus commands and will modify the registers accordingly in case of writing or reading requests.
  2. Declare an integer array (named holdingRegs) that stores the modbus registers.
  3. We recommend to review modbus tcp basics at

After that, just start sending values to the panel PC through USB  I2C communication. You can find the code to be uploaded to the PLC here: 2014111_arduino_code   You need to download  libraries:

And what about the software to install in our Panel PC to start visualizing graphs? In this case, we recommend to use Tesla Scada, wich is able to work on Android systems . The panel pc will start receiving data and print out data in graphs! Key Benefits The main benefits of the Opiron purposed solution are:

  • Time Saving: Forget to go to view and write values in notebooks, your control system will do this job for you.
  • Real time measurement: System provides reliable data quickly.
  • Digital data analysis: If you can measure it, you can improve it!
Contact us!
Do you have a process to be automated? Contact Opiron to implement the entire solution and Industrialshields to buy the proper hardware.
Industrial shields Open Source Hardware Case Study: Air-conditioning system

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

Como activar un relé con el PLC basado en Arduino Ardbox Relay a través de una Touchberry Pi


Los sistemas de aire acondicionado por lo general tienen un contactor disponible que nos permitirá conectar un relé. Conectando el relé PLC basado en Arduino Ardbox, y el PLC a la Touchberry Pi, seremos capaces de controlar de forma remota las condiciones climáticas. En este proyecto, Opiron Electronics propone hacer un sistema de control básico con una interfaz que nos permitirá activar el sistema de climatización de forma remota con el relé del PLC Ardbox Relay y el Touchberry Pi como HMI, todo ellos productos basados en Hardware libre que se pueden encontrar en IndustrialShields. El SCADA propuesto que se ejecutará en el Touchberry Pi es la siguiente: http://www.myscadatechnologies.comPICTURE Hardware y comunicación

Vamos a usar el siguiente hardware para la instalación:

  • Un Ardbox Relay PLC que es un PLC basado en Arduino con 18 entradas o salidad digitales que ofrece la posibilidad de comunicación entre dos ordenadores usando I2C. Para más detalles ver el siguiente link.
  • Un Touchberry PI 10.1″. El Touchberry Pi es un Panel PC de 10.1″ diseñado para trabajar en entornos industriales y basado en el popular Raspberry Pi. Para más detalles ver el siguiente link.

Para comunicar ambos aparatos entre si, vamos a hacer uso del protocolo de comunicación I2C. La principal ventaja del mismo es su flexibilidad ya que nos permite conectar facilmente hasta 128 dispositivos como esclavos a la Touchberry Pi. Para más detalles sobre como hacerlo ver dbajo el apartado de Software al respecto.


Software y código

Tal y como se ha mencionado más arriba, el SCADA propuesto está alojado en myscadatechnologies. Hemos escogido este SCADA por varios motivos: es Open Source, está disponible para su descarga immediata y ha sido testeado previamente para Raspberry Pi, que es el procesador de la Touchberry Pi. Desde el punto de vista de la comuniaciones, I2C necesita un Master. El otro aparato debe ser el esclavo. En nuestro caso usaremos el Ardbox PLC Relay como esclavo y el the Touchberry Pi como Master. Por lo que respecta al Ardbox Relay, el código que le tendremos que cargar se puede ver a continuación:


When the command received from the scada is activated, we will activate the relay. Regarding the Touchberry Pi software to be developed, basically, moreover to install the scada on our Touchberry Pi, we have to set the it as a master in the I2C developed network First 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 } } }