Cómo controlar un PLC industrial ESP32 a través de Bluetooth
Ejemplo de comunicaciones industriales
17 diciembre, 2020 por
Cómo controlar un PLC industrial ESP32 a través de Bluetooth
Boot & Work Corp. S.L., Quesada Dani Salvans

Introducción

Hoy en día, el Bluetooth es una de las tecnologías más utilizadas en nuestra vida cotidiana; aparece en muchas conexiones con teléfonos móviles, tabletas y otros dispositivos con conexión. Además, se puede utilizar en aplicaciones relacionadas con la industria, como la gestión de un controlador lógico programable a distancia. En este post, vamos a ver un ejemplo fácil sobre ello.

Es muy importante saber que vamos a trabajar con el Bluetooth estándar, no con el BLE (Bluetooth de baja energía), porque vamos a ver un ejemplo de esta versión en otro post. Este post está hecho para trabajar con el PLC de 10 E/S ESP32, pero para la conexión y configuración del PLC, por favor, echa un vistazo a la hoja de datos y la guía de usuario del propio producto.


Enlaces relacionados 

Las comunicaciones m√°s utilizadas en cada sector industrial
Leer >>

Cómo usar los protocolos de comunicación en la automatización industrial
Leer >>

Familia de PLCs industriales 10 I/Os
Leer >>

Cómo programar un PLC industrial ESP32 de 10 E/S a través de WiFi
Leer >>


Requisitos


Ejemplo

Conexiones

El PLC tiene que estar conectado a una fuente de alimentación de 12/24V y conectado al PC a través de un cable microUSB para cargar el código y utilizar el Puerto Serie. Aparte de eso, este ejemplo utiliza seis leds conectados a seis salidas digitales del PLC (por lo que recomendamos la versión digital del PLC). 

ADVERTENCIA: LOS LEDS TIENEN QUE SER COMPATIBLES CON LA CORRIENTE Y EL VOLTAJE DE LAS SALIDAS DEL PLC, DE LO CONTRARIO LOS LEDS PUEDEN SER DA√ĎADOS.


Q0_0    ->     led 1       

Q0_1    ->     led 2       

Q0_2    ->     led 3       

Q0_3    ->     led 4       

Q0_4    ->     led 5       

Q0_5    ->     led 6       


Código

En primer lugar, incluimos la biblioteca "BluetoothSerial.h" que permite trabajar con esta tecnolog√≠a como si se utilizara la comunicaci√≥n en serie. Despu√©s de esto, debes asegurarte de que el Bluetooth est√° habilitado con la definici√≥n condicional. Tambi√©n definimos algunos par√°metros m√°s y una funci√≥n open_all dise√Īada para abrir todos los leds simult√°neamente.

En la configuración, tienes que inicializar el baudarte Serial, el SerialBT escribiendo el nombre del dispositivo Bluetooth, puedes configurar los pines de los leds como salidas, y definir un parámetro para la función millis() por lo que vas a necesitarlo.

En el bucle, se hace un bloque para abrir un led por cada periodo de tiempo en una fila; si millis() (que cuenta el tiempo real del bucle) - Tiempo (definido previamente) es mayor o igual al Periodo (250 ms), se introduce el primer condicional y, en el segundo, si select (inicializado a 0) es inferior a 7, se activa el led actual y se desactiva el anterior (si no, select se pone a 0). Se actualiza la variable de tiempo. Si el puerto Serial est√° disponible, el SerialBT escribe cualquier cosa que sea le√≠da por el puerto Serial. Si el SerialBT est√° disponible, recibimos los datos haciendo un SerialBT.read y, si recibimos una nueva l√≠nea ('\n'), subimos el mensaje agregando la cadena del char recibido (de lo contrario el mensaje estar√° vac√≠o). Har√°s un Serial.write del char recibido. Si el mensaje recibido por el BT (PLC) es STOP y se sincroniza con una lectura ALTA del led conectado al led_4 (Q0_3), habr√°s ganado la partida y todos los leds se abrir√°n en se√Īal de victoria.


