Está en la página 1de 14

Introducción al ESP32

Francisco J. Castañeta M.
Arturo Marin Thames
Universidad Mayor de San Andrés, Bolivia
Mayo 24, 2019

Resumen
Ante la necesidad de una actualización de los requerimientos para la
carrera de Electrónica y Telecomunicaciones el uso de nuevos dispositivos
es una apremiante necesidad y como respuesta la elaboración de los cursos,
documentos respecto al Node MCU ESP-32.

1. Introducción
En el mercado se encuentran una infinidad de placas de desarrollo para el
Node MCU ESP-32. Pero la parte esencial el core de todos ellos es el encapsulado
fabricado por la empresa Espressif Systems la cual desarrollo el ESP-32.

Figura 1: Distintos tipos de placas de desarrollo para el ESP-32

El ESP-32 aunque no es la placa de desarrollo mas utilizada en IoT, existe


otra placa en base al ESP-8266 pero las principales diferencias son:

1
Figura 2: Comparación de ESP-32, ESP-8266

Figura 3: Comparación de ESP-32, ESP-8266

2
Como podemos observar los recursos de un ESP-32 son mayores a los de un
ESP-8266.

2. Hardware
Los periféricos ESP32 incluyen:
18 canales de conversión de analógico a digital (ADC)
3 interfaces SPI
3 interfaces UART

2 interfaces I2C
16 canales de salida PWM
2 convertidores de digital a analógico (DAC)

2 interfaces I2S
10 GPIOs de detección capacitiva
Las funciones ADC (convertidor analógico a digital) y DAC (convertidor digital
a analógico) se asignan a pines estáticos especı́ficos. Sin embargo, puede decidir
qué pines son UART, I2C, SPI, PWM, etc., solo tiene que asignarlos en el código.
Esto es posible debido a la caracterı́stica de multiplexación del chip ESP32.

Figura 4: Distribucion de Pines

3
2.1. Solo entrada
Los GPIOs 34 a 39 son GPI, entradas solo para pines. Estos pines no tienen
pull-ups internos o resistencias de pull-down. No se pueden usar como salidas,
ası́ que use estos pines solo como entradas:
GPIO 34
GPIO 35
GPIO 36
GPIO 39

2.2. Flash SPI integrado en el ESP-WROOM-32


GPIO 6 a GPIO 11 están expuestos en algunas placas de desarrollo ESP32.
Sin embargo, estos pines están conectados al flash SPI integrado en el chip ESP-
WROOM-32 y no se recomiendan para otros usos. Por lo tanto, no uses estos
pines en tus proyectos:
GPIO 6 (SCK / CLK)
GPIO 7 (SDO / SD0)
GPIO 8 (SDI / SD1)
GPIO 9 (SHD / SD2)
GPIO 10 (SWP / SD3)
GPIO 11 (CSC / CMD)

2.3. GPIOs capacitivos táctiles


El ESP32 tiene 10 sensores táctiles internos capacitivos. Estos pueden detec-
tar variaciones en cualquier cosa que contenga una carga eléctrica, como la piel
humana. Para que puedan detectar las variaciones inducidas al tocar los GPIO
con un dedo. Estos pines se pueden integrar fácilmente en las almohadillas ca-
pacitivas y reemplazan los botones mecánicos. Las clavijas táctiles capacitivas
también se pueden utilizar para activar el ESP32 desde el sueño profundo .
Esos sensores táctiles internos están conectados a estos GPIOs:
T0 (GPIO 4)
T1 (GPIO 0)
T2 (GPIO 2)
T3 (GPIO 15)
T4 (GPIO 13)

4
T5 (GPIO 12)
T6 (GPIO 14)
T7 (GPIO 27)
T8 (GPIO 33)

T9 (GPIO 32)

2.4. Convertidor analógico a digital (ADC)


El ESP32 tiene canales de entrada ADC de 18 x 12 bits (mientras que el
ESP8266 solo tiene 1x ADC de 10 bits). Estos son los GPIO que se pueden usar
como ADC y canales respectivos:
ADC1 CH0 (GPIO 36)
ADC1 CH1 (GPIO 37)

ADC1 CH2 (GPIO 38)


ADC1 CH3 (GPIO 39)
ADC1 CH4 (GPIO 32)

ADC1 CH5 (GPIO 33)


