Reproductor MP3 Serial Catalex para Arduino UNO: Configuración y Control Fácil
Componentes y suministros
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Reproductor MP3 serial Catalex (modelo V1.0) | 1 |
| Archivos de música (MP3/WAV) en tarjeta microSD | 1 |
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
Cómo usar el SERIAL MP3 PLAYER V1.0 de CATALex
Este módulo MP3 económico se controla mediante comandos serie. Aquí tienes una guía completa para integrarlo con Arduino.
1. Librerías necesarias
#include <SoftwareSerial.h>
2. Conexión e inicialización
Conecta el módulo al Arduino:
- TX del módulo → Pin 5 (RX software) del Arduino
- RX del módulo → Pin 6 (TX software) del Arduino
- VCC → 5V (o 3.3V según versión)
- GND → GND
#define ARDUINO_RX 5 // Conectar a TX del módulo
#define ARDUINO_TX 6 // Conectar a RX del módulo
SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);
3. Comandos principales (del datasheet)
El módulo entiende tramas de 8 bytes con formato: 0x7E FF 06 comando 00 00 00 EF
#define NEXT_SONG 0X01
#define PREV_SONG 0X02
#define CMD_PLAY_W_INDEX 0X03 // Requiere número de canción
#define VOLUME_UP_ONE 0X04
#define VOLUME_DOWN_ONE 0X05
#define CMD_SET_VOLUME 0X06 // Volumen 0-30 (0x1E)
#define CMD_SEL_DEV 0X09 // Seleccionar dispositivo almacenamiento
#define DEV_TF 0X02 // Tarjeta TF (microSD)
#define SLEEP_MODE_START 0X0A
#define SLEEP_MODE_WAKEUP 0X0B
#define CMD_RESET 0X0C // Reset chip
#define CMD_PLAY 0X0D // Reanudar reproducción
#define CMD_PAUSE 0X0E // Pausar
#define CMD_PLAY_WITHFOLDER 0X0F // Reproducir carpeta/archivo
#define STOP_PLAY 0X16
#define PLAY_FOLDER 0X17 // Reproducir carpeta
#define SET_CYCLEPLAY 0X19 // Modo bucle
4. Función para enviar comandos
static int8_t Send_buf[8] = {0};
void sendCommand(int8_t command, int16_t dat) {
delay(20);
Send_buf[0] = 0x7e; // Byte inicio
Send_buf[1] = 0xff; // Versión
Send_buf[2] = 0x06; // Longitud comando
Send_buf[3] = command;
Send_buf[4] = 0x00; // Sin retroalimentación
Send_buf[5] = (int8_t)(dat >> 8); // Byte alto datos
Send_buf[6] = (int8_t)(dat); // Byte bajo datos
Send_buf[7] = 0xef; // Byte fin
for (uint8_t i = 0; i < 8; i++) {
mySerial.write(Send_buf[i]);
}
}
5. Setup: seleccionar tarjeta TF
void setup() {
Serial.begin(9600); // Monitor serie PC
mySerial.begin(9600); // Comunicación módulo
delay(500); // Esperar inicialización chip
sendCommand(CMD_SEL_DEV, DEV_TF); // Seleccionar tarjeta TF
delay(200); // Esperar estabilización
}
6. Loop: reproducir primera canción con volumen 15
void loop() {
// Comando 0x22: reproducir con volumen y índice
// 0x0F01 = volumen 15 (0x0F), canción 1 (0x01)
sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);
delay(1000000); // Espera larga (ejemplo)
}
Cómo cargar canciones en la tarjeta SD
El chip lee archivos .mp3 o .wav en orden alfabético. Para control preciso:
- Crea carpetas nombradas
01,02, etc. - Nombra las canciones como
001cancion.mp3,002cancion.mp3dentro de cada carpeta. - Así garantizas el orden de reproducción.
¡Feliz hackeo!
Extra: Usando puerto serie hardware (para STM32, etc.)
El mismo código funciona con Serial1, Serial2 en placas con múltiples UARTs.
Código completo de prueba
// Código reorganizado por Javier Muñoz 10/11/2016
#include <SoftwareSerial.h>
#define ARDUINO_RX 5
#define ARDUINO_TX 6
SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);
// ... definiciones de comandos (ver arriba) ...
static int8_t Send_buf[8] = {0};
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
delay(500);
sendCommand(CMD_SEL_DEV, DEV_TF);
delay(200);
}
void loop() {
sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01); // Canción 1, vol 15
delay(1000000);
}
void sendCommand(int8_t command, int16_t dat) {
delay(20);
Send_buf[0] = 0x7e;
Send_buf[1] = 0xff;
Send_buf[2] = 0x06;
Send_buf[3] = command;
Send_buf[4] = 0x00;
Send_buf[5] = (int8_t)(dat >> 8);
Send_buf[6] = (int8_t)(dat);
Send_buf[7] = 0xef;
for (uint8_t i = 0; i < 8; i++) {
mySerial.write(Send_buf[i]);
Serial.print(Send_buf[i], HEX); // Debug en monitor serie
}
Serial.println();
}
Esquemáticos
Según el datasheet, la alimentación es de 3.2V a 5V con consumo ~200mA. Ver imagen del esquema de conexión adjunta.
Proceso de manufactura
- Amplifique el Mensaje de la Crisis de Mantenimiento: Descargue Versiones Blues y Reggae de la 'Canción de la Crisis de Mantenimiento'
- Piano Mecánico: Fusionando Tradición Acústica con Precisión Automatizada
- Muñeca interactiva "El Juego del Calamar" con Arduino UNO: Proyecto DIY
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Cómo reproducir audio con Arduino UNO y DFPlayer Mini – Guía paso a paso
- Reproductor MP3 controlado por web con Arduino: Reproducción de audio fácil desde el navegador