Loading 3D model… large boards can take a moment.
Controlador multimedia inalámbrico portátil basado en ESP32 que permite gestionar la reproducción de audio en una computadora mediante comunicación Bluetooth.
El sistema permite controlar remotamente la reproducción multimedia de una laptop sin requerir interacción física directa con la misma. Comunica mediante protocolo Bluetooth HID, lo que garantiza compatibilidad nativa con el sistema operativo sin necesidad de software adicional.
Desarrollado como proyecto de la materia Sistemas Embebidos II de la carrera de Ingeniería Mecatrónica en la Universidad Católica Boliviana.
| Componente | Especificación |
|---|
| Microcontrolador | ESP32 WROOM-32 (DevKit 30 pines) |
| Batería | Li-ion 18650 3.7V 2600mAh |
| Módulo de carga | TP4056 USB-C con protección |
| Boost converter | MT3608 |
| Regulador | AMS1117-3.3V |
| Encoder rotativo | Alps EC11 |
| Botones | 3 pulsadores táctiles |
| Indicadores | LED azul (Bluetooth — GPIO32), LED rojo (batería — GPIO33) |
| Herramienta | Versión |
|---|---|
| ESP-IDF | v6.0.1 |
| KiCad | 8.0 |
| Sistema operativo | Ubuntu 24.04 LTS |
| Compilador | xtensa-esp-elf-gcc 15.2.0 |
| Python | 3.12.3 |
| CMake | 3.28.3 |
| Git | 2.43.0 |
Instalar ESP-IDF v6.0.1 siguiendo la documentación oficial.
Clonar el repositorio:
git clone [email protected]:mario-nina/controlador-multimedia-bluetooth.git
cd controlador-multimedia-bluetooth
get_idf
cd firmware
idf.py set-target esp32
idf.py build
idf.py flash monitor
| Control | Función |
|---|---|
| Encoder — girar derecha | Subir volumen |
| Encoder — girar izquierda | Bajar volumen |
| Encoder — presionar | Play/Pause |
| Botón 1 | Siguiente pista |
| Botón 2 | Pista anterior |
| Botón 3 | Mute/Unmute |
| LED | Estado | Significado |
|---|---|---|
| Azul | Parpadeo rápido | Sin conexión BLE — advertising |
| Azul | Apagado | Conexión BLE activa |
| Rojo | Apagado | Batería OK (>= 3400mV) |
| Rojo | Parpadeo lento | Batería baja (< 3400mV) |
| Rojo | Parpadeo rápido | Batería crítica (< 3200mV) |
controlador-multimedia-bluetooth/ ├── firmware/ # Código fuente del firmware (ESP-IDF) │ ├── main/ # Punto de entrada de la aplicación │ │ └── firmware.c │ └── components/ # Módulos independientes │ ├── common/ # Configuración global del sistema │ │ └── include/ │ │ ├── config.h # Constantes de configuración del sistema │ │ └── pines.h # Mapa de asignación de pines GPIO │ ├── comunicacion_bt/ # Stack NimBLE + perfil HID Consumer Control │ ├── control_leds/ # Patrones de LEDs via esp_timer │ ├── driver_entrada/ # Botones (ISR) + encoder rotativo (PCNT) │ └── gestion_energia/ # Monitoreo ADC batería + modem sleep ├── hardware/ # Archivos de diseño de hardware │ ├── kicad/ # Proyecto KiCad (esquemático + PCB) │ ├── exportaciones/ # Archivos exportados desde KiCad │ │ ├── esquematico/ # PDF y SVG del esquemático │ │ ├── gerbers/ # Archivos Gerber para fabricación │ │ └── step/ # Modelos 3D de la carcasa │ └── pines.md # Asignación de pines con justificación técnica ├── docs/ # Documentación técnica │ ├── memoria_tecnica/ # Memoria técnica del proyecto (entrega académica) │ ├── diseno_pcb.md # Decisiones de diseño PCB con justificación │ ├── manual_usuario/ # Manual de usuario │ └── lista_materiales/ # Lista de materiales con especificaciones y costos ├── test/ # Pruebas y validación │ └── resultados/ # Resultados de pruebas documentadas ├── CHANGELOG.md ├── CONTRIBUTING.md ├── CONVENTIONS.md ├── LICENSE ├── ROADMAP.md └── README.md
El sistema se compone de cuatro subsistemas principales:
Los archivos de diseño se encuentran en hardware/kicad/ y las exportaciones en hardware/exportaciones/.
Desarrollado en C mediante ESP-IDF v6.0.1 con arquitectura basada en FreeRTOS.
Separación de responsabilidades en componentes independientes:
| Componente | Responsabilidad |
|---|---|
common | Configuración global — config.h y pines.h |
driver_entrada | Lectura de botones (ISR + debounce) y encoder (PCNT) |
comunicacion_bt | Stack NimBLE, advertising, perfil HID Consumer Control |
control_leds | Patrones de iluminación via esp_timer |
gestion_energia | Monitoreo ADC batería y modem sleep via esp_pm |
| Documento | Ubicación | Descripción |
|---|---|---|
| Asignación de pines | hardware/pines.md | Pines GPIO con justificación técnica y restricciones del ESP32 |
| Decisiones de diseño PCB | docs/diseno_pcb.md | Criterios técnicos aplicados en el diseño del PCB |
| Memoria técnica | docs/memoria_tecnica/ | Documento académico de descripción del proyecto |
| Historial de cambios | CHANGELOG.md | Registro de cambios por versión |
| Roadmap | ROADMAP.md | Estado actual y tareas pendientes por área |
Este proyecto usa SemVer para el versionado. El historial de cambios se documenta en CHANGELOG.md.
Este proyecto está bajo la licencia MIT. Ver LICENSE para más detalles.
Mario Nina Ingeniería Mecatrónica — Universidad Católica Boliviana GitHub: @mario-nina
No comments yet. Be the first to ask about this board.