ADC1 CH6 (GPIO 34)
ADC1 CH7 (GPIO 35)
ADC2 CH0 (GPIO 4)

ADC2 CH1 (GPIO 0)


ADC2 CH2 (GPIO 2)
ADC2 CH3 (GPIO 15)

ADC2 CH4 (GPIO 13)


ADC2 CH5 (GPIO 12)
ADC2 CH6 (GPIO 14)
ADC2 CH7 (GPIO 27)

ADC2 CH8 (GPIO 25)


ADC2 CH9 (GPIO 26)

5
Los canales de entrada ADC tienen una resolución de 12 bits. Esto signi-
fica que puede obtener lecturas analógicas que van de 0 a 4095, en la que 0
corresponde a 0V y 4095 a 3.3V. También tiene la capacidad de establecer la
resolución de sus canales en el código, ası́ como el rango de ADC.

Los pines ESP32 ADC no tienen un comportamiento lineal. Probablemente


no podrá distinguir entre 0 y 0.1V, o entre 3.2 y 3.3V. Debe tener eso en cuenta
al usar los pines ADC. Obtendrá un comportamiento similar al que se muestra
en la siguiente figura.

Figura 5: Comportamiento del ADC

2.5. Convertidor digital a analógico (DAC)


Hay 2 canales DAC de 8 bits en el ESP32 para convertir señales digitales en
salidas de señal de voltaje analógicas. Estos son los canales DAC:
DAC1 (GPIO25)
DAC2 (GPIO26)

2.6. I2C
Cuando use el ESP32 con el IDE de Arduino, debe usar los pines por defecto
de ESP32 I2C (soportados por la biblioteca de Wire):

GPIO 21 (SDA)
GPIO 22 (SCL)

6
2.7. SPI
Por defecto, la asignación de pines para SPI es:

SPI MOSI MISO CLK CS


VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

Cuadro 1: SPI

2.8. Interrupciones
Todos los GPIO se pueden configurar como interrupciones.

3. Instalando el complemento ESP32 en Arduino


IDE
Importante: antes de iniciar este procedimiento de instalación, asegúrese de
tener la última versión del IDE de Arduino instalada en su computadora. Si
no lo hace, desinstálelo e instálelo de nuevo. De lo contrario, puede que no
funcione. Después de haber instalado el último software Arduino IDE de ar-
duino.cc/en/Main/Software , continúe con estos pasos.

NOTA IMPORTANTE :

Si esta es la primera vez que instala el ESP32 en el IDE de Arduino, sim-


plemente siga el procedimiento de instalación que se describe a continuación; Si
ya ha instalado el complemento ESP32 utilizando el método anterior, primero
debe eliminar la carpeta espressif .

3.1. Instalar la placa ESP32


Para instalar la placa ESP32 en su IDE de Arduino, siga las siguientes ins-
trucciones:

1) Abra la ventana de preferencias desde el IDE de Arduino. Ir a Archivo >


P ref erencias

7
Figura 6: opcion preferencias

2) Ingrese https : //dl.espressif.com/dl/packagee sp32i ndex.json en el cam-


po ÜRL adicionales de Board Managerçomo se muestra en la siguiente figura.
Luego, haga clic en el botón .OK”:

Figura 7: Instalacion del URL

3) Abrir el gestor de Placas.V ayaaHerramientas > P laca > Gestordeplacas...

8
Figura 8: Ingreso al Gestor de Placas

4) Busque ESP32 y presione el botón de instalación para .ESP32 by Espressif


Systems ”:

Figura 9: Instalacion de la Libreria

3.2. Probando la instalación


Conecte la placa ESP32 a su computadora. Luego, siga estos pasos:

1) Abre el IDE de Arduino


2) Seleccione su Tablero en el menú Herramientas > T ablero(DOIT ESP 32DEV KIT V 1)

9
3) Seleccione el puerto (si no ve el puerto COM en su IDE de Arduino, debe
instalar los controladores ESP32 CP210x USB a UART Bridge VCP )

4) Abra el siguiente ejemplo en Archivo > Ejemplos > W iF i(ESP 32) >
ScanW iF i

5) Si todo salió como se esperaba, deberı́a ver un mensaje de Çarga hecha ”.

10
6) Presione el botón de habilitación a bordo de ESP32 y deberı́a ver las redes
disponibles cerca de su ESP32:

11
4. Códigos
4.1. Touch Pins

// ESP32 Pin Touch


