C贸mo controlar un PLC industrial ESP32 a trav茅s de Bluetooth

Ejemplo de comunicaciones industriales
17 de diciembre de 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.


Buscar en nuestro blog

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

驴Est谩s buscando 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 de PLCs industriales >>>