Skip to Content

Primeros pasos con XIAO ESP32-S3-Plus y Arduino IDE

Primeros pasos con XIAO ESP32-S3-Plus y Arduino IDE

El XIAO ESP32-S3-Plus es una placa de microcontrolador compacta y potente diseñada para proyectos avanzados de embebidos e IoT. Está basada en el procesador dual-core ESP32-S3 que funciona hasta a 240 MHz. La placa incluye conectividad Wi-Fi y Bluetooth Low Energy integradas para aplicaciones inalámbricas.

En comparación con el XIAO ESP32-S3, mantiene el factor de forma pequeño pero añade más memoria y capacidades de E/S. La versión Plus cuenta con 16 MB de flash, 8 MB de PSRAM y 20 pines GPIO.

La placa soporta múltiples interfaces como UART, I2C, SPI e I2S. También incluye carga de batería integrada y modos de bajo consumo para una operación eficiente en energía.

En este tutorial aprenderás cómo programar el XIAO ESP32-S3-Plus usando el Arduino IDE.

Dónde Comprar

Puedes conseguir el XIAO ESP32-S3-Plus en Seeed Studio. También necesitarás un cable USB-C, si no tienes uno ya. Además, podría ser necesario un pequeño disipador si vas a ejecutar procesos intensivos en la placa.

XIAO ESP32-S3-Plus

Cable USB C

Pequeño disipador 9×9 mm

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Características de la placa XIAO ESP32-S3 Plus

El XIAO ESP32-S3-Plus está basado en el microcontrolador ESP32-S3R8. Usa una CPU dual-core Xtensa LX7 con una velocidad de reloj de hasta 240 MHz. La imagen a continuación muestra el frente y la parte trasera de la placa.

Front and Back of XIAO ESP32-S3-Plus board
Frontal y trasera de la placa XIAO ESP32-S3-Plus

El procesador es de 32 bits y está diseñado para cargas de trabajo embebidas e IoT. Soporta instrucciones vectoriales que mejoran el rendimiento en procesamiento de señales y tareas de IA.

La placa es compatible con frameworks de desarrollo comunes. Soporta Arduino, MicroPython y ESP-IDF.

Configuración de Memoria

La versión Plus ofrece una configuración de memoria amplia comparada con el modelo estándar. Incluye 16 MB de memoria flash externa. También integra 8 MB de PSRAM para manejo dinámico de datos.

Esta combinación permite aplicaciones más complejas. Soporta buffering, procesamiento de imágenes y cargas de trabajo de IA en el borde.

Conectividad Inalámbrica

La placa integra un subsistema Wi-Fi completo de 2.4 GHz. También soporta Bluetooth Low Energy 5.0 y Bluetooth Mesh. Se puede conectar una antena externa mediante una interfaz U.FL. Esto mejora el alcance y la estabilidad de la señal en diseños embebidos. La foto a continuación muestra la antena junto a la placa XIAO ESP32-S3-Plus:

XIAO ESP32-S3-Plus with external Antenna
XIAO ESP32-S3-Plus con antena externa

GPIO e Interfaces

El XIAO ESP32-S3-Plus ofrece un conjunto ampliado de pines GPIO. Ofrece hasta 20 GPIOs. Pines adicionales están disponibles a través de pads castellados en la parte trasera de la placa. La siguiente imagen muestra el pinout del XIAO ESP32-S3-Plus:

Pinout del XIAO ESP32-S3-Plus (source)

La placa soporta múltiples interfaces de comunicación. Incluye dos interfaces UART, una I2C, una I2S y dos SPI. También proporciona entradas analógicas a través de canales ADC.

Se incluye un conector B2B para placas de expansión. Ten en cuenta que el conector B2B del XIAO ESP32-S3-Plus es compatible con la Wio-SX1262 placa de expansión pero no con la placa de sensor de cámara Plug-in.

B2B connector of XIAO ESP32-S3-Plus
Conector B2B del XIAO ESP32-S3-Plus

Gestión de Energía

La placa soporta entrada de alimentación USB Tipo-C a 5 V. También soporta entrada directa de batería para celdas Li-ion o LiPo. Incluye un circuito integrado de carga de batería. La corriente de carga puede alcanzar hasta 100 mA. La batería debe conectarse mediante pads de soldadura en la parte trasera de la placa:

Battery solder pads of XIAO ESP32-S3-Plus
Pads de soldadura para batería del XIAO ESP32-S3-Plus

