# X-NODE / XC01 – ESP32-S3 Controlador WiFi & Bluetooth

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FSHPt5q2y1Vj67cixlxh5%2FX-NODE%20%20MCU%20WIFI%20BLE%20R5%20MICROSIDE%20XIDE%2001.webp?alt=media&#x26;token=d571ebad-18f0-429e-8cad-f614c781946c" alt=""><figcaption></figcaption></figure>

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><mark style="color:green;"><strong>Comprar</strong></mark></td><td><a href="https://www.microside.com/shop/x-node-mcu-wifi-ble-esp32-s3-33">https://www.microside.com/shop/x-node-mcu-wifi-ble-esp32-s3-33</a></td></tr></tbody></table>

El **X-NODE MCU WIFI BLE (ESP32-S3)** integra un módulo de conectividad inalámbrica [ESP32-S3-WROOM-1](https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf) de [Espressif Systems®](https://www.espressif.com/en) conformado por Bluetooth/BLE y Wi-Fi de 2.4 GHz, dos modos de funcionamiento para usarlo como un X-NODE (Esclavo) o como una X-BOARD (Maestro) y compatible con protocolos USB 2.0 OTG, I2C, UART y SPI. Cuenta con múltiples modos de potencia y escalado de potencia dinámico, contribuyendo así a un equilibrio óptimo entre el rango de comunicación, la velocidad de datos y el consumo de energía. Es ideal para aplicaciones de baja potencia, aplicaciones móviles, electrónica portátil e Internet de las cosas (IoT) como interactuar con un sensor, actuador o hasta un sistema de domótica, con monitoreo y control desde una computadora o servicio en la nube.

### **TABLA DE CONTENIDO**

1. [**¿Cómo funciona?**](#i.-como-funciona)
2. [**Descripción del hardware**](#ii.-descripcion-del-hardware)
3. [**Especificaciones**](#iii.-especificaciones)
4. [**Pinout**](#iv.-pinout)
5. [**Configuración para su uso**](#v.-configuracion-para-su-uso)
6. [**Descargas**](#vi.-descargas)
   * [**Esquemático**](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FYGgFo7zmIelFLhBiWTvG%2Fschematic.pdf?alt=media\&token=aeb4e92a-9844-45c9-b8b8-60ae869266f5)
   * [**Dimensiones**](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FnKfucillOFYleFbOB2E5%2Fdimensions.pdf?alt=media\&token=2b6119f7-a906-4e7a-8b3d-de3c81d93fca)
   * [**Plantilla PlatformIO**](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FpEC7RvUsygTQioH208cO%2Fxc01-example-platformio.zip?alt=media\&token=9c2a9436-70d1-4f25-a5be-406b79ac18f8)
   * [**Plantilla Arduino**](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FFna3qg1JkgHNs4uhqB9R%2Fxc01-example-arduino.zip?alt=media\&token=f227e7c3-a33e-4687-b18a-802f921aa76a)

## **I. ¿Cómo funciona?**

El módulo **X-NODE MCU WIFI BLE (ESP32-S3)** cuenta con un conector USB tipo C con el cual es posible establecer una comunicación y programarlo de manera sencilla, de esta forma se podrá usar en proyectos para brindar una comunicación inalámbrica Wifi o Bluetooth y así lograr una conexión hacia un dispositivo móvil o servicio en la nube, esto permite que el X-NODE sea compatible con cualquier sistema basado en un microcontrolador, microprocesador o equipos industriales.

**X-NODE MCU WIFI BLE (ESP32-S3)** es compatible con el estándar [mikroBUS™](https://www.mikroe.com/mikrobus) de [Mikroe®](https://www.mikroe.com/) para un uso fácil con un gran ecosistema de kits para desarrollo de hardware, también posee conectores JST compatibles con el estándar [Qwiic®](https://www.sparkfun.com/qwiic) de [SparkFun®](https://www.sparkfun.com/) para una comunicación entre diversos módulos y tarjetas de desarrollo por medio del protocolo I2C de manera rápida y sencilla.

## **II. Descripción del hardware**

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FeHi3GXsaQxGpsNtzn8CH%2Fuser-manual-hardware-description.jpg?alt=media&#x26;token=b998b341-8a28-42a4-bae1-c3126519d9d4" alt=""><figcaption></figcaption></figure>

1. SoC [ESP32-S3-WROOM-1](https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf) de [Espressif Systems®](https://www.espressif.com/en)
2. Conectores JST compatibles con [Qwiic®](https://www.sparkfun.com/qwiic)
3. Conector USB tipo C para comunicación y alimentación
4. Botón pulsador para entrar en modo bootloader y botón pulsador conectado al pin RESET
5. Puertos de comunicación UART <> I2C
6. Modelo de X-NODE
7. Tipo de X-NODE
8. Puerto de programación auxiliar (UART)
9. Puerto de depuración externo (JTAG)
10. Jumpers para selección de modo X-NODE (Esclavo) <> X-BOARD (Maestro)
11. Conectores estándar [mikroBUS™](https://www.mikroe.com/mikrobus)
12. Jumpers para brindar voltaje de 3.3V y 5V en los pines [mikroBUS™](https://www.mikroe.com/mikrobus)
13. Versión del hardware: R5
14. Número de parte del componente principal en el X-NODE

## **III. Especificaciones**

<table data-header-hidden><thead><tr><th width="171"></th><th></th></tr></thead><tbody><tr><td>Tipo</td><td>BLE + WiFi</td></tr><tr><td>Aplicaciones</td><td>Ideal para aplicaciones de baja potencia, aplicaciones móviles, electrónica portátil, aplicaciones de (IoT), hogar inteligente, robótica avanzada, entre otros.</td></tr><tr><td>Módulo</td><td><a href="https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf">SoC ESP32-S3-WROOM-1</a></td></tr><tr><td>Fabricante</td><td>Espressif Systems®</td></tr><tr><td>Características</td><td>Compatible con protocolo Wi-Fi(2.4GHz) 802.11 b/g/n/e/i (802.11n hasta 150 Mbps). Bluetooth: v4.2 BR/EDR y BLE, Seguridad IEEE 802.11 WFA, WPA/WPA2 y WAPI, Encriptación AES, SHA-2, RSA, ECC y RNG.</td></tr><tr><td>Interfaz</td><td>UART, I2C, SPI, GPIO, USB 2.0 OTG</td></tr><tr><td>Compatibilidad</td><td>Estándar <a href="https://www.mikroe.com/mikrobus">mikroBUS™</a> y estándar <a href="https://www.sparkfun.com/qwiic">Qwiic®</a></td></tr><tr><td>Tamaño</td><td>65.17 x 25.4 x 20.5 mm</td></tr><tr><td>Voltaje</td><td>3.3 V</td></tr></tbody></table>

{% hint style="info" %}
Para la información técnica completa, puedes descargar las especificaciones del fabricante en el siguiente link: [Datos Técnicos](https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf)
{% endhint %}

## **IV. Pinout**

La siguiente tabla muestra el pinout del **X-NODE MCU WIFI BLE (ESP32-S3)** con respecto al estándar [mikroBUS™](https://www.mikroe.com/mikrobus) (este último se encuentra en las dos columnas del centro).

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2F4ETcLwq5gxPhZeN7yypp%2Fuser-manual-mikrobus-pinout-table.png?alt=media&#x26;token=e539aaff-fa68-4b88-a0d9-35368c19b3a8" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
El botón pulsador BOOT se encuentra en el GPIO0, en configuración pull-up.
{% endhint %}

#### Puerto de programación auxiliar

El **X-NODE MCU WIFI BLE (ESP32-S3)** puede programarse y depurarse a través de la interfaz USB tipo C, sin embargo, en aplicaciones donde se utiliza el protocolo USB del microcontrolador puede utilizar el puerto de programación auxiliar para habilitar comunicación UART y el puerto JTAG para la depuración\*.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FLfq6hu6NIEtrcAzLvo55%2Fuser-manual-u-p-pinout.jpg?alt=media&#x26;token=0a66778b-f008-467d-9a32-18a5305421cf" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
**Nota sobre pines JTAG:** para habilitar los pines para un depurador JTAG externo requiere *quemar* el fusible de configuración *STRAP\_JTAG\_SEL* y conectar el pin GPIO 3 a GND, para volver a habilitar la depuración por USB conecte el pin GPIO 3 a 3.3V. *Quemar* el fusible *DIS\_USB\_JTAG* deshabilitará la depuración por USB permanentemente y permitirá usar un depurador externo.\
Considere que este cambio es permanente por lo que se recomienda utilizar el puerto USB para depuración.
{% endhint %}

{% hint style="danger" %}
**¡ Advertencia !** el pin VCC del puerto de programación auxiliar es 3.3V, si está alimentando el microcontrolador desde el puerto USB o desde la interfaz mikroBUS (5V) **NO** conecte nada al pin VCC. Los pines IO0, RST, TX0 y RX0 tienen un voltaje de operación de 3.3V, utilice los niveles de voltaje correctos o puede dañar el dispositivo.
{% endhint %}

## **V. Configuración para su uso**

Para un uso práctico del X-NODE se utiliza el módulo ESP32-S3 de forma directa, por ello es posible interactuar con sus pines nativos y brindar una conectividad inalámbrica a otros X-NODE o tarjetas de desarrollo a través de diferentes protocolos de comunicación como UART o I2C, utilizando el entorno de desarrollo de tu preferencia.

Conecta tu módulo **X-NODE MCU WIFI BLE (ESP32-S3)** a la computadora por medio del cable USB tipo C y configúralo dependiendo de tu sistema operativo, para los siguientes ejemplos se utiliza Windows.

{% hint style="warning" %}
En caso de que el módulo **NO** sea reconocido, presiona la secuencia:\
Presionar el botón RST -> Presionar el botón BOOT -> Soltar el botón RST -> Soltar el botón RST. Al terminar de programar su dispositivo presione el botón RST para ejecutar el programa.

Recuerde habilitar la emulación CDC en BOOT en su entorno de desarrollo para permitir la programación automática.
{% endhint %}

<details>

<summary>Configuración para PlatformIO en VS Code con el framework de Arduino</summary>

1. Descarga e instala Visual Studio Code.

<https://code.visualstudio.com/>

2. Ejecuta VS Code, dirígete al apartado de "**Extensiones**", busca **PlatformIO IDE** e instálalo. Al finalizar la instalación puede que VS Code deba reiniciarse para habilitar la extensión.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FBFePY7rwvU6AfDf5Wu6D%2Fuser-manual-pio-step-2.jpg?alt=media&#x26;token=1f25a16c-bfe6-4f39-b1a4-26f9ce150a26" alt="" width="302"><figcaption></figcaption></figure></div>

3. Descarga y descomprime la plantilla para utilizar el XC01-R5 con PlatformIO.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2Fns5sQjf2mdEpfIMIDiTf%2Fuser-manual-pio-step-3.jpg?alt=media&#x26;token=688e8b5a-7337-41f2-8154-109652c7c1dd" alt="" width="375"><figcaption></figcaption></figure></div>

4. En VS Code, abre el proyecto desde File->Open Folder. Selecciona la carpeta donde se guardó la plantilla y presiona el botón Seleccionar carpeta.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FqKfvamNo5FNkycxqfSf9%2Fuser-manual-pio-step-4.png?alt=media&#x26;token=46df30bb-05d3-4f87-8011-975e87352ef6" alt="" width="375"><figcaption></figcaption></figure></div>

5. Al abrir la carpeta PlatformIO descarga las herramientas necesarias para el módulo ESP32 y puede llevar un poco de tiempo la primera vez.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FmK8Xvvr95RGR7anux7gB%2Fuser-manual-pio-step-5.jpg?alt=media&#x26;token=caf5fc5d-12b6-49c2-9fab-2d96847a70f5" alt="" width="375"><figcaption></figcaption></figure></div>

6. Por último, se muestra la siguiente estructura en VS Code y estará listo para su uso.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FeU1GRHW3qXKOCJQgYiS9%2Fuser-manual-pio-step-6.jpg?alt=media&#x26;token=419257cc-65c7-4eb5-a8ab-6f56b8f5c604" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Configuración para Arduino® IDE</summary>

1. Descarga e instala Arduino® IDE.

<https://www.arduino.cc/en/software>

2. Ejecuta Arduino® IDE y da clic en “Inicio” > “Preferencias”.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FBjjGVEsHW3p98GiNf6BX%2Fpreferencias%20ESP32%20Arduino%20XC01_1.png?alt=media&#x26;token=75442342-69cd-4443-89c0-f736c4afc175" alt=""><figcaption></figcaption></figure></div>

3. Inserta el siguiente enlace en el campo de URLs:

```
https://dl.espressif.com/dl/package_esp32_index.json0
```

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FYop3K4V0mgHDAamNOD0g%2Fpreferencias%20ESP32%20Arduino%20XC01_2.png?alt=media&#x26;token=856e8659-55d5-4b9e-b83e-e8fad0459b44" alt="" width="375"><figcaption></figcaption></figure></div>

4. Posteriormente da clic en “Herramientas” > “Placa” > “Gestor de tarjetas”.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2F0uz6FRoZGoHZ5CKB3mmN%2Fgestor%20de%20tarjetas%20ESP32%20Arduino%20XC01_2.png?alt=media&#x26;token=51144438-375a-4ed1-a1ba-58d3a2408b4c" alt="" width="375"><figcaption></figcaption></figure></div>

5. En el gestor de tarjetas, busca el paquete "ESP32" e instálalo.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FNwLbBIGpqqXgW0y5mxHB%2Fgestor%20de%20tarjetas%20ESP32%20Arduino%20XC01_1.png?alt=media&#x26;token=ca93c11e-bca1-4ff0-89dd-cc39b3f17c6d" alt="" width="375"><figcaption></figcaption></figure></div>

6. Da clic en “Herramientas” > “Placa” > "ESP32 Arduino" y selecciona la tarjeta **ESP32S3 Dev Module**.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FlurmfHB42uI3LGQhSsZT%2Fuser-manual-arduino-step-6.png?alt=media&#x26;token=81a6a70d-2ffb-4dfc-b57a-ddf96bcbeac6" alt="" width="375"><figcaption></figcaption></figure></div>

7. Por último, configura la tarjeta como se muestra en la imagen, selecciona el puerto asignado por el módulo y estará listo para usarse.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2Fr7LIuPWB74V6UP6A5FJk%2Fuser-manual-arduino-step-7.png?alt=media&#x26;token=2eb472e0-029f-4f8a-9814-331b63b75c82" alt="" width="261"><figcaption></figcaption></figure></div>

8. Descarga y descomprime la plantilla para utilizar el XC01-R5 con Arduino IDE.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FDz3bjha6r55n7wbFutw0%2Fuser-manual-arduino-step-8.png?alt=media&#x26;token=983fe4fb-7881-43c9-bf10-21add4ce5e71" alt="" width="375"><figcaption></figcaption></figure></div>

9. Abre la plantilla desde Arduino IDE y selecciona la opción Guardar Como..., asigna un nuevo nombre a tu proyecto, esta plantilla ejemplifica la configuración de los periféricos (UART, I2C, SPI) para su uso con los pines mikroBUS.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FkszNqtZZNRexxZ8y0Dbg%2Fuser-manual-arduino-step-9.png?alt=media&#x26;token=fdd73336-1b4e-4962-ad2f-c6e1dc4eaefc" alt="" width="260"><figcaption></figcaption></figure></div>

</details>

## **VI. Descargas**

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><mark style="color:green;"><strong>Esquemático</strong></mark></td><td><a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FYGgFo7zmIelFLhBiWTvG%2Fschematic.pdf?alt=media&#x26;token=aeb4e92a-9844-45c9-b8b8-60ae869266f5">https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FYGgFo7zmIelFLhBiWTvG%2Fschematic.pdf?alt=media&#x26;token=aeb4e92a-9844-45c9-b8b8-60ae869266f5</a></td></tr><tr><td align="center"><mark style="color:green;"><strong>Dimensiones</strong></mark></td><td><a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FnKfucillOFYleFbOB2E5%2Fdimensions.pdf?alt=media&#x26;token=2b6119f7-a906-4e7a-8b3d-de3c81d93fca">https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FnKfucillOFYleFbOB2E5%2Fdimensions.pdf?alt=media&#x26;token=2b6119f7-a906-4e7a-8b3d-de3c81d93fca</a></td></tr><tr><td align="center"><mark style="color:green;"><strong>Plantilla PlatformIO</strong></mark></td><td><a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FpEC7RvUsygTQioH208cO%2Fxc01-example-platformio.zip?alt=media&#x26;token=9c2a9436-70d1-4f25-a5be-406b79ac18f8">https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FpEC7RvUsygTQioH208cO%2Fxc01-example-platformio.zip?alt=media&#x26;token=9c2a9436-70d1-4f25-a5be-406b79ac18f8</a></td></tr><tr><td align="center"><mark style="color:green;"><strong>Plantilla Arduino</strong></mark></td><td><a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FFna3qg1JkgHNs4uhqB9R%2Fxc01-example-arduino.zip?alt=media&#x26;token=f227e7c3-a33e-4687-b18a-802f921aa76a">https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FFna3qg1JkgHNs4uhqB9R%2Fxc01-example-arduino.zip?alt=media&#x26;token=f227e7c3-a33e-4687-b18a-802f921aa76a</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.microside.com/plataforma-xide-iot/x-nodes/xc01-controlador-wifi-and-bluetooth/r5/x-node-xc01-esp32-s3-controlador-wifi-and-bluetooth.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