/*
   Copyright (c) 2020 Boot&Work Corp., S.L. All rights reserved

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */


#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;

int leds[] = {Q0_0, Q0_1, Q0_2, Q0_3, Q0_4, Q0_5};

String message = "";
char char_received;
int Period = 250;
unsigned long Time;
int select = 1;

void open_all(void){
  select = 0;
  while(select < 7){
    digitalWrite(leds[select], HIGH);
    select += 1;
  }
}

void setup() {

  Serial.begin(115200);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  Serial.println("The device started, now you can pair it with bluetooth!");
  pinMode(Q0_0, OUTPUT);
  pinMode(Q0_1, OUTPUT);
  pinMode(Q0_2, OUTPUT);
  pinMode(Q0_3, OUTPUT);
  pinMode(Q0_4, OUTPUT);
  pinMode(Q0_5, OUTPUT);
  Time = millis();
}

void loop() {
if(millis()-Time>=Period){
    if (select<7){
      digitalWrite(leds[select-1], LOW);
      digitalWrite(leds[select], HIGH);
      select += 1;
    }
    else{
      select = 0;
    }
    Time = millis();
  }
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    char_received = SerialBT.read();
    if (char_received != '\n'){
      message += String(char_received);
    }
    else {
      message = "";
    }
    Serial.write(char_received);
    if (message == "STOP"){
      if (digitalRead(Q0_3) == HIGH){
        Serial.println("\nYOU HAVE WON");
        open_all();
        Time = 0;
      }
    }
  }
  delay(20);
}


Aplicación

Si quieres comunicarte con el PLC a través de Bluetooth, necesitarás, por ejemplo, una aplicación Bluetooth en serie, como la que se usa en este ejemplo. El nombre de la aplicación es "Serial Bluetooth Terminal©"* y puedes descargarla en el Android Market (no existe en el Apple Store pero puedes encontrar otras similares):

Aplicación Serial Bluetooth Terminal

Después de esto, tienes que cargar el código previo al PLC, enviando el dispositivo y el puerto correctos. Cuando la carga se haya completado, puedes buscar el dispositivo llamado "ESP32test" con el Bluetooth de tu teléfono móvil y emparejarlo:

Aplicación Serial Bluetooth Terminal

Ahora, puedes abrir la aplicación, haz clic en el botón de conexión en la esquina superior derecha y puede comenzar a chatear con el Serial Monitor IDE de Arduino; puede escribir y recibir mensajes usando la aplicación (teléfono móvil) - Serial Monitor (PLC). Los mensajes azules son los que se envían desde la aplicación al PLC, y los mensajes verdes son los que se envían desde el PLC a la aplicación:

Aplicación Serial Bluetooth Terminal

Como hemos explicado, el juego aquí es que los leds se van a activar uno por uno, en orden y, usando la aplicación, tienes que escribir y enviar la palabra "STOP" cuando el cuarto led esté encendido. Puedes intentarlo tantas veces como quieras y, si ganas, se imprimirá un mensaje a través del Monitor de Serie y todos los leds se activarán:


How to control an ESP32 industrial controller via Bluetooth


* Esta aplicación está creada por Kai Morich ©

¬ŅQuiere saber m√°s sobre el funcionamiento y las posibilidades de nuestros dispositivos basados en c√≥digo abierto?

Mantente al día suscribiéndote a nuestro blog.


Cómo controlar un PLC industrial ESP32 a través de Bluetooth
Boot & Work Corp. S.L., Quesada Dani Salvans
17 diciembre, 2020
Compartir
Archivar

¬ŅBuscas tu controlador l√≥gico programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial >>>

¬ŅQuieres m√°s informaci√≥n?

¬°Rellena el formulario!

¬°Cu√©ntame m√°s!