Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Reproductor MP3 Serial Catalex para Arduino UNO: Configuración y Control Fácil

Componentes y suministros

ComponenteCantidad
Arduino UNO1
Reproductor MP3 serial Catalex (modelo V1.0)1
Archivos de música (MP3/WAV) en tarjeta microSD1

Aplicaciones y servicios online

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:

#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:

¡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

  1. Amplifique el Mensaje de la Crisis de Mantenimiento: Descargue Versiones Blues y Reggae de la 'Canción de la Crisis de Mantenimiento'
  2. Piano Mecánico: Fusionando Tradición Acústica con Precisión Automatizada
  3. Muñeca interactiva "El Juego del Calamar" con Arduino UNO: Proyecto DIY
  4. Construye un Spybot controlado por Bluetooth con Arduino
  5. FlickMote: Mando IR por gestos para Smart Home
  6. TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
  7. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  8. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  9. Soluciones de Alimentación Optimizadas para Proyectos Arduino
  10. Cómo reproducir audio con Arduino UNO y DFPlayer Mini – Guía paso a paso
  11. Reproductor MP3 controlado por web con Arduino: Reproducción de audio fácil desde el navegador