> For the complete documentation index, see [llms.txt](https://udea-iot.gitbook.io/introduccion-al-iot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://udea-iot.gitbook.io/introduccion-al-iot/primeros-pasos/modelo-de-programacion/placa-esp32.md).

# 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="/files/s74hsUjp3BWmfL2p49YU" 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="/files/KdbWE4RI7fEYn89fiqfe" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="/files/x5XFIK6HEzPKlMEymOrC" alt=""><figcaption></figcaption></figure>

#### Archivo Fritzing

{% file src="/files/LrjDlNzMtGustz19H8Hh" %}

#### 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="/files/0v7YjUfeB4nWCqY8MWUL" 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="/files/u7ZtEOsp1vio8uGyWlLI" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="/files/O8Oe3jK6nWCl3JVTeEMT" alt=""><figcaption></figcaption></figure>

#### Archivo fritzing

{% file src="/files/5Kb3ejzM6brot1Eq87CW" %}

#### 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="/files/7RIrOQwmiCKVdrQTets1" 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="/files/5AVQF1hyyj9GYyoyMxCj" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="/files/XJ3my4YpFtwzjor8yMh1" alt=""><figcaption></figcaption></figure>

#### Archivo Fritizing

{% file src="/files/JgYJDHb4UKBHagQWoIqk" %}

#### 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="/files/Gj1fOpNcBWBG5U8eUyDy" 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="/files/LF8STtpb5HL66JhMG61y" alt=""><figcaption></figcaption></figure>

#### Conexión

<figure><img src="/files/xi20KuLFw7lrtbcaUD0K" alt=""><figcaption></figcaption></figure>

#### Archivo Fritzing

{% file src="/files/D62XrTCOBuMpKpHO8oh0" %}

#### 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="/files/EC1IbBZ4yalOw0CRWb1J" 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.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://makeabilitylab.github.io/physcomp/resources/uw-courses.html  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://randomnerdtutorials.com/esp32-pinout-reference-gpios/  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;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.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://randomnerdtutorials.com/getting-started-with-esp32/  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://programarfacil.com/esp8266/programar-esp32-ide-arduino/  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;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.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://github.com/espressif/arduino-esp32  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [http://esp32.net/  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://stevenmhernandez.github.io/ESP32-CSI-Tool/  ](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
* [https://github.com/espressif/arduino-esp32](<https://makeabilitylab.github.io/physcomp/esp32/iot.html&#xD;&#xA;https://makeabilitylab.github.io/physcomp/resources/uw-courses.html&#xD;&#xA;https://randomnerdtutorials.com/esp32-pinout-reference-gpios/&#xD;&#xA;https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide#introduction&#xD;&#xA;https://learn.adafruit.com/adafruit-metro-esp32-s2/usage-with-adafruit-io&#xD;&#xA;https://naylampmechatronics.com/espressif-esp/384-nodemcu-32-30-pin-esp32-wifi.html&#xD;&#xA;https://randomnerdtutorials.com/getting-started-with-esp32/&#xD;&#xA;https://programarfacil.com/esp8266/programar-esp32-ide-arduino/&#xD;&#xA;https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/&#xD;&#xA;https://github.com/espressif/arduino-esp32&#xD;&#xA;http://esp32.net/&#xD;&#xA;https://stevenmhernandez.github.io/ESP32-CSI-Tool/&#xD;&#xA;https://github.com/espressif/arduino-esp32>)
