Beruflich Dokumente
Kultur Dokumente
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.
1
Figura 2: 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.
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
4
T5 (GPIO 12)
T6 (GPIO 14)
T7 (GPIO 27)
T8 (GPIO 33)
T9 (GPIO 32)
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.
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:
Cuadro 1: SPI
2.8. Interrupciones
Todos los GPIO se pueden configurar como interrupciones.
NOTA IMPORTANTE :
7
Figura 6: opcion preferencias
8
Figura 8: Ingreso al Gestor de Placas
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
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
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);
}
}
// 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
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 ) ;
}
// 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);
}
Referencias
[1] https : //espressif.com/
[2] https : //en.wikipedia.org/wiki/ESP 32
[3] https : //www.arduino.cc/
14