// Probar s o l o en Pines Touch por e j e m p l o e l 4 .

void s e t u p ( ) {
S e r i a l . begin (115200);
d e l a y ( 1 0 0 0 ) ; // Delay para poder o b s e r v a r e l d a t o
S e r i a l . p r i n t l n ( ”ESP32 Prueba Touch” ) ;
}

void l o o p ( ) {
S e r i a l . p r i n t l n ( touchRead ( 4 ) ) ; // muestra e l Touch 0 p i n = GPIO 4
delay (1000);
}
}

4.2. Manejo del ADC

// El p o t e n c i o m e t r o e s t a c o n e c t a d o a l GPIO 34 ( Analog ADC1 CH6)


const int potPin = 3 4 ;

// v a r i a b l e para g u a r a d a r e l v a l o r d e l ADC
int potValue = 0 ;

void s e t u p ( ) {
S e r i a l . begin (115200);
delay (1000);
}

void l o o p ( ) {
// Leendo e l v a l o r
potValue = analogRead ( potPin ) ;
S e r i a l . p r i n t l n ( potValue ) ;
delay (50 0);
}
4.3. Manejo del PWM

// I n d i c a c i o n d e l PIN a u s a r
const int l e d P i n = 1 6 ; // 16 c o r r e s p o n d e a l GPIO16

// I n i c i a l i z a c i o n d e l PWM
const int f r e q = 5 0 0 0 ;

12
const int l e d C h a n n e l = 0 ;
const int r e s o l u t i o n = 8 ;

void s e t u p ( ) {
// Configuramos e l PWM
l e d c S e t u p ( ledChannel , f r e q , r e s o l u t i o n ) ;

// I n i c i a m o s e l PWM
ledcAttachPin ( ledPin , ledChannel ) ;
}

void l o o p ( ) {
// i n c r e m e n t a e l b r i l l o d e l LED
f o r ( int dutyCycle = 0 ; dutyCycle <= 2 5 5 ; dutyCycle++){
// Cambiamos e l b r i l l o por PWM
l e d c W r i t e ( ledChannel , dutyCycle ) ;
delay ( 1 5 ) ;
}

// r e d u c e e l b r i l l o d e l LED
f o r ( int dutyCycle = 2 5 5 ; dutyCycle >= 0 ; dutyCycle −−){
// Cambiamos e l b r i l l o por PWM
l e d c W r i t e ( ledChannel , dutyCycle ) ;
delay ( 1 5 ) ;
}
}
4.4. Manejo del DAC

#include <d r i v e r / dac . h>


#include <math . h>
void s e t u p ( )
{
d a c o u t p u t e n a b l e (DAC CHANNEL 1 ) ;
d a c o u t p u t e n a b l e (DAC CHANNEL 2 ) ;
}

float t = 0;
void l o o p ( )
{
t += 0 . 0 1 ;
f o r ( f l o a t f = 0 ; f < M PI ∗ 2 ; f+= 0 . 0 1 )
{
d a c o u t p u t v o l t a g e (DAC CHANNEL 1, s i n ( f ) ∗ 120 + 1 2 0 ) ;
d a c o u t p u t v o l t a g e (DAC CHANNEL 2, c o s ( f + t ) ∗ 120 + 1 2 0 ) ;

13
}
d a c o u t p u t v o l t a g e (DAC CHANNEL 1, 2 5 5 ) ;
d a c o u t p u t v o l t a g e (DAC CHANNEL 2, 2 5 5 ) ;
delay ( 1 0 ) ;
}

4.5. Manejo del sensor de efecto Hall

// Simple s k e t c h t o a c c e s s t h e i n t e r n a l h a l l e f f e c t d e t e c t o r on t h e e sp 3 2 .
// v a l u e s can be q u i t e low .
// Brian Degger / @sctv

int v a l = 0 ;

void s e t u p ( ) {
S e r i a l . begin (9600);
}

// p u t your main code here , t o run r e p e a t e d l y


void l o o p ( ) {
// read h a l l e f f e c t s e n s o r v a l u e
val = hallRead ( ) ;
// p r i n t t h e r e s u l t s t o t h e s e r i a l monitor
S e r i a l . println ( val ) ;
delay (1000);
}

Referencias
[1] https : //espressif.com/
[2] https : //en.wikipedia.org/wiki/ESP 32
[3] https : //www.arduino.cc/

14

También podría gustarte