# Placa ESP32

## Pinout placa ESP32

A continuación se muestra el diagrama de pines de la placa NodeMCU ESP32 (del fabricante ia-thinker) que es la placa disponible en el laboratorio:

<figure><img src="https://github.com/UdeA-IoT/iot-2022_1/raw/main/percepcion/sesion1/esp32/nodemcu_32s_pin.png" alt=""><figcaption></figcaption></figure>

La siguiente tabla tomada del datasheet, describe cada uno de estos pines

<table><thead><tr><th width="78.33333333333331">No.</th><th width="121">Pin Name</th><th>Functional Description</th></tr></thead><tbody><tr><td>1</td><td><code>3.3V</code></td><td>Module power supply pin</td></tr><tr><td>2</td><td><code>EN</code></td><td>Chip Enabled Pin, Active High</td></tr><tr><td>3</td><td><code>SVP</code></td><td>GPIO36，ADC1_CH0，RTC_GPIO0</td></tr><tr><td>4</td><td>SVN</td><td>GPIO39，ADC1_CH3，RTC_GPIO3</td></tr><tr><td>5</td><td><code>P34</code></td><td>GPIO34，ADC1_CH6，RTC_GPIO4</td></tr><tr><td>6</td><td><code>P35</code></td><td>GPIO35，ADC1_CH7，RTC_GPIO5</td></tr><tr><td>7</td><td><code>P32</code></td><td>GPIO32, XTAL_32K_P (32.768kHz Crystal input), ADC1_CH4, TOUCH9,RTC_GPIO9</td></tr><tr><td>8</td><td><code>P33</code></td><td>GPIO33, XTAL_32K_N (32.768kHz Crystal output),ADC1_CH5, TOUCH8,RTC_GPIO8</td></tr><tr><td>9</td><td><code>P25</code></td><td>GPIO25，DAC_1，ADC2_CH8，RTC_GPIO6，EMAC_RXD0</td></tr><tr><td>10</td><td><code>P26</code></td><td>GPIO26，DAC_2，ADC2_CH9，RTC_GPIO7，EMAC_RX_DV</td></tr><tr><td>11</td><td><code>P27</code></td><td>GPIO27，ADC2_CH7，TOUCH7，RTC_GPIO17，EMAC_RX_DV</td></tr><tr><td>12</td><td><code>P14</code></td><td>GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK,SD_CLK, EMAC_TXD2</td></tr><tr><td>13</td><td><code>P12</code></td><td>GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2,SD_DATA2, EMAC_TXD3</td></tr><tr><td>14</td><td><code>GND</code></td><td>GND</td></tr><tr><td>15</td><td><code>P13</code></td><td>GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3,SD_DATA3, EMAC_RX_ER</td></tr><tr><td>16</td><td><code>SD2</code></td><td>GPIO9, SD_DATA2, SPIHD, HS1_DATA2, U1RXD</td></tr><tr><td>17</td><td><code>SD3</code></td><td>GPIO10, SD_DATA3, SPIWP, HS1_DATA3, U1TXD</td></tr><tr><td>18</td><td><code>CMD</code></td><td>GPIO11, SD_CMD, SPICS0, HS1_CMD, U1RTS</td></tr><tr><td>19</td><td><code>5V</code></td><td>Module power supply pin</td></tr><tr><td>20</td><td><code>CLK</code></td><td>GPIO6, SD_CLK, SPICLK, HS1_CLK, U1CTS</td></tr><tr><td>21</td><td><code>SD0</code></td><td>GPIO7, SD_DATA0, SPIQ, HS1_DATA0, U2RTS</td></tr><tr><td>22</td><td><code>SD1</code></td><td>GPIO8, SD_DATA1, SPID, HS1_DATA1, U2CTS</td></tr><tr><td>23</td><td><code>P15</code></td><td>GPIO15, ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13, HS2_CMD,SD_CMD, EMAC_RXD3</td></tr><tr><td>24</td><td><code>P2</code></td><td>GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0,SD_DATA0</td></tr><tr><td>25</td><td><code>P0</code></td><td>GPIO0, ADC2_CH1, TOUCH1, CLK_OUT1,RTC_GPIO11, EMAC_TX_CLK; <mark style="color:red;"><strong>Download mode: external pull low, running mode: floating or external pull high</strong></mark></td></tr><tr><td>26</td><td><code>P4</code></td><td>GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1,SD_DATA1, EMAC_TX_ER</td></tr><tr><td>27</td><td><code>P16</code></td><td>GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT</td></tr><tr><td>28</td><td><code>P17</code></td><td>GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180</td></tr><tr><td>29</td><td><code>P5</code></td><td>GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK</td></tr><tr><td>30</td><td><code>P18</code></td><td>GPIO18, VSPICLK, HS1_DATA7</td></tr><tr><td>31</td><td><code>P19</code></td><td>GPIO19, VSPIQ, U0CTS, EMAC_TXD0</td></tr><tr><td>32</td><td><code>GND</code></td><td>GND</td></tr><tr><td>33</td><td><code>P21</code></td><td>GPIO21, VSPIHD, EMAC_TX_EN</td></tr><tr><td>34</td><td><code>RX</code></td><td>GPIO3, U0RXD, CLK_OUT2</td></tr><tr><td>35</td><td><code>TX</code></td><td>GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2</td></tr><tr><td>36</td><td><code>P22</code></td><td>GPIO22, VSPIWP, U0RTS, EMAC_TXD1</td></tr><tr><td>37</td><td>P23</td><td>GPIO23, VSPID, HS1_STROBE</td></tr><tr><td>38</td><td>GND</td><td>GND</td></tr></tbody></table>

