Ir al contenido

← Todas las funcionalidades

Piso móvil hidráulico (app BLE)ESP32 PLC 38RBLEComunicación

Controlar un PLC ESP32 industrial desde una app móvil por BLE

Las máquinas móviles — remolques, skids, grupos hidráulicos portátiles — a menudo no disponen de red alguna, pero los operarios esperan controlarlas desde el teléfono. El Bluetooth Low Energy integrado del ESP32 convierte el propio PLC en el HMI: este ejemplo expone un servicio Nordic UART para que cualquier app (o nRF Connect para pruebas) pueda accionar las válvulas hidráulicas y leer presión y temperatura en vivo.

Un pequeño protocolo ASCII sobre BLE UART

Los comandos llegan como tramas [M]1* (carga / descarga / paro) y la telemetría se notifica una vez por segundo como [T]23.5[P]120[C1]42. Que las tramas sean legibles por humanos hace trivial la depuración en campo: puedes operar la máquina desde un terminal BLE genérico antes de que exista la app.

De sensores 4-20 mA a unidades de ingeniería

Los transmisores de presión (0-250 bar) y temperatura (5-90 °C) se leen en entradas analógicas y se convierten con un mapeo de dos líneas. Las lecturas fuera de rango delatan un lazo roto: un detector de rotura de cable gratuito que el 4-20 mA te da y el 0-10 V no.

La seguridad, primero

Una comprobación de sobrepresión se ejecuta en cada iteración del loop diga lo que diga la app: por encima de 230 bar todo se detiene y la app recibe un evento [E]SOBREPRESION. Nunca dejes que la UI sea la capa de seguridad.

Un fragmento de la implementación

Tal cual del ejemplo desplegado en el ESP32 PLC 38R — cópialo libremente:

void setup() {
  Serial.begin(115200);
  pinMode(I_TEMP, INPUT); pinMode(I_PRES, INPUT);
  pinMode(R_EVG, OUTPUT); pinMode(R_EVD, OUTPUT); pinMode(R_EVC, OUTPUT);
  setMotion(MOTION_NONE);

  BLEDevice::init("PLC-HIDRAULICO");
  BLEServer *server = BLEDevice::createServer();
  server->setCallbacks(new ServerCB());

  BLEService *svc = server->createService(SERVICE_UUID);
  txChar = svc->createCharacteristic(CHAR_TX_UUID, BLECharacteristic::PROPERTY_NOTIFY);
  txChar->addDescriptor(new BLE2902());
  BLECharacteristic *rxChar =
      svc->createCharacteristic(CHAR_RX_UUID, BLECharacteristic::PROPERTY_WRITE);
  rxChar->setCallbacks(new RxCB());

  svc->start();
  server->getAdvertising()->start();
  Serial.println("BLE advertising as PLC-HIDRAULICO");
}

El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.

Preguntas frecuentes

¿Necesito desarrollar una app móvil?

Para empezar, no: cualquier terminal BLE UART (nRF Connect, Serial Bluetooth Terminal) puede enviar las tramas de comando. Una app dedicada es una mejora de UX, no un requisito.

¿Cuál es el alcance de BLE?

Normalmente de 10 a 30 m en campo. Para distancias mayores considera el modo AP de WiFi o LoRaWAN — consulta los tutoriales relacionados.

¿Puedo securizar la conexión?

Sí, el emparejamiento BLE con passkey puede activarse en la pila BLE del ESP32; para máquinas en espacios públicos es recomendable.

Funcionalidades relacionadas