El XIAO ESP32-S3-Plus ofrece múltiples modos de energía. Estos incluyen activo, modem sleep, light sleep y deep sleep. La corriente en deep sleep puede alcanzar valores en el rango de microamperios, permitiendo diseños de bajo consumo.

Características Físicas

La placa sigue el factor de forma estándar XIAO. Mide 21 x 17.8 x 5 mm. Usa un espaciado de pines de 2.54 mm para la mayoría de los pines GPIO para compatibilidad con protoboards. Pero hay 9 pines GPIO adicionales con paso de 1.27 mm en castellación SMD y la parte trasera incluye pads para depuración.

Dimensions of XIAO ESP32-S3-Plus
Dimensiones del XIAO ESP32-S3-Plus

El diseño incluye un botón de reset y un botón de boot. También cuenta con LEDs de estado para control de usuario e indicación de carga de batería.

Especificación Técnica

La siguiente tabla resume las características técnicas del XIAO ESP32-S3-Plus:

Parámetro Especificación
Microcontrolador ESP32-S3R8, Xtensa LX7 dual-core, 32 bits
Frecuencia CPU Hasta 240 MHz
Conectividad Inalámbrica Wi-Fi 2.4 GHz, Bluetooth 5.0, Bluetooth Mesh
Memoria Flash 16 MB flash externa
PSRAM 8 MB
GPIO Hasta 20 GPIOs (incluyendo pads traseros adicionales)
Entradas Analógicas Hasta 9 canales ADC
Interfaces de Comunicación 2× UART, 1× I2C, 1× I2S, 2× SPI
Interfaz USB USB Tipo-C para alimentación y programación
Voltaje de Operación 5 V (USB), ~3.7–4.2 V (batería)
Soporte de Batería Li-ion / LiPo con carga integrada
Corriente de Carga Hasta 100 mA
Consumo de Energía (Wi-Fi activo) ~81 mA
Consumo de Energía (Deep Sleep) ~33 µA
Modos de Energía Activo, modem sleep, light sleep, deep sleep
Dimensiones 21 × 17.8 mm
Temperatura de Operación -40 °C a 65 °C
Características Adicionales Conector B2B, botón de reset, botón de boot, LEDs de estado

Instalar ESP32 Core

Si quieres usar el Arduino IDE para programar la placa, primero necesitas instalar el ESP32 Core para habilitar soporte para placas ESP32 dentro del Arduino IDE. Abre tu  Arduino IDE  y sigue los pasos indicados a continuación. Si tienes problemas, puedes encontrar instrucciones más detalladas en nuestro tutorial Install ESP32 core in Arduino IDE.

URLs adicionales para el gestor de placas

Primero abre el diálogo de Preferencias seleccionando «Preferences…» en el menú «File»:

Open Preferences Dialog
Abrir diálogo de Preferencias

Esto abrirá el diálogo de Preferencias mostrado abajo. En la pestaña Settings encontrarás un cuadro de edición en la parte inferior del diálogo etiquetado como «Additional boards manager URLs»:

En este campo copia la siguiente URL: «https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json«

Esto indicará al Arduino IDE dónde encontrar las librerías core del ESP32. A continuación instalaremos las librerías core del ESP32 usando el Gestor de Placas.

Gestor de Placas

Abre el BOARDS MANAGER haciendo clic en el icono de placa en la barra lateral del Arduino IDE:

Board icon in Sidebar
Icono de placa en la barra lateral

Verás el BOARDS MANAGER aparecer a la derecha de la barra lateral. Escribe «ESP32» en el campo de búsqueda en la parte superior y deberías ver dos tipos de placas ESP32; las «Arduino ESP32 Boards» y las placas «esp32 by Espressif». Queremos las librerías esp32 de Espressif. Haz clic en el botón INSTALL y espera a que la descarga e instalación finalicen.

Install ESP32 Core libraries
Instalar librerías core ESP32

Una vez instalado, tu Gestor de Placas debería verse así, aunque la versión real (aquí 3.3.7) podría ser diferente.

ESP32 core installed
Core ESP32 instalado

En el siguiente paso, te muestro cómo seleccionar la placa ESP32 para el XIAO ESP32-S3-Plus.

Seleccionar placa XIAO_ESP32S3_PLUS

Puedes seleccionar una placa desde el selector desplegable bajo la barra de menú: en el ejemplo abajo se muestra Arduino Uno como placa seleccionada, por ejemplo:

Bord selector
Selector de placa

