Lógica de Audio
Generación, control y secuenciación de señales acústicas en GITAF PRO
Arquitectura de Generación de Sonido
A diferencia de sistemas básicos que utilizan tonos sintéticos (beep/buzzer), GITAF PRO implementa una arquitectura de Audio de Alta Fidelidad basada en reproducción de muestras MP3 pregrabadas.
¿Por qué DFPlayer Mini y no el DAC interno?
El ESP32 posee un conversor Digital-Analógico (DAC) interno, pero para este proyecto optamos por un módulo dedicado DFPlayer Mini por tres razones críticas:
- Calidad Psicoacústica: Permite reproducir sonidos diseñados específicamente para ser localizados por el oído humano (Ruido Rosa, pulsos cortos) en lugar de ondas senoidales puras que pueden ser confusas.
- Desacople de CPU: La decodificación del MP3 la hace el chip del módulo, liberando al procesador del ESP32 para mantener la conexión WiFi/ESP-NOW estable.
- Almacenamiento: Permite cambiar los sonidos simplemente reemplazando archivos en la MicroSD, sin reprogramar el chip.
Cadena de Señal (Signal Chain)
El flujo de audio sigue un recorrido diseñado para maximizar la potencia y minimizar el ruido eléctrico.
graph LR
ESP[ESP32] -->|UART: 9600 baud| MP3[DFPlayer Mini]
MP3 -->|DAC_R / DAC_L| Filter[Filtro Pasivo]
Filter -->|Señal Limpia| AMP[Amplificador PAM8403]
AMP -->|Potencia 5W| SPK[Parlante]Filtrado de Hardware
Para eliminar el "zumbido" digital característico de la transmisión WiFi, implementamos un filtro físico entre el módulo MP3 y el amplificador:
- Resistencia 1kΩ (Serie): Reduce la ganancia de entrada para evitar saturación.
- Capacitor 1000uF (Paralelo a Fuente): Absorbe los picos de consumo del amplificador.
Lógica del Secuenciador (Firmware)
El corazón de la orientación no es solo "reproducir sonido", sino cómo se reproduce. El firmware implementa una Máquina de Estados Finita para controlar la secuencia.
El Algoritmo de "3 Repeticiones"
Para evitar la contaminación acústica en la cancha, el sistema no suena continuamente. Sigue este patrón estricto:
- Trigger: Recibe comando
'1'(Start). - Bucle Activo:
- Reproduce Pista 001.
- Espera 3 Segundos.
- Reproduce Pista 001.
- Espera 3 Segundos.
- Reproduce Pista 001.
- Auto-Stop: Detiene el audio y entra en bajo consumo.
Implementación en Código
// Fragmento real del firmware GITAF PRO
const int MAX_PLAYS = 3; // Límite de repeticiones
const int PLAY_INTERVAL = 3000; // Silencio entre audios (ms)
void audioLoop() {
if (sequenceActive) {
unsigned long currentMillis = millis();
// Verifica si es momento de sonar (Non-blocking delay)
if (currentMillis - lastPlayTime >= PLAY_INTERVAL || lastPlayTime == 0) {
if (playCount < MAX_PLAYS) {
// --- ACCIÓN DE REPRODUCCIÓN ---
myDFPlayer.play(1);
Serial.println("Reproduciendo Beacon...");
playCount++;
lastPlayTime = currentMillis;
} else {
// --- FINALIZACIÓN ---
sequenceActive = false;
playCount = 0;
// El sistema queda en silencio automáticamente
}
}
}
}Este enfoque "no bloqueante" (usando millis() en lugar de delay()) es fundamental. Permite que el ESP32 siga escuchando comandos de "STOP" de emergencia incluso mientras espera entre sonidos.
Gestión de Archivos en Tarjeta SD
El módulo DFPlayer Mini requiere una estructura de archivos muy específica para funcionar correctamente.
Estructura de Carpetas
La tarjeta MicroSD (formateada en FAT32) debe tener la siguiente jerarquía:
(Raíz de la SD)
│
└── mp3/ <-- Carpeta obligatoria llamada "mp3"
│
├── 0001.mp3 <-- Sonido principal (Beacon)
├── 0002.mp3 <-- (Opcional) Sonido de batería baja
└── 0003.mp3 <-- (Opcional) Sonido de confirmaciónReglas de Nombrado
- Los archivos DEBEN empezar con 4 dígitos numéricos:
0001,0002, etc. - Puedes añadir texto después de los números, ej:
0001_Sonido_Gol.mp3, pero los números son lo único que lee el chip. - En el código, llamamos al archivo con
myDFPlayer.play(1);para el0001.mp3.
Control de Volumen y Ganancia
El sistema tiene dos etapas de control de volumen:
- Digital (Software):
Controlado por el comando
myDFPlayer.volume(25);.
- Rango: 0 a 30.
- Valor óptimo GITAF: 25 (Valores superiores a 28 suelen introducir distorsión).
- Analógico (Hardware): El amplificador PAM8403 suele incluir un pequeño potenciómetro.
- Recomendación: Dejar el potenciómetro físico al máximo y controlar el volumen final solo desde el código para asegurar que todos los postes suenen igual.
Tipos de Sonido Recomendados
Para fútbol de ciegos, el tipo de audio es crucial para la ecolocalización.
| Tipo de Audio | Descripción | Uso en GITAF |
|---|---|---|
| Ruido Rosa / Blanco | Sonido estático tipo "lluvia". | Recomendado. Excelente para ubicación espacial. |
| Pulsos (Beeps) | Tonos agudos intermitentes. | Útil, pero puede rebotar mucho en gimnasios cerrados (eco). |
| Voz Humana | Grabación diciendo "Arco", "Aquí". | Intuitivo, pero menos preciso para calcular distancia. |
| Percusión | Sonido de golpe seco (madera/metal). | Muy bueno para simular el sonido del balón o los postes. |
Para el archivo 0001.mp3, recomendamos un sonido de percusión metálica breve (aprox 1 segundo) o una ráfaga corta de ruido rosa. Evita canciones o melodías largas.