# XC01 - MCU WIFI BLE (ESP32-S3)

<figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FSHPt5q2y1Vj67cixlxh5%252FX-NODE%2520%2520MCU%2520WIFI%2520BLE%2520R5%2520MICROSIDE%2520XIDE%252001.webp%3Falt%3Dmedia%26token%3Dd571ebad-18f0-429e-8cad-f614c781946c&#x26;width=768&#x26;dpr=1&#x26;quality=100&#x26;sign=35a21ec8&#x26;sv=2" alt=""><figcaption><p>XC01 - MCU WIFI BLE (ESP32-WROOM-32)</p></figcaption></figure>

**X-NODE MCU WIFI BLE (ESP32-S3)** based around the wireless connectivity module [ESP32-S3-WROOM-1](https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf) from [Espressif Systems®](https://www.espressif.com/en), featuring Bluetooth/BLE and 2.4 GHz Wi-Fi, with two operating modes to use it as an X-NODE (Peripheral) or as an X-BOARD (Controller). It is compatible with USB 2.0 OTG, I2C, UART, and SPI protocols. It includes multiple power modes and dynamic power scaling, contributing to an optimal balance between communication range, data rate, and energy consumption. It is ideal for low-power applications, mobile applications, wearables, and the Internet of Things (IoT), such as interacting with a sensor, actuator, or even a home automation system, with monitoring and control from a computer or cloud service.

### TABLE OF CONTENTS

1. [**How does it work?**](#i.-how-does-it-work)
2. [**Hardware description**](#ii.-hardware-description)
3. [**Specifications**](#iii.-specifications)
4. [**Pinout**](#iv.-pinout)
5. [**Setup and Usage**](#v.-setup-and-usage)
6. [**Downloads**](#vi.-downloads)
   * [**Schematic**](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)
   * [**Dimensions**](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)
   * [**PlatformIO Template**](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)
   * [**Arduino Template**](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. How does it work?

The **X-NODE MCU WIFI BLE (ESP32-S3)** features a USB Type-C connector that allows for easy communication and programming. It enables Wi-Fi or Bluetooth wireless communication for projects, connecting to a mobile device or cloud service. The compatibility of this device with our XIDE framework makes it suitable to integrate it with any system based on a microcontroller, microprocessor, or industrial equipment.

The **X-NODE MCU WIFI BLE (ESP32-S3)** is compatible with the [mikroBUS™](https://www.mikroe.com/mikrobus) standard by [Mikroe®](https://www.mikroe.com/) for easy of use within a wide hardware development ecosystem. It also has JST connectors compatible with the [Qwiic®](https://www.sparkfun.com/qwiic) standard by [SparkFun®](https://www.sparkfun.com/) for quick and simple I2C communication between modules and development boards.

## II. Hardware description

<figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FeHi3GXsaQxGpsNtzn8CH%252Fuser-manual-hardware-description.jpg%3Falt%3Dmedia%26token%3Db998b341-8a28-42a4-bae1-c3126519d9d4&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=65fa22e3&#x26;sv=2" alt=""><figcaption></figcaption></figure>

1. [ESP32-S3-WROOM-1 SoC](https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf) by [Espressif Systems®](https://www.espressif.com/en)
2. JST connectors compatible with [Qwiic®](https://www.sparkfun.com/qwiic)
3. USB Type-C connector for communication and power
4. Push-button BOOT to enter bootloader mode and RESET button
5. UART <> I2C communication ports
6. X-NODE model
7. X-NODE type
8. Auxiliary programming port (UART)
9. External debugging port (JTAG)
10. Jumpers for mode selection: X-NODE (Peripheral) <> X-BOARD (Controller)
11. [mikroBUS™](https://www.mikroe.com/mikrobus) standard connectors
12. Jumpers to provide 3.3V and 5V to [mikroBUS™](https://www.mikroe.com/mikrobus) pins
13. Hardware version: R5
14. Part number of the main component on the X-NODE

## III. Specifications

<table data-header-hidden><thead><tr><th width="160"></th><th></th></tr></thead><tbody><tr><td>Type</td><td>BLE + WiFi</td></tr><tr><td>Applications</td><td>Ideal for low-power applications, mobile applications, wearables, IoT applications, smart home, advanced robotics, and more.</td></tr><tr><td>Module</td><td><a href="https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf">ESP32-S3-WROOM-1 SoC</a></td></tr><tr><td>Manufacturer</td><td>Espressif Systems®</td></tr><tr><td>Features</td><td>Wi-Fi (2.4GHz) 802.11 b/g/n/e/i (802.11n up to 150 Mbps), Bluetooth: v4.2 BR/EDR and BLE, IEEE 802.11 WFA security, WPA/WPA2 and WAPI, AES encryption, SHA-2, RSA, ECC, and RNG.</td></tr><tr><td>Interface</td><td>UART, I2C, SPI, GPIO, USB 2.0 OTG</td></tr><tr><td>Compatibility</td><td><a href="https://www.mikroe.com/mikrobus">mikroBUS™</a> standard and <a href="https://www.sparkfun.com/qwiic">Qwiic®</a> standard</td></tr><tr><td>Size</td><td>65.17 x 25.4 x 20.5 mm</td></tr><tr><td>Voltage</td><td>3.3 V</td></tr></tbody></table>

{% hint style="info" %}
For complete technical information, you can download the manufacturer’s datasheet at: [Technical Datasheet](https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf)
{% endhint %}

## IV. Pinout

The following table shows the pinout of the **X-NODE MCU WIFI BLE (ESP32-S3)** with respect to the [mikroBUS™](https://www.mikroe.com/mikrobus) standard (located in the center two columns).

<figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252F4ETcLwq5gxPhZeN7yypp%252Fuser-manual-mikrobus-pinout-table.png%3Falt%3Dmedia%26token%3De539aaff-fa68-4b88-a0d9-35368c19b3a8&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=16c79f32&#x26;sv=2" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The BOOT push-button is connected to GPIO0 with a pull-up configuration.
{% endhint %}

#### Auxiliary Programming Port

The **X-NODE MCU WIFI BLE (ESP32-S3)** can be programmed and debugged through the USB Type-C interface. However, in applications where the USB protocol of the microcontroller is used, the auxiliary programming port can be used for UART communication, and the JTAG port for debugging\*.

<figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FLfq6hu6NIEtrcAzLvo55%252Fuser-manual-u-p-pinout.jpg%3Falt%3Dmedia%26token%3D0a66778b-f008-467d-9a32-18a5305421cf&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=6a8c3925&#x26;sv=2" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Note on JTAG pins:** Enabling the pins for an external JTAG debugger requires *burning* the configuration fuse *STRAP\_JTAG\_SEL* and connecting GPIO 3 to GND. To re-enable USB debugging, connect GPIO 3 to 3.3V. Burning the *DIS\_USB\_JTAG* fuse will permanently disable USB debugging and enable external debugging. Please note that this change is permanent, so using the USB port for debugging is recommended.
{% endhint %}

{% hint style="danger" %}
**Warning!** The VCC pin on the auxiliary programming port is 3.3V. If the microcontroller is powered through the USB port or the mikroBUS interface (5V) **DO NOT** connect anything to the VCC pin. IO0, RST, TX0, and RX0 pins operate at 3.3V, use the correct voltage levels or you might damage the device.
{% endhint %}

## V. Setup and Usage

This X-NODE utilizes the ESP32-S3 module directly, making it possible to interact with its native pins and provide wireless connectivity to other X-NODEs or development boards through various communication protocols such as UART or I2C, you can program it using your preferred development environment.

Connect your **X-NODE MCU WIFI BLE (ESP32-S3)** to your computer via a USB Type-C cable and configure it depending on your operating system. The following examples use Windows.

{% hint style="warning" %}
If the module is **NOT** recognized, press the following sequence: Press Press BOOT button -> Press and Release RST button -> Release BOOT. After programming your device using this method, press the RST button to run the program.

Remember to enable CDC emulation on BOOT in your development environment to allow automatic programming and serial communication.
{% endhint %}

<details>

<summary>Setup for PlatformIO in VS Code with Arduino framework</summary>

1. Download and install Visual Studio Code:

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

2. Launch VS Code, go to the **Extensions** section, search for **PlatformIO IDE**, and install it. You may need to restart VS Code after installation.

<div align="left"><figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FBFePY7rwvU6AfDf5Wu6D%252Fuser-manual-pio-step-2.jpg%3Falt%3Dmedia%26token%3D1f25a16c-bfe6-4f39-b1a4-26f9ce150a26&#x26;width=400&#x26;dpr=3&#x26;quality=100&#x26;sign=4dd9acd9&#x26;sv=2" alt="" width="375"><figcaption></figcaption></figure></div>

3. Download and unzip the XC01-R5 template for PlatformIO.

<div align="left"><figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252Fns5sQjf2mdEpfIMIDiTf%252Fuser-manual-pio-step-3.jpg%3Falt%3Dmedia%26token%3D688e8b5a-7337-41f2-8154-109652c7c1dd&#x26;width=400&#x26;dpr=3&#x26;quality=100&#x26;sign=d13cc17e&#x26;sv=2" alt="" width="375"><figcaption></figcaption></figure></div>

4. In VS Code, open the project via **File -> Open Folder**. Select the folder where the template was saved and click Select Folder.

<div align="left"><figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FqKfvamNo5FNkycxqfSf9%252Fuser-manual-pio-step-4.png%3Falt%3Dmedia%26token%3D46df30bb-05d3-4f87-8011-975e87352ef6&#x26;width=400&#x26;dpr=3&#x26;quality=100&#x26;sign=490fc886&#x26;sv=2" alt="" width="375"><figcaption></figcaption></figure></div>

5. When the folder opens, PlatformIO will download the necessary tools for the ESP32 module. This may take some time the first time.

<div align="left"><figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FmK8Xvvr95RGR7anux7gB%252Fuser-manual-pio-step-5.jpg%3Falt%3Dmedia%26token%3Dcaf5fc5d-12b6-49c2-9fab-2d96847a70f5&#x26;width=400&#x26;dpr=3&#x26;quality=100&#x26;sign=6174da4c&#x26;sv=2" alt="" width="375"><figcaption></figcaption></figure></div>

6. Finally, the following structure will appear in VS Code and the project will be ready to use.

<div align="left"><figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FeU1GRHW3qXKOCJQgYiS9%252Fuser-manual-pio-step-6.jpg%3Falt%3Dmedia%26token%3D419257cc-65c7-4eb5-a8ab-6f56b8f5c604&#x26;width=400&#x26;dpr=3&#x26;quality=100&#x26;sign=f997393e&#x26;sv=2" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Setup for Arduino® IDE</summary>

1. Download and install Arduino® IDE:&#x20;

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

2. Launch Arduino® IDE and go to **File->Preferences**.

<div align="left"><figure><img src="/files/3HfJAlhC6kRP1HFuAIM2" alt="" width="191"><figcaption></figcaption></figure></div>

3. Paste the following URL into the "Additional Board URLs" field:

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

<div align="left"><figure><img src="/files/QGxhYBM8LqblCUGGcC9W" alt="" width="321"><figcaption></figcaption></figure></div>

4. Then go to **Tools->Board->Board Manager**.

<div align="left"><figure><img src="/files/3vkcBI8SccxnldimTamJ" alt="" width="357"><figcaption></figcaption></figure></div>

5. In the board manager, search for "ESP32" and install the package.

<div align="left"><figure><img src="/files/iuWq4wRL7BH20MOSpYrg" alt="" width="375"><figcaption></figcaption></figure></div>

6. Click on **Tools->Board->ESP32 Arduino** and select **ESP32S3 Dev Module**.

<div align="left"><figure><img src="/files/xfevvzaZsg6gMjGBdf1A" alt="" width="375"><figcaption></figcaption></figure></div>

7. Next, configure the board as shown in the image, select the port assigned to the module, and it's ready for use.

<div align="left"><figure><img src="/files/185ICOT1P5gDz7ZwSsmw" alt="" width="205"><figcaption></figcaption></figure></div>

8. Download and unzip the XC01-R5 template for Arduino IDE.

<div align="left"><figure><img src="https://docs.microside.com/~gitbook/image?url=https%3A%2F%2F177299348-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FbyV2zAlQAiqg46a3Lr8z%252Fuploads%252FDz3bjha6r55n7wbFutw0%252Fuser-manual-arduino-step-8.png%3Falt%3Dmedia%26token%3D983fe4fb-7881-43c9-bf10-21add4ce5e71&#x26;width=400&#x26;dpr=3&#x26;quality=100&#x26;sign=57dff159&#x26;sv=2" alt="" width="375"><figcaption></figcaption></figure></div>

9. Open the template in Arduino IDE and select "Save As...", give your project a new name. This template demonstrates peripheral configuration (UART, I2C, SPI) with mikroBUS pins.

<div align="left"><figure><img src="/files/Wt5EdOtRpVQN6BAhOcok" alt="" width="209"><figcaption></figcaption></figure></div>

</details>

## VI. Downloads

<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>Schematic</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>Dimensions</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>PlatformIO Template</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>Arduino Template</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/en/user-manuals/xide/x-nodes/xc01-mcu-wifi-ble/r5/xc01-mcu-wifi-ble-esp32-s3.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.