Al hacer clic en el nombre de la placa actualmente seleccionada (Arduino Uno), se abrirá el diálogo de selección de placa. En el cuadro de búsqueda escribe «xiao s3» y selecciona «XIAO_ESP32S3_PLUS» como se muestra abajo:

Seleccionar XIAO_ESP32S3_PLUS en el Gestor de Placas

Si la placa está conectada a tu PC vía USB, también deberías poder seleccionar el puerto COM. En la captura de pantalla arriba es COM9 pero en tu caso podría ser otro puerto COM.

Ejemplos de Código

En esta sección, te proporcionaré algunos ejemplos de código para probar las principales características del XIAO ESP32-S3-Plus.

Parpadeo del LED integrado

Comenzamos con el común Blink ejemplo. Enciende y apaga el LED integrado durante un segundo. El LED integrado del XIAO ESP32-S3-Plus está conectado al GPIO21 pero está invertido. LOW significa que el LED está encendido y HIGH que está apagado. Puedes ver esto en el ejemplo de código abajo:

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  Serial.println("Off");
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);     
  Serial.println("On");                 
  digitalWrite(LED_BUILTIN, LOW);   
  delay(1000);                      
}

Leer y Escribir GPIO

En los siguientes ejemplos muy cortos, leemos y escribimos GPIO. Para especificar pines en el código puedes usar el número GPIO x o el número Dx. Por ejemplo, según el pinout, D3 o GPIO4 identifican el mismo pin y en tu código puedes usar cualquiera de los dos. Los siguientes dos ejemplos de código son idénticos en función y configuran GPIO4 a HIGH:

digitalWrite(D3, HIGH);  // D3 == GPIO4
digitalWrite(4, HIGH);  // D3 == GPIO4

Si quieres leer señales analógicas puedes usar las constantes predefinidas Ax. Por ejemplo, el siguiente código lee una entrada analógica de A3, que es el mismo pin que GPIO4:

int val = analogRead(A3);  // A3 == GPIO4
int val = analogRead(4);  // A3 == GPIO4

Los valores analógicos van de 0 a 4095, lo que equivale a un voltaje en la entrada entre 0 y 3.3V.

Entrada táctil

Este ejemplo demuestra cómo usar los pines táctiles capacitivos del XIAO ESP32-S3-Plus para detectar entradas táctiles. Si tocas el primer pin (D0) de la placa, el LED integrado se encenderá. Puede que tengas que ajustar el umbral de detección.

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  int value = touchRead(T1);
  Serial.println(value);

  if (value > 30000) { 
    digitalWrite(LED_BUILTIN, LOW);
  } else {
    digitalWrite(LED_BUILTIN, HIGH);
  }

  delay(200);
}

Wi-Fi

El siguiente ejemplo muestra cómo conectar el XIAO ESP32-S3-Plus a una red Wi-Fi. Esto funcionará sin la antena externa si estás cerca del router Wi-Fi. Pero para mejor alcance deberías instalar la antena.

#include <WiFi.h>

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nConnected");
  Serial.println(WiFi.localIP());
}

void loop() {
}

Bluetooth

Este último ejemplo demuestra cómo crear un servidor Bluetooth Low Energy (BLE) simple.

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

void setup() {
  Serial.begin(115200);

  BLEDevice::init("XIAO-ESP32-S3");
  BLEServer *pServer = BLEDevice::createServer();
  BLEDevice::getAdvertising()->start();

  Serial.println("BLE server started");
}

void loop() {
}

Puedes comprobar si el servidor está activo usando un escáner BLE en tu teléfono. Opciones comunes son nRF Connect o LightBlue. Si inicias un escaneo, verás aparecer «XIAO-ESP32-S3».

Conclusiones

Este post te mostró cómo empezar con el Seeed Studio XIAO ESP32-S3-Plus. Seeed Studio proporciona información adicional en su Wiki.

En comparación con el XIAO ESP32-S3, el XIAO ESP32-S3-Plus tiene más Flash y pines GPIO. Sin embargo, carece del micrófono del XIAO MG24 Sense o de la cámara (y micrófono) del XIAO-ESP32-S3-Sense. Si quieres grabar audio o transmitir vídeo, estas placas son una mejor opción. Pero si necesitas más memoria o E/S, elige el XIAO ESP32-S3-Plus.

Si tienes alguna pregunta, no dudes en dejarla en la sección de comentarios.

¡Feliz bricolaje! 😉