La siguiente tabla muestra de manera resumida los diferentes pines agrupados por funciones:

<table data-header-hidden><thead><tr><th width="199">Tipo</th><th>Notación pines (placa)</th></tr></thead><tbody><tr><td>Digital (Only input)</td><td><code>P34, P35, SVP, SVN</code></td></tr><tr><td>Analog in</td><td><code>SVP, SVN, P35, P34, P32, P33, P25, P26, P27, P14, P12, P13, P15, P2, P0, P4</code></td></tr><tr><td>PWM</td><td><code>SVP, SVN, P35, P34, P32, P33, P25, P26, P27, P14, P12, P13, P15, P2, P0, P4</code> </td></tr><tr><td>Serial (UART)</td><td><code>Tx, Rx, D8, D7</code></td></tr><tr><td>I2C</td><td><code>P22, P21</code> </td></tr><tr><td>Digital SPI</td><td><code>P23, P19, P18, P5</code></td></tr><tr><td>Flash SPI</td><td><code>CLK, SD0, SD1, CMD, SD2, SD3</code> </td></tr><tr><td>Capacitive touch</td><td><code>P0,  P4,  P2,  P15,  P13,  P12,  P14,  P27</code> </td></tr></tbody></table>

Para conocer mas sobre el uso de los pines para esta plataforma se recomienda ver la pagina: [ESP32 Pinout Reference: Which GPIO pins should you use?](https://randomnerdtutorials.com/esp32-pinout-reference-gpios/)

## Arduino core for the ESP32, ESP32-S2, ESP32-S3 and ESP32-C3

De manera similar al ESP8266, el ESP32 puede programarse usando el API arduino. Para mas información puede consultar la documentación de este Core en el siguiente [link](https://docs.espressif.com/projects/arduino-esp32/en/latest/).

Antes de empezar a usar el core para el esp32s, es necesario instalar las librerias necesarias para ello. Para esto siga las instrucciones que se describen en el link [Installing the ESP32 Board in Arduino IDE (Windows, Mac OS X, Linux)](https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/)

Antes de analizar los ejemplos que se muestran a continuación se recomuenda que de un vistazo al link [Getting Started with the ESP32 Development Board](https://randomnerdtutorials.com/getting-started-with-esp32/)

## Ejemplos

Antes de empezar a realizar los ejemplos, se debe seleccionar la tarjeta con la cual se va a trabajar (NodeMCU-32s) tal y como se muestra en la siguiente figura para el IDE de Arduino:

<figure><img src="https://github.com/UdeA-IoT/iot-2022_1/raw/main/percepcion/sesion1/esp32/seleccion_nodemcu-32s.png" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Tenga en cuenta que antes de empezar la descarga del programa debe presionar el botón boot de la placa del ESP32 y liberarlo cuando salga el mensaje “**Connecting…**”  en el IDE de Arduino. (Para más información ver la sección **Troubleshooting** en el siguiente [link](https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/))
{% endhint %}

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FOCXG6aD06h33p4KPWDkc%2Fpin_ESP32.png?alt=media&#x26;token=5a28002f-889b-4277-bde2-7d94591bd146" alt=""><figcaption></figcaption></figure>

## Ejemplos

### Ejemplo 1

Poner parpadear un led a un periodo de 2 segundos usando el led de la tarjeta ESP32 (Ejemplo adaptado de: [Blink](https://docs.arduino.cc/built-in-examples/basics/Blink)).

#### Componentes

<table><thead><tr><th width="74">#</th><th width="112">Nombre</th><th width="127">Cantidad</th><th>Componente</th></tr></thead><tbody><tr><td>1</td><td>U1</td><td>1</td><td>Tarjeta de desarrollo ESP32</td></tr></tbody></table>

#### Esquematico

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FoiTjz4e3upFs9XnvkjnM%2Fejemplo1_ESP32_esquem%C3%A1tico.png?alt=media&#x26;token=a80b0797-a605-4e27-91c2-a5131d8c6bdb" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FCttPoCiXLeADRbGPBoRz%2Fejemplo1_ESP32_bb.png?alt=media&#x26;token=efdb0980-b383-488c-9eb0-6f251cd07982" alt=""><figcaption></figcaption></figure>

#### Archivo Fritzing

{% file src="<https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2Ff6NtUwx9h44Y4QbH49BL%2Fejemplo1_ESP32.fzz?alt=media&token=d490811a-5c30-487e-8783-3a226678b7b1>" %}

#### Código

```arduino
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   
  delay(1000);                       
  digitalWrite(LED_BUILTIN, LOW);    
  delay(1000);                      
}
```

#### Simulación

El montaje asociado a la [simulación](https://wokwi.com/projects/335030762714694227) se muestra a continuación:

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2F08qClvEj2LzQVTVuclcw%2Fejemplo1_ESP32.png?alt=media&#x26;token=9eaab423-5a15-42b6-b734-bb095cc8254d" alt=""><figcaption></figcaption></figure>

### Ejemplo 2

Prender el led integrado de la placa ESP32 cuando se presiona un switch. (Código adaptado para el ESP32 del link [How to Wire and Program a Button](https://docs.arduino.cc/built-in-examples/digital/Button))

#### Componentes

<table><thead><tr><th width="64">#</th><th width="112">Nombre</th><th width="127">Cantidad</th><th>Componente</th></tr></thead><tbody><tr><td>1</td><td>U1</td><td>1</td><td>Tarjeta de desarrollo ESP32</td></tr><tr><td>2</td><td>SW1</td><td>1</td><td>KY-004 BUTTON (37 Sensor Kit)</td></tr></tbody></table>

#### Esquematico

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2F6lPiQWYLR54xbpBJx6mo%2Fejemplo2_ESP32_esquem%C3%A1tico.png?alt=media&#x26;token=d2e87730-4d2a-470d-8365-1b9f4e070f32" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FrImkkNiue4DMJivA9wZv%2Fejemplo2_ESP32_bb.png?alt=media&#x26;token=e3923a69-6cf2-4463-b0df-48ab5a4d6932" alt=""><figcaption></figcaption></figure>

#### Archivo fritzing

{% file src="<https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FJ5AJkdPxUCAUTBxU2fOO%2Fejemplo2_ESP32.fzz?alt=media&token=34d11049-defa-4929-ba13-814d3bd62447>" %}

#### Código

```arduino
const int buttonPin = 5;         //  (GPIO5)
const int ledPin =  LED_BUILTIN; 

// variables will change:
int buttonState = 0;         

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}
```

#### Simulación

A continuación se muestra el montaje de la [simulación](https://wokwi.com/projects/335034266233602642):

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2F0FZT9QqPLQObHYKRPUlU%2Fejemplo2_ESP32.png?alt=media&#x26;token=e98994b1-1aa0-4a00-9644-35117c1b8a36" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Para entender mas se recomienda que mire el tutorial [ESP32 Digital Inputs and Digital Outputs (Arduino IDE)](https://randomnerdtutorials.com/esp32-digital-inputs-outputs-arduino/).
{% endhint %}

### Ejemplo 3

Modifica el brillo de un led (conectado al pin GPIO2) de manera automatica. (Código adaptado para el ESP32 del link [Fading a LED](https://docs.arduino.cc/built-in-examples/basics/Fade))

#### Componentes

<table><thead><tr><th width="64">#</th><th width="112">Nombre</th><th width="127">Cantidad</th><th>Componente</th></tr></thead><tbody><tr><td>1</td><td>U1</td><td>1</td><td>Tarjeta de desarrollo ESP32</td></tr><tr><td>2</td><td>SW1</td><td>1</td><td>KY-004 BUTTON (37 Sensor Kit)</td></tr></tbody></table>

#### Esquemático

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2F2VdSPP4DCkhHLzn52HCn%2Fejemplo3_ESP32_esquem%C3%A1tico.png?alt=media&#x26;token=855bc550-ca50-4b0c-9e17-b429107fda88" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FyEifulOLR351CoUvYQMg%2Fejemplo3_ESP32_bb.png?alt=media&#x26;token=b7c068b7-d36e-454d-b765-3d33cc0afe3a" alt=""><figcaption></figcaption></figure>

#### Archivo Fritizing

{% file src="<https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FJCtg56gdG7F5E767Ap2w%2Fejemplo3_ESP32.fzz?alt=media&token=17c54abc-cc56-4fca-ae3e-f71fd3cdb85f>" %}

#### Código

```arduino
int ledPin = 2;    // GPIO2

void setup() {
  // nothing happens in setup
}

void loop() {
  for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    analogWrite(ledPin, fadeValue);
    delay(30);
  }

  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    analogWrite(ledPin, fadeValue);
    delay(30);
  }
}
```

#### Simulación

A continuación se muestra el montaje de la [simulación](https://wokwi.com/projects/335030762714694227):&#x20;

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FbIvIIXkrDfvM2mAay0Ft%2Fejemplo3_ESP32.png?alt=media&#x26;token=78adda64-bedb-44eb-9e22-4aa822d1b161" alt=""><figcaption></figcaption></figure>

### Ejemplo 4

Llevar al puerto serial el valor de voltaje de un potenciometro leido a traves del puerto analogo. Adicionalmente empleando una señal PWM, variar el grado de luminosidad del led integrado en la tarjeta ESP32.

#### Componentes

<table><thead><tr><th width="64">#</th><th width="112">Nombre</th><th width="127">Cantidad</th><th>Componente</th></tr></thead><tbody><tr><td>1</td><td>U1</td><td>1</td><td>Tarjeta de desarrollo ESP32</td></tr><tr><td>2</td><td>SW1</td><td>1</td><td>KY-004 BUTTON (37 Sensor Kit)</td></tr></tbody></table>

#### Esquemático

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FN7FT4WsNkxJqFQD7hwhV%2Fejemplo4_ESP32_esquem%C3%A1tico.png?alt=media&#x26;token=03499a65-bb80-4637-a1d1-5cfaf77bb757" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2Fl5gI0uvtDglAWecMsnnX%2Fejemplo4_ESP32_bb.png?alt=media&#x26;token=ced27049-337f-46ef-9897-9fb63fb853fd" alt=""><figcaption></figcaption></figure>

#### Archivo Fritzing

{% file src="<https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2F5CvenvUBE6W4fzcNVLJI%2Fejemplo4_ESP32.fzz?alt=media&token=4496e3ea-1859-42cb-887d-46f114ebd409>" %}

#### Código

```arduino
const int analogInPin = 15;  //  GPIO15
const int analogOutPin = LED_BUILTIN; // ESP32 led

int sensorValue = 0;        
int outputValue = 0;        

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(analogInPin);
  outputValue = map(sensorValue, 0, 4095, 0, 255); // ADC de 12 bits
  analogWrite(analogOutPin, outputValue);

  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue);

  delay(2);
}
```

#### Simulación

A continuación se muestra el montaje de la [simulación](https://wokwi.com/projects/335035080677261908):&#x20;

<figure><img src="https://4115294714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxugokskCzICXfnqSP3ui%2Fuploads%2FHW6VItIjWC16i3I08OKN%2Fejemplo4_ESP32.png?alt=media&#x26;token=ee9dbfd6-7a45-4f74-848c-0a18f424f838" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Para comprender mejor este ejemplo se recomienda reforzar viendo el link [ESP32 ADC – Read Analog Values with Arduino IDE](https://randomnerdtutorials.com/esp32-adc-analog-read-arduino-ide/).
{% endhint %}

## Referencias

* [https://makeabilitylab.github.io/physcomp/esp32/iot.html  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://makeabilitylab.github.io/physcomp/resources/uw-courses.html  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://randomnerdtutorials.com/esp32-pinout-reference-gpios/  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io  \
  https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://randomnerdtutorials.com/getting-started-with-esp32/  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://programarfacil.com/esp8266/programar-esp32-ide-arduino/  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://github.com/espressif/arduino-esp32  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [http://esp32.net/  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://stevenmhernandez.github.io/ESP32-CSI-Tool/  ](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)
* [https://github.com/espressif/arduino-esp32](https://makeabilitylab.github.io/physcomp/esp32/iot.htmlhttps://makeabilitylab.github.io/physcomp/resources/uw-courses.htmlhttps://randomnerdtutorials.com/esp32-pinout-reference-gpios/https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introductionhttps://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-iohttps://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.htmlhttps://randomnerdtutorials.com/getting-started-with-esp32/https://programarfacil.com/esp8266/programar-esp32-ide-arduino/https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/https://github.com/espressif/arduino-esp32http://esp32.net/https://stevenmhernandez.github.io/ESP32-CSI-Tool/https://github.com/espressif/arduino-esp32)


---

# 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://udea-iot.gitbook.io/introduccion-al-iot/primeros-pasos/modelo-de-programacion/placa-esp32.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.
