Aplicaciones educativas y prácticas
• Educación STEM: Fomenta el aprendizaje en ciencia, tecnología,
ingeniería y matemáticas mediante la práctica y resolución de
problemas reales.
• Desarrollo de habilidades técnicas: Soldadura, diseño CAD,
impresión 3D, programación de microcontroladores, entre otros.
• Trabajo en equipo y resolución de problemas: Los equipos deben
colaborar desde la fase de diseño hasta la estrategia de combate.
• Innovación en ingeniería: Se estimula la búsqueda de soluciones
mecánicas y electrónicas creativas para obtener ventajas
competitivas.
ESP32
El ESP32 es un microcontrolador de bajo
costo y alto rendimiento desarrollado por
Espressif Systems, muy popular en
proyectos de electrónica, IoT (Internet de
las Cosas), automatización y robótica.
ESP32 WROOM 30 PINES
PARTES DEL ESP32
CHIP
RESET MICROCONTROLADOR
PUERTO USB
ANTENA
BOOT
PINES E/S
PINES DE ALIMENTACIÓN
ENTRADA 5V
ALIMENTACIÓN
TIERRA
POR USB
SALIDA 3.3V
PINES GPIO
ENTRADA/SALIDA SOLO ENTRADA
SEGUROS
GPIO4, GPIO5,
GPIO13, GPIO14,
GPIO16, GPIO17,
GPIO18, GPIO19,
GPIO21, GPIO22,
ENTRADA/SALIDA GPIO23, GPIO25–
GPIO27, GPIO32,
GPIO33
Entornos de programación: Arduino IDE
• Se puede programar con lenguaje C/C++
• Compatible con Windows, macOS y Linux.
• Curva de aprendizaje amigable, ideal para principiantes.
• Permite desarrollar desde proyectos simples (como encender un LED)
hasta avanzados (domótica, robots controlados por Wi-Fi o
Bluetooth).
• Comunidad activa y gran cantidad de tutoriales disponibles.
Instalación y configuración del entorno de
desarrollo.
1. Identificar el chip (CH340 o CP2102)
2. Descargar el driver e instalar
3. Instalar el Arduino IDE.
4. Agregar soporte para ESP32
• Una vez abierto el Arduino IDE:
• Ve a Archivo > Preferencias.
• En el campo “Gestor de URLs adicionales de tarjetas”, copia y pega la siguiente
URL:
[Link]
pages/package_esp32_index.json
Instalación y configuración del entorno de
desarrollo.
• Luego haz clic en Herramientas > Placa > Gestor de
placas.
• Busca ESP32 y selecciona "esp32 by Espressif Systems".
• Haz clic en Instalar.
5. Seleccionar la placa ESP32
• Ve a Herramientas > Placa y elige el modelo:
• “ESP32 Dev Module” para placas genéricas.
Instalación y configuración del entorno de
desarrollo.
6. Configurar el puerto
Conecta tu placa ESP32 al puerto USB de tu computadora. En el
menú Herramientas > Puerto, elige el puerto COM disponible
para seleccionar.
7. Cargar un programa de prueba
• Abre el ejemplo “Blink” desde Archivo > Ejemplos >
[Link] > Blink.
CUIDADOS DEL ESP32
✅ Antes de conectar o desconectar cables, apaga la alimentación.
✅ Conecta primero el cable al ESP32 y luego a la PC (o viceversa, pero sin
forzar el conector).
✅ El ESP32 puede calentarse un poco, sobre todo con WiFi, pero si está muy
caliente al tacto, revisa que no haya cortos.
✅ Cada escritura a la memoria flash tiene un ciclo de vida (~10,000 ciclos).
MALAS PRACTICAS CON ESP32
🚫 No toques los pines con objetos metálicos (como pinzas o
destornilladores con corriente).
🚫 No Conectar/desconectar cables con el ESP32 encendido aumenta el
riesgo de picos o cortos accidentales.
🚫 Evita conectar/desconectar repetidamente rápido, para no dañar el
regulador ni el chip USB.
🚫 No conectar directamente más de 3.3V a los pines GPIO
Función setup
void setup() { • Se ejecuta una sola vez, justo
después de encender o reiniciar el
// Instrucciones que microcontrolador.
se ejecutan una sola vez • Sirve para inicializar
al iniciar configuraciones básicas: pines de
entrada/salida, comunicación
} serial, sensores, etc.
• Es como preparar todo antes de
que empiece el "ciclo" principal.
Función loop
void loop() { • Se ejecuta infinitamente en bucle,
mientras la placa esté encendida.
// Instrucciones que se
repiten constantemente • Aquí se colocan las acciones que
deben repetirse: leer sensores,
} encender LEDs, controlar motores,
enviar datos, etc.
• Es el corazón del programa, que
nunca se detiene.
Función pinMode
Configura un pin específico pinMode(13,INPUT);
del ESP32 para que actúe
como salida (OUTPUT) o pinMode(12,OUTPUT);
entrada (INPUT).
INPUT = ENTRADA
pinMode(pin, mode);
OUTPUT = SALIDA
Función digitalWrite
Envía una señal digital (ON o
digitalWrite(13, HIGH);
OFF) a un pin.
→ el LED se enciende.
digitalWrite(pin, valor)
digitalWrite(13, LOW);
→ el LED se apaga.
HIGH = Enviar 3.3V → encender
el LED.
LOW = Enviar 0V → apagar el
LED.
Función delay
Pausa la ejecución del delay(1000);
programa por la cantidad
de milisegundos indicada.
Se usa para que el LED
1000 ms = 1 segundo. permanezca encendido o
apagado durante 1 segundo
antes de cambiar de estado.
delay(ms)
Declaración de Variables
int led1 = 13;
1. Su tipo de dato (qué
clase de valor puede
guardar). int → tipo de dato (número
entero).
2. Su nombre (cómo la vas
a llamar en el código). led1 → nombre de la variable.
3. Opcionalmente, su valor = 13 → se le asigna el valor 13
inicial. (que en este caso representa el
pin GPIO 13 del ESP32).
Tipos de variables comunes
Tipo ¿Qué guarda? Ejemplo
int Números enteros int led = 2;
float Números decimales float temp = 24.5;
bool Valores verdadero o falso bool encendido = true;
char Un solo carácter char letra = 'A';
String Cadenas de texto String nombre = "Luz";
Operadores matemáticos
Operador Significado Ejemplo
+ Suma int suma = a + b;
- Resta int resta = a – b;
* Multiplicación int mult = a * b;
/ División int div= a / b;
% Modulo (residuo división) int res = a % b;
Operadores de asignación
Operador Ejemplo Equivalente
= x = 5; Asigna 5 a x
+= x+= 3; x = x + 3;
-= x-= 3; x = x – 3;
*= x*= 3; x = x * 3;
/= x/= 3; x = x / 3;
%= x%= 3; x = x % 3;
Operadores de comparación
Operador Significado
== Igual a
!= Distinto de
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
Operadores lógicos
Para evaluar condiciones compuestas:
Operador Significado
&& Y lógico (AND)
! NO lógico (NOT)
Protoboard
También conocido como placa
de pruebas o breadboard, es
una herramienta muy útil
para construir y probar
circuitos electrónicos sin
necesidad de soldar.
LED – Diodo emisor de luz
• Es un componente
electrónico que emite luz
cuando pasa corriente
eléctrica por él.
• Ánodo (+) → patita larga.
• Cátodo (–) → patita corta.
SIMULADORES ESP32
• Simulador gratuito en
lí[Link] ESP32, ESP8266 y
Arduino.
• Permite conectar sensores,
pantallas, LEDs y más.
• Interfaz amigable y sin necesidad
de instalación.
Para utilizar el ESP32 de 30 pines
wokwi-esp32-devkit-v1
Ejercicios
Utilizando las funciones anteriores:
1. Encender un led.
2. Encender y apagar un led de forma
intermitente, con un lapso de 1 segundo.
3. Encender 2 leds.
4. Encender y apagar 2 leds de forma intercalada,
con un lapso de medio segundo.
Ejercicio: Encender un led (SOLUCIÓN)
int ledPin = 13; // Pin donde está conectado el LED
void setup() {
pinMode(ledPin, OUTPUT); // Configura el pin como salida
}
void loop() {
digitalWrite(ledPin, HIGH); // Enciende el LED
}
Encender y apagar un led de forma
intermitente, con un lapso de 1 segundo.
int ledPin = 13; // Pin donde está conectado el LED
void setup() {
pinMode(ledPin, OUTPUT); // Configura el pin como salida
}
void loop() {
digitalWrite(ledPin, HIGH); // Enciende el LED
delay(1000); // Espera 1 segundo (1000 ms)
digitalWrite(ledPin, LOW); // Apaga el LED
delay(1000); // Espera 1 segundo
}
Encender 2 leds
int led1 = 13; // LED1 en pin 13
int led2 = 14; // LED2 en pin 14
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
digitalWrite(led1, HIGH); // Enciende LED1
digitalWrite(led2, HIGH); // Enciende LED2
}
Encender y apagar 2 leds de forma
intercalada, con un lapso de medio segundo.
int led1 = 13; // LED1 en pin 13 digitalWrite(led2, LOW);
int led2 = 14; // LED2 en pin 14 delay(500); // espera medio
void setup() { segundo
pinMode(led1, OUTPUT); // Apaga LED1, enciende LED2
pinMode(led2, OUTPUT); digitalWrite(led1, LOW);
} digitalWrite(led2, HIGH);
void loop() { delay(500); // espera medio
segundo
// Enciende LED1, apaga LED2
}
digitalWrite(led1, HIGH);
¿Qué son las estructuras condicionales?
Las estructuras condicionales como if, else if y else permiten que
el programa ejecute diferentes bloques de código dependiendo
de si una condición es verdadera o falsa.
Encender o apagar un LED si se presiona un botón.
Tomar acciones según el valor leído en un sensor.
Sintaxis básica
if (condición) {
// Código que se ejecuta si la condición es verdadera
} else if (otra_condición) {
// Código que se ejecuta si la otra condición es verdadera
} else {
// Código que se ejecuta si ninguna condición anterior es verdadera
}
Ejemplo Estructuras Condicionales
Ejemplo Estructuras Condicionales
int led1 = 13; delay(1000);
int led2 = 14; digitalWrite(led1, LOW);
[Link]("Letra a
void setup() { presionada");
pinMode(led1, OUTPUT); }
pinMode(led2, OUTPUT); else {
[Link](115200); [Link]("Letra incorrecta");
} }
}
void loop() {
if([Link]()){ }
char letra = [Link]();
if(letra=='a'){
digitalWrite(led1, HIGH);
¿Qué son las estructuras cíclicas?
Las estructuras cíclicas o bucles son bloques de código que se
ejecutan repetidamente mientras se cumpla una condición (o hasta
que se cumpla cierta condición).
Son esenciales para:
Repetir tareas continuamente (ej: leer un sensor).
Esperar a que ocurra algo.
Hacer operaciones repetidas, como parpadear un LED varias veces.
Tipos de bucles en ESP32
while
Ejecuta el bloque de código mientras la condición sea verdadera.
int contador = 0;
while (condición) { while (contador < 5) {
// Código a ejecutar contador++;
repetidamente }
}
Tipos de bucles en ESP32
do…while
Ejecuta al menos una vez, y luego sigue repitiendo mientras la
condición sea verdadera.
int x = 0;
do { do {
// Código a ejecutar x++;
} while (condición); } while (x < 3);
Tipos de bucles en ESP32
for
Es muy usado para repetir un número fijo de veces.
for (int i = 0; i < 5; i++) {
for (inicialización; [Link](i);
condición; incremento) { }
// Código a ejecutar
}
Ejemplo Estructuras Ciclícas
Ejemplo práctico con ESP32: parpadear LED
int led1 = 13; delay(500);
digitalWrite(led1, LOW);
void setup() { delay(500);
pinMode(led1, OUTPUT); }
} delay(2000);
}
void loop() {
for (int i = 0; i < 5; i++)
{
digitalWrite(led1, HIGH);
Ejemplo práctico con ESP32: Secuencia LED
Ejemplo práctico con ESP32: Secuencia LED
int led1 = 12;
int led2 = 13; void loop(){
int led3 = 14; for(int i = 12; i<15; i++){
int tiempo=500; digitalWrite(i, HIGH);
delay(tiempo);
void setup(){ digitalWrite(i, LOW);
pinMode(led1, OUTPUT); delay(tiempo);
pinMode(led2, OUTPUT); } // fin del for
pinMode(led3, OUTPUT); }
}