Ir al contenido

Guía de WiFi, Bluetooth y BLE del ESP32 PLC

Conectividad inalámbrica integrada del ESP32 PLC de Industrial Shields con ejemplos en Arduino
19 de junio de 2026 por
Guía de WiFi, Bluetooth y BLE del ESP32 PLC
Serzh Ohanyan

The Industrial Shields ESP32 PLC includes Wi-Fi 802.11 b/g/n and dual-mode Bluetooth 4.2 (Classic BR/EDR and BLE) built directly into the ESP32 chip. No additional wireless modules are required. This article covers the main connectivity specifications of the ESP32 and provides working examples for WiFi network scanning and BLE communication programmed with the Arduino IDE.

Especificaciones WiFi y Bluetooth del ESP32

El ESP32 es una solución monochip de 2,4 GHz que combina Wi-Fi y Bluetooth, fabricado con tecnología de bajo consumo de 40 nm de TSMC. Integra un procesador Xtensa LX6 de doble núcleo, 520 KB de SRAM y aceleradores criptográficos por hardware, lo que lo hace adecuado para aplicaciones industriales conectadas. La especificación completa está disponible en la hoja de datos oficial:

ESP32 Series Datasheet (Espressif)

WiFi

  • 802.11 b/g/n (2,4 GHz), hasta 150 Mbps en modo 802.11n
  • Modo Station, SoftAP y modo combinado SoftAP + Station
  • Soporte de WPA/WPA2/WPA2-Enterprise y WPS

Bluetooth y BLE

  • Controlador de doble modo Bluetooth 4.2 BR/EDR y BLE
  • Potencia de transmisión +12 dBm
  • Sensibilidad de recepción BLE de -97 dBm

CPU y memoria

  • Xtensa 32-bit LX6 de doble núcleo a hasta 240 MHz (hasta 600 MIPS)
  • 520 KB SRAM, 448 KB ROM
  • 16 KB SRAM en RTC para despertar del sueño profundo
  • Múltiples modos de consumo, incluido sueño profundo con coprocesador ULP

Interfaces periféricas

  • 34 GPIO programables
  • ADC de 12 bits hasta 18 canales, 2 DAC de 8 bits, 10 sensores táctiles
  • 4x SPI, 2x I2C, 2x I2S, 3x UART, CAN 2.0
  • LED PWM hasta 16 canales, motor PWM
  • MAC Ethernet con soporte del protocolo de tiempo de precisión IEEE 1588
  • Seguridad hardware: arranque seguro, cifrado de flash, AES, SHA-2, RSA, RNG

El diagrama siguiente muestra el pinout estándar del chip ESP32 como referencia:

ESP32 pinout diagram

Configuración del IDE de Arduino para el ESP32 PLC

Para programar un ESP32 PLC de Industrial Shields necesitas instalar el paquete de placas específico de IS en el IDE de Arduino. Proporciona los alias de pines correctos (Q0_0, Q0_1, I0_0, etc.) y las definiciones de hardware para cada modelo de ESP32 PLC. Ve a Archivo > Preferencias y añade la siguiente URL en URLs adicionales de gestor de tarjetas:

https://apps.industrialshields.com/main/arduino/boards/package_industrialshields_esp32_index.json

Si ya tienes otra URL en ese campo, sepáralas con una coma.

Arduino IDE Preferences - adding boards manager URL

Ve a Herramientas > Placa > Gestor de tarjetas, busca "Industrial Shields ESP32" e instala el paquete. Una vez instalado, ve a Herramientas > Placa y selecciona tu modelo de ESP32 PLC.

Arduino IDE - ESP32 board selection

Ejemplo WiFi: escáner de redes

El sketch siguiente escanea las redes WiFi disponibles cada 5 segundos e imprime el SSID, la intensidad de la señal (RSSI) y el estado de cifrado de cada una en el monitor serie. Usa Serial2, que es el puerto serie disponible en los modelos IS ESP32 PLC.

Abírelo desde Archivo > Ejemplos > Ejemplos para tu modelo de ESP32 PLC > WiFi > WiFiScan, o usa el código siguiente:

WiFi scan example in Arduino IDE

#include "WiFi.h"

void setup()
{
    Serial2.begin(19200);
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
    Serial2.println("Setup done");
}

void loop()
{
    int start = millis();
    Serial2.println("scan start");

    int n = WiFi.scanNetworks();
    int finish = millis();
    Serial2.print("scan done, time = ");
    Serial2.print(finish - start);
    Serial2.println(" ms");
    if (n == 0) {
        Serial2.println("no networks found");
    } else {
        Serial2.print(n);
        Serial2.println(" networks found");
        for (int i = 0; i < n; ++i) {
            Serial2.print(i + 1);
            Serial2.print(": ");
            Serial2.print(WiFi.SSID(i));
            Serial2.print(" (");
            Serial2.print(WiFi.RSSI(i));
            Serial2.print(")");
            Serial2.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*");
            delay(10);
        }
    }
    delay(5000);
}

