Bienvenido al repositorio oficial del taller práctico de sistemas embebidos de MediaLab UniOvi (Universidad de Oviedo). En esta sesión construirás un sensor de aparcamiento inteligente para coche utilizando un microcontrolador ESP32, un sensor de distancia ultrasónico HC-SR04, un avisador acústico (Buzzer) y una pantalla OLED I2C SSD1306.
Escanea este código QR con tu móvil para acceder al repositorio en GitHub
https://github.com/MediaLabUniovi/CursoMicros
🚀 Abrir el Cargador Web Online en GitHub Pages (¡Sin instalar nada!)
No necesitas instalar PlatformIO, drivers complejos ni compilar código si solo quieres cargar el proyecto en tu ESP32:
-
Paso 1: Conectar el ESP32 por USB
Conecta la placa ESP32 a cualquier puerto USB de tu ordenador con un cable de datos. -
Paso 2: Entrar en la carpeta
CargaCodigoy ejecutar el cargador- En Windows: Haz doble clic en
Iniciar_Cargador.bat. - En Linux / macOS: Abre una terminal en la carpeta y ejecuta
./Iniciar_Cargador.sh.
(Se abrirá automáticamente tu navegador enhttp://localhost:8000).
- En Windows: Haz doble clic en
-
Paso 3: Pulsar "Conectar y Cargar Código" en el navegador
- Haz clic en el botón principal.
- Selecciona el puerto serie de tu ESP32 (COMx en Windows o
/dev/ttyUSB*en Linux/Mac). - ¡Listo! En unos segundos el firmware se grabará y el ESP32 se reiniciará automáticamente.
Tip
Si el cargador web indica que no puede conectar con la placa, mantén presionado el botón BOOT del ESP32 justo al pulsar el botón "Conectar" hasta que empiece la detección.
Conecta los componentes en la protoboard siguiendo esta asignación de pines:
| Componente | Pin del Componente | Pin ESP32 / Conexión | Descripción y Notas |
|---|---|---|---|
| HC-SR04 (Ultrasónico) | VCC |
VIN (5V) | Alimentación a 5V desde el bus USB |
GND |
GND | Masa común | |
TRIG |
GPIO 5 | Salida digital de pulsos ultrasónicos | |
ECHO |
GPIO 18 | Pasa por divisor resistivo (1kΩ / 2kΩ) | |
| Divisor Resistivo | Resistencia R1 (1kΩ) | Entre ECHO y GPIO 18 |
Protege el GPIO del ESP32 (máx. 3.3V) |
| (Protección Echo) | Resistencia R2 (2kΩ) | Entre GPIO 18 y GND |
Reduce la señal de 5V a ~3.3V |
| Buzzer (Zumbador) | Ánodo (+) |
GPIO 19 | Salida PWM/digital para tonos de proximidad |
Cátodo (-) |
GND | Masa común | |
| Pantalla OLED I2C | VCC |
3.3V o VIN | Alimentación del módulo SSD1306 |
| (128x64 píxeles) | GND |
GND | Masa común |
SDA |
GPIO 21 | Línea de datos I2C por defecto | |
SCL |
GPIO 22 | Línea de reloj I2C por defecto |
Important
Protección del pin ECHO (5V -> 3.3V):
El sensor HC-SR04 emite la señal ECHO a 5V. Las entradas digitales del ESP32 toleran un máximo de 3.3V. El divisor formado por R1 = 1 kΩ en serie y R2 = 2 kΩ a masa rebaja el voltaje a un nivel seguro:
💾 Archivo para Fritzing: Puedes descargar y abrir el circuito directamente en Fritzing con el archivo
CargaCodigo/Esquema_Conexiones.fzz.
Para los alumnos que deseen explorar el código fuente en C++, modificar los límites de distancia, personalizar los gráficos de la pantalla OLED o añadir nuevas funciones:
- Abre Visual Studio Code con la extensión PlatformIO IDE instalada.
- Abre la carpeta raíz del proyecto (
CursoMicros). - El archivo de código principal está en
src/main.cpp, completamente documentado y comentado paso a paso. - Pulsa el botón ✓ (Build) en la barra inferior para compilar o ➜ (Upload) para subir tus modificaciones.
CursoMicros/
├── CargaCodigo/ <- Herramienta autónoma web para flashear
│ ├── index.html <- Interfaz Web Serial en español (esptool-js)
│ ├── esptool-bundle.js <- Motor Web Serial empaquetado (offline)
│ ├── Iniciar_Cargador.bat <- Lanzador 1-clic para Windows
│ ├── Iniciar_Cargador.sh <- Lanzador 1-clic para Linux / macOS
│ ├── server.ps1 <- Servidor HTTP nativo en PowerShell
│ ├── manifest.json <- Manifiesto ESP Web Tools
│ ├── firmware.bin <- Offset 0x10000 (Código del sensor de parking)
│ ├── bootloader.bin <- Offset 0x1000 (Gestor de arranque ESP32)
│ ├── partitions.bin <- Offset 0x8000 (Tabla de particiones)
│ └── boot_app0.bin <- Offset 0xe000 (Configuración de arranque OTA)
├── src/
│ └── main.cpp <- Código fuente en C++ para Arduino/PlatformIO
├── platformio.ini <- Configuración de compilador y librerías
└── README.md <- Guía del taller y conexiones
MediaLab UniOvi — Laboratorio de Fabricación y Prototipado
Universidad de Oviedo