# PlatformIO IDE / Visual Studio Code

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FTEY1eLVmf7Ff0rOk8bgY%2Fimage.png?alt=media&#x26;token=4b67f672-d335-4ff0-96be-2d7f64cb8b9e" alt="" width="336"><figcaption></figcaption></figure>

{% hint style="warning" %}
**NOTA:** Durante la instalación del entorno de desarrollo, se realizará la descarga de las herramientas de compilación/programación, se requiere un espacio de almacenamiento de \~1.5GB. \
Se recomienda utilizar una conexión a internet estable.
{% endhint %}

## Instalar VS Code

1. Descarga [Visual Studio Code](https://code.visualstudio.com/) en su página oficial a través del siguiente enlace:

{% embed url="<https://code.visualstudio.com/>" %}

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FT6PtX9YkDNn66pFXTU6W%2F01.png?alt=media&#x26;token=77221f78-acaf-4f83-a9ce-1f272f866222" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Visual Studio Code** está disponible para diferentes sistemas operativos, selecciona el tuyo.

![](https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FPtYUqk2UnVDmvJhTtg83%2Fimage.png?alt=media\&token=e3e3aaf1-080f-4fb4-bfef-9c6b48d559a0)
{% endhint %}

2. Ya descargado, instala Visual Studio Code, en este ejemplo usamos Windows.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FDBhhe3gTgACwde1WUKQE%2Fimage.png?alt=media&#x26;token=fea2c959-6f72-4782-a534-710e5857e2cb" alt=""><figcaption></figcaption></figure>

3. Una vez terminada la instalación ejecuta el programa, se mostrará una ventana como la siguiente:

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2F39Oi5HyTL4DQYEB69BnF%2Fimage.png?alt=media&#x26;token=25a3c566-f4ed-4211-af4f-18dd26506f5e" alt=""><figcaption></figcaption></figure>

<details>

<summary>Instalar driver USB Silicon Labs (Solo para XC01 R4 o versiones anteriores)</summary>

## Instalar driver USB Silicon Labs

1. Descarga el **driver USB Silicon Labs** a través de su página oficial en el siguiente enlace y **descomprime** el archivo.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><mark style="color:green;"><strong>CP210x USB to UART Bridge VCP Drivers - Silicon Labs</strong></mark></td><td><a href="https://www.silabs.com/developer-tools/usb-to-uart-bridge-vcp-drivers?tab=downloads">https://www.silabs.com/developer-tools/usb-to-uart-bridge-vcp-drivers?tab=downloads</a></td></tr></tbody></table>

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2F74Yfu3ItJtQ5ZQCU93xs%2Fimage.png?alt=media&#x26;token=dcb37641-28bc-42cf-985f-5bce5a60c83d" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
El **driver USB Silicon Labs** está disponible para diferentes sistemas operativos, selecciona el tuyo.
{% endhint %}

2. Conecta tu módulo **X-NODE MCU WIFI BLE (ESP32-WROOM-32)** a la computadora por medio del cable micro USB y localízalo en el administrador de dispositivos. Para este ejemplo usamos sistema operativo Windows.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2F146XpsE4cywCassWA6FI%2Fimage.png?alt=media&#x26;token=8c2d07b2-9c43-451d-a013-100185efc0c0" alt="" width="375"><figcaption></figcaption></figure></div>

3. Da clic derecho en el dispositivo y clic en ***Actualizar controlador**.*

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FiWnhhFRxoJNap3lzrV7y%2Fimage.png?alt=media&#x26;token=35434339-2ba5-4406-b5dc-26a3221af3f2" alt="" width="375"><figcaption></figcaption></figure></div>

4. Selecciona ***Buscar controladores en mi equipo***.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FutJtS7w940MlwVmmyjBD%2Fimage.png?alt=media&#x26;token=3ccd6a7d-2782-4fe3-8369-aa17b6eecaab" alt="" width="303"><figcaption></figcaption></figure></div>

5. Da clic en ***Examinar***, selecciona la carpeta del driver y da clic en ***Siguiente***.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FxyREMnsaVVeNnJIS38FC%2Fimage.png?alt=media&#x26;token=cab11c93-ecf6-4ee8-89d0-b1a2e0a91b69" alt="" width="304"><figcaption></figcaption></figure></div>

6. Por último, una vez instalado el driver con éxito, da clic en cerrar.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FwrLQdxLtyli9iGSh19EO%2Fimage.png?alt=media&#x26;token=9cad48b3-2f11-4b55-aa46-ce3b50856cfa" alt="" width="302"><figcaption></figcaption></figure></div>

7. ¡Listo! El dispositivo será reconocido por el sistema operativo.

<div align="left"><figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FsE4YgJDUgB5fBr0DyxiJ%2Fimage.png?alt=media&#x26;token=60ce69ad-5d1e-42f6-ae82-bd0dc89253dd" alt=""><figcaption></figcaption></figure></div>

</details>

## Instalar PlatformIO IDE

1. Dirígete hacia la barra de herramientas de lado izquierdo, da clic en el administrador de extensiones, busca **PlatformIO IDE** e instálalo.&#x20;

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FNF8cDvQO8pJyRV4E5MdY%2F02.png?alt=media&#x26;token=008441b5-f8e2-47ed-8cac-f669f9b424ef" alt=""><figcaption></figcaption></figure>

2. Al finalizar la instalación es probable que deba reiniciar VSCode para habilitar la extensión de PlatformIO, cierre todas las pestañas de VSCode y vuelva a abrirlo. Al iniciar el editor, si es la primera vez que instala una extensión, deberá deshabilitar el modo restringido presionando el botón Trust. De lo contrario PlatformIO no podrá ejecutarse.

<figure><img src="https://code.visualstudio.com/assets/docs/editing/workspaces/workspace-trust/restricted-mode-banner.png" alt="" width="375"><figcaption><p>Banner de VSCode en modo restringido</p></figcaption></figure>

<figure><img src="https://code.visualstudio.com/assets/docs/editing/workspaces/workspace-trust/workspace-trust-editor.png" alt="" width="375"><figcaption><p>Presione el botón Trust para deshabilitar el modo restringido</p></figcaption></figure>

2. Una vez instalado, abre el administrador de proyectos de **PlatformIO IDE** y crea un nuevo proyecto.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2Fmt05hqvJo8SMqCEYO4yf%2F03.png?alt=media&#x26;token=b473126b-7ccc-4fa3-bb2f-ffef2e3f8ac7" alt=""><figcaption></figcaption></figure>

3. Configura los paramétros del proyecto en el P*roject Wizard* y da clic en *Finish*:

{% tabs %}
{% tab title="XC01 R5" %}

* [x] Name: \<Nombre del proyecto>
* [x] Board: Espressif ESP32-S3-DevKitM-1
* [x] Framework: Arduino
* [x] Use default location
  {% endtab %}

{% tab title="XC01 R4 o versiones anteriores" %}

* [x] Name: \<Nombre del proyecto>
* [x] Board: Espressif ESP32 Dev Module
* [x] Framework: Arduino
* [x] Use default location
  {% endtab %}
  {% endtabs %}

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2Ff1Ct97INpLcBa5duuT9B%2F04.png?alt=media&#x26;token=43fda69d-61f0-4466-8380-ebd0cc6cc7d9" alt=""><figcaption></figcaption></figure>

4. Este proceso instala toda la cadena de herramientas requeridas para compilar los proyectos.

{% hint style="warning" %}
Debido al tamaño de los archivos el proceso de instalación puede demorar varios minutos, no canceles la instalación.
{% endhint %}

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FBn2LEM6dORgJO3hTyRtG%2Fimage.png?alt=media&#x26;token=932bd952-e512-411b-b025-5f5f85bd68c8" alt=""><figcaption></figcaption></figure>

5. Al finalizar el proceso se muestra la siguiente estructura, lo que indica que ha terminado la instalación de los archivos.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2F2YqgiwONoXYTKPQJw5Yw%2F06.png?alt=media&#x26;token=5fc173fb-367e-4fa6-828d-ba021f286ff8" alt=""><figcaption></figcaption></figure>

6. Edita el archivo platformio.ini para agregar la definición de los pines del XC01 y tabla de particiones como se muestra a continuación.

{% tabs %}
{% tab title="XC01 R5" %}

```ini
[env]
platform = espressif32@6.10.0
framework = arduino
; Serial monitor speed
monitor_speed = 115200
; Debug config
; debug_tool = esp-builtin
; debug_init_break = break setup
; build_type = debug

[env:xide-iot-trainer-r5]
board = esp32-s3-devkitm-1
; Set Flash Size & Partition table
board_build.partitions = app3M_fat9M_16MB.csv
board_build.flash_mode = qio
board_upload.flash_size = 16MB
board_upload.maximum_size = 16777216
build_flags = 
; Enable Serial comms over USB
    -DARDUINO_USB_MODE=1
    -DARDUINO_USB_CDC_ON_BOOT=1 
; Hardware version macro
    -DUSE_XC01_R5=1
; MikroBUS GPIO pinout
    -DMIKROBUS_PWM=5
    -DMIKROBUS_INT=7
    -DMIKROBUS_RX=9
    -DMIKROBUS_TX=10
    -DMIKROBUS_SDA=12
    -DMIKROBUS_SCL=13
    -DMIKROBUS_AN=4
    -DMIKROBUS_RST=15
    -DMIKROBUS_CS=6
    -DMIKROBUS_SCK=8
    -DMIKROBUS_MISO=18
    -DMIKROBUS_MOSI=17
; built-in uSD card CS GPIO
    -DuSD_CS=-1
; Built-in LED GPIO
    -DBOARD_LED=16
; BOOT button GPIO
    -DBOARD_BUTTON=0
```

{% endtab %}

{% tab title="XC01 R4 o versiones anteriores" %}

```ini
[env]
platform = espressif32@6.10.0
framework = arduino
; Serial monitor speed
monitor_speed = 115200

[env:xide-iot-trainer-r4]
board = esp32dev
build_flags = 
; Hardware version macro
    -DUSE_XC01_R4=1
; MikroBUS GPIO pinout
    -DMIKROBUS_PWM=33
    -DMIKROBUS_INT=26
    -DMIKROBUS_RX=16
    -DMIKROBUS_TX=17
    -DMIKROBUS_SDA=21
    -DMIKROBUS_SCL=22
    -DMIKROBUS_AN=32
    -DMIKROBUS_RST=27
    -DMIKROBUS_CS=2
    -DMIKROBUS_SCK=18
    -DMIKROBUS_MISO=19
    -DMIKROBUS_MOSI=23
    -DuSD_CS=25
    -DBOARD_LED=4
    -DBOARD_BUTTON=0
```

{% endtab %}
{% endtabs %}

7. Para asegurarse que la instalación fue exitosa, da clic en el botón *Compilar* que se encuentra en la parte inferior izquierda con el símbolo ![](https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FMced1RwR85WMF3uXKxXh%2Fimage.png?alt=media\&token=85be5875-e1b8-46f4-be74-1faff0bbd0e4), si la instalación fue exitosa se muestra el mensaje: **SUCCESS**.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FDr6DJouV2C79KZjENxi1%2F05.png?alt=media&#x26;token=a8c3a4df-a07e-4043-b514-377954fe0234" alt=""><figcaption></figcaption></figure>

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2Fr6ETd3GvGw3plUI7vZIL%2F08.png?alt=media&#x26;token=98c47da5-9768-4b8f-8606-f447a0513a01" alt=""><figcaption></figcaption></figure>

## Añadir librerías a un proyecto de PlatformIO IDE

1. Ingresa al administrador de librerías en **PlatformIO IDE**. ![](https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FJfOs5cR3b8DK0Czab2MH%2Fimage.png?alt=media\&token=eb3b8d43-cbcd-4ed9-a23b-61b46da5a9c4)

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FFh6I2Joo0Zds3SuZVnYm%2F10.png?alt=media&#x26;token=954c2860-d323-4790-9292-1ce021f0cb8a" alt=""><figcaption></figcaption></figure>

2. Busca la librería deseada y presta atención en las arquitecturas compatibles.

{% hint style="warning" %}
Debe mostrarse la arquitectura **Espressif 32**, de lo contrario puede que la librería no sea compatible.
{% endhint %}

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FSaQAuJTkTK8q0zpGIr0W%2F10_1.png?alt=media&#x26;token=66f36bca-0c05-442c-a8c5-887959db49d0" alt=""><figcaption></figcaption></figure>

3. Selecciona la versión de la librería que deseas utilizar y da clic en *Add to Project.*

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FJK2TnpfOVPHpO9KopGym%2F11.png?alt=media&#x26;token=faa8b521-4db1-4d65-8568-11369c38c095" alt=""><figcaption></figcaption></figure>

4. Selecciona el proyecto en el que se instalará la librería y da clic en *Add.*

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FjYOxATOsNXnPnKlMccDN%2F12.png?alt=media&#x26;token=af9b0b86-ab32-4a07-8500-3b38cf967a57" alt=""><figcaption></figcaption></figure>

## Configurar parámetros de un proyecto en PlatformIO IDE (Monitor serial)

1. Ingresa al administrador de proyectos en **PlatformIO IDE**, selecciona el proyecto que deseas configurar y da clic en *Configure.*

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FVTS31CslpXmDGpKq1ZOz%2F13.png?alt=media&#x26;token=7fe86c33-1277-4ea9-8d51-d885841302bb" alt=""><figcaption></figcaption></figure>

2. En el recuadro *New Option* selecciona la opción que deseas agregar al proyecto, por ejemplo:\
   \&#xNAN;*monitor\_speed*\
   \&#xNAN;*monitor\_echo*

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2F92Quk9Ny7Q9GW5vAPBMH%2F14.png?alt=media&#x26;token=9b30ab9d-4137-4bfa-8c88-d377b556af9b" alt=""><figcaption></figcaption></figure>

3. Configura la opción conforme a tus necesidades.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FiHTxzAGH7uNGYms33C3A%2Fimage.png?alt=media&#x26;token=5d9c1c2e-e14b-4733-b860-2c8b0cd16778" alt=""><figcaption></figcaption></figure>

4. Por último, da clic en el botón *Save* para guardar los cambios.&#x20;

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FdGdz4cThe1deMpX2ksqz%2F15.png?alt=media&#x26;token=4efa2441-1129-4fcc-b092-b4447d8439a2" alt=""><figcaption></figcaption></figure>

### Preguntas frecuentes

<details>

<summary>PlatformIO está demorando mucho tiempo en instalarse</summary>

El proceso de instalación requiere descargar hasta \~1.5GB de archivos. Asegúrese de contar con una conexión a internet estable con un ancho de banda de al menos 10Mbps. Si su conexión cumple con estos requisitos consulte: **VSCode muestra un error al intentar instalar/ejecutar PlatformIO**

</details>

<details>

<summary>PlatformIO no se está ejecutando en VSCode</summary>

Asegúrese que VSCode no se encuentre ejecutándose en modo restrictivo.  Consulte el paso 2 del manual: [Instalar PlatformIO IDE](#instalar-platformio-ide). \
En el administrador de extensiones asegurese que la extensión PlatformIO se encuentre habilitada y de ser necesario reinicie VSCode.

</details>

<details>

<summary>PlatformIO no puede programar la tarjeta: <br>"A fatal error occured: Could not open &#x3C;port>, the port doesn´t exist."</summary>

Asegúrese que ningún otro programa se encuentre utilizando el puerto de comunicación serial de la tarjeta. Desconecte la tarjeta y vuelva a conectarla a la computadora. Si el problema persiste revise las siguientes notas:

* **XC01 R4 o versiones anteriores:** Instale el driver de [Silicon Labs](#instalar-driver-usb-silicon-labs-solo-para-xc01-r4-o-versiones-anteriores). Reinicie su computadora al finalizar la instalación para aplicar los cambios.
* **XC05 R5:** Presione 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 (paso 6 en la sección [Instalar PlatformIO IDE](#instalar-platformio-ide)).

* **Windows:** Busque e instale actualizaciones en Windows Update.
* **Linux:** Instale el archivo de reglas udev: 99-platformio-udev.rules con el comando:

```bash
curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
```

* **MacOS:** Si está utilizando un HUB USB, desconectelo y conecte el cable USB desde su Mac al XC01 directamente.

</details>

<details>

<summary>VSCode muestra un error al intentar instalar/ejecutar PlatformIO</summary>

PlatformIO requiere Python 3.6 o superior. Lea las notas a continuación:

* **Windows:** Descargue e instale [Python](https://www.python.org/downloads/windows/). Durante el proceso de instalación seleccione la opción: <mark style="color:red;">Add Python to Path</mark> para permitir que VSCode utilice Python.

<figure><img src="https://docs.platformio.org/en/latest/_images/python-installer-add-path.png" alt=""><figcaption></figcaption></figure>

* **Linux:** La mayoría de las distribuciones Linux incluyen Python instalado por defecto, sin embargo, puede requerir instalar Python Virtual Environment con el siguiente comando:

```bash
sudo apt install python3-venv
```

</details>