Subida del programa

Para subir un sketch al ESP32 PLC, mantén pulsado el botón BOOT mientras el IDE inicia la subida. Una vez completada, pulsa el botón EN para ejecutar el programa. Tras una subida correcta, el monitor serie mostrará los resultados del escaneo:

Serial monitor output with WiFi scan

Ejemplo BLE: escritura en una caracteristica

El sketch siguiente crea un servidor BLE en el ESP32 PLC con un servicio y una característica personalizados. Una aplicación escáner BLE en un smartphone (como nRF Connect o LightBlue) puede conectarse al dispositivo y escribir un valor de cadena en la característica. El ESP32 PLC imprime entonces el valor recibido en el monitor serie.

Cada servicio y característica BLE requiere un UUID (identificador único universal). Genera tus propios UUID de 128 bits y reemplaza los valores de ejemplo del sketch:

UUID Generator

BLE write example in Arduino IDE

/*
    Based on Neil Kolban's example for IDF:
    https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleWrite.cpp
    Ported to Arduino ESP32 by Evandro Copercini
*/

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

#define SERVICE_UUID        "3e3593cf-e5cb-46ee-8fa4-16c8b6a563d0" // Replace with your own UUID
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" // Replace with your own UUID

class MyCallbacks: public BLECharacteristicCallbacks {
    void onWrite(BLECharacteristic *pCharacteristic) {
      std::string value = pCharacteristic->getValue();
      if (value.length() > 0) {
        Serial2.println("*********");
        Serial2.print("New value: ");
        for (int i = 0; i < value.length(); i++)
          Serial2.print(value[i]);
        Serial2.println();
        Serial2.println("*********");
      }
    }
};

void setup() {
  Serial2.begin(19200);
  Serial2.println("1- Download a BLE scanner app to your phone (e.g. nRF Connect)");
  Serial2.println("2- Scan for BLE devices");
  Serial2.println("3- Connect to MyESP32");
  Serial2.println("4- Go to CUSTOM CHARACTERISTIC and write something");
  Serial2.println("5- See the result in this monitor");

  BLEDevice::init("MyESP32");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService(SERVICE_UUID);
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(
    CHARACTERISTIC_UUID,
    BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
  );
  pCharacteristic->setCallbacks(new MyCallbacks());
  pCharacteristic->setValue("Hello World");
  pService->start();
  BLEAdvertising *pAdvertising = pServer->getAdvertising();
  pAdvertising->start();
}

void loop() {
  delay(2000);
}

Una vez que el sketch está en ejecución, el monitor serie muestra cinco pasos. Después de seguirlos desde tu móvil, cualquier valor que escribas en la característica aparecerá en el monitor:

Serial monitor output with BLE write

Usar el ESP32 PLC como pasarela inalámbrica para M-Duino o Ardbox

Un ESP32 PLC puede actuar como pasarela WiFi o BLE para un PLC basado en Arduino (M-Duino o Ardbox) que no disponga de conectividad inalámbrica integrada. Los dos dispositivos se comunican mediante serie TTL a 19200 baudios. El ESP32 PLC envía y recibe datos de forma inalámbrica y los reenvía al PLC Arduino por serie.

Recuerda conectar el GND de ambos dispositivos.

Conexión con M-Duino

El ESP32 PLC usa Serial2 (pines TX2/RX2). Conecta ESP32 TX2 a M-Duino RX1 y ESP32 RX2 a M-Duino TX1. Alimenta el ESP32 PLC desde la misma fuente de 24 V que el M-Duino.

ESP32 PLC and M-Duino serial connection

M-Duino Arduino PLC family

El sketch del M-Duino lee los datos recibidos en Serial1 e imprime en Serial:

void setup() {
  Serial.begin(19200);
  Serial1.begin(19200);
}

void loop() {
  if (Serial1.available()) {
    Serial.print((char)Serial1.read());
  }
}

Conexión con Ardbox

En el Ardbox, el Serial0 hardware (pines 0 y 1) está reservado para RS232. Usa SoftwareSerial en su lugar, con MISO como RX y MOSI como TX.

ESP32 PLC and Ardbox serial connection

#include <SoftwareSerial.h>

SoftwareSerial mySerial(MISO, MOSI); // RX, TX

void setup() {
  Serial.begin(19200);
  mySerial.begin(19200);
}

void loop() {
  if (mySerial.available()) {
    Serial.print((char)mySerial.read());
  }
}

For the full range of Industrial Shields PLCs based on Arduino, Raspberry Pi, and ESP32, visit the ESP32 PLC product page.

Buscar en nuestro blog

Guía de WiFi, Bluetooth y BLE del ESP32 PLC
Serzh Ohanyan 19 de junio de 2026
Compartir esta publicación
Etiquetas

¿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.

Comparativa de PLCs