Kedves Blogolvasó!
A Catalex Serial MP3 player tesztelése, egy kicsit bonyolultabb volt számomra, mivel csak egyetlen leírást találtam a beüzemeléshez, és az pedig lengyel nyelvű. A leírást itt meg lehet tekinteni a lengyel honlapon. Az ottani tesztben egy 32 GB-os kártyával használták a modult, én csak egy 2 GB-ossal. A modulon nem sokminden van, egy Micro SD kártya foglalat egy YX5300 chip és egy 3,5 mm-es sztereo jack kimenet kapott rajta helyet és lejátszás közben pedig villog egy led. Ennek ellenére tökéletesen működik a maga egyszerűségében.
A bekötése is roppant egyszerű, szinte adja magát.
VCC – 5V
GND – GND
TX – D5 pin
RX – D6 pin
A forráskód teljes egészében egy lengyel oldalról származik, én csak átalakítottam, hogy alap szinten vezérelni tudjam. Továbbá megosztom a lengyel oldalon található HEX kód táblázatot, ami különböző parancsokat tartalmaz.
| CMD | DAT1 | DAT2 | Zenefájlok betöltéséhez kapcsolódó műveletek |
| 0x0C | 0x00 | 0x00 | Rendszer RESET, közelező késleltetés 500ms |
| 0x09 | 0x00 | 0x02 | TF kártya és alkönyvtár kiválasztása, kötelező késleltetés 200ms |
| 0x03 | 0x00 | 0x03 | 3 zeneszám lejátszása |
| 0x08 | 0x00 | 0x03 | 3 zeneszám lejátszása hurokban |
| 0x0F | 0x02 | 0x01 | 2 mappa lejátszása hurokban |
| 0x22 | 0x1E | 0x04 | 4 fájl lejátszása hangerőbeállítással 30 = 1E |
| 0x17 | 0x02 | 0x00 | Zeneszámok lejátszása hurokban választható 2 mappa |
Itt hívnám fel a figyelmet arra, hogy a forrás megjelölésénél az SD kártyán lévő lejátszott mappát 01-02-03-as névvel kell jelölni, mert a HEX kódban így tudunk rá hivatkozni. „command(0x17, 0x0100);” Továbbá még itt jelezném, hogy bármilyen fordítási pontatlanságért elnézést kérek, mert a legjobb barátom és tolmácsom a google fordító volt a dokumentálásnál.
Kódtáblázat
| CMD | DAT1 | DAT2 | Lejátszási műveletek |
| 0x01 | 0x00 | 0x00 | Következő szám |
| 0x02 | 0x00 | 0x00 | Előző szám |
| 0x0E | 0x00 | 0x00 | Pause |
| 0x0D | 0x00 | 0x00 | Lejátszás folytatása |
| 0x16 | 0x00 | 0x00 | STOP zeneszám előlről |
| 0x04 | 0x00 | 0x00 | Vol+ |
| 0x05 | 0x00 | 0x00 | Vol- |
| 0x06 | 0x00 | 0x1E | Hangerő beállítás 30 = 1E |
| 0x0A | 0x00 | 0x00 | Alvó állapot (Sleep mode) |
| 0x0B | 0x00 | 0x00 | Ébresztés alvó állapotból (Wake up) |
| 0x1A | 0x00 | 0x00 | DAC bekapcsolás |
| 0x1A | 0x00 | 0x01 | DAC kikapcsolás |
Itt úgy érzem fontos megjegyezni, hogy ez a kis kütyü lehet, hogy ilyen egyszerű de az YX5300-ba még egy 24Bites DAC is belefért a jobb hangzás érdekében.
Catalex Serial MP3 player Forráskód:
#include < SoftwareSerial.h >
SoftwareSerial mp3(5, 6);
static uint8_t cmdbuf[8] = {0};
static uint8_t ansbuf[10] = {0};
char parancs = '0';
void command(int8_t cmd, int16_t dat)
{
delay(20);
cmdbuf[0] = 0x7e; // START byte
cmdbuf[1] = 0xFF; // Verzió
cmdbuf[2] = 0x06; // parancs hossza
cmdbuf[3] = cmd; // parancs hozzárendelés
cmdbuf[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback
cmdbuf[5] = (int8_t)(dat >> 8); // paraméter DAT1
cmdbuf[6] = (int8_t)(dat); // paraméter DAT2
cmdbuf[7] = 0xef; // END byte
for (uint8_t i = 0; i < 8; i++)
{
mp3.write(cmdbuf[i]);
}
}
// byte to hex függvény
void byte2hex(uint8_t b)
{
Serial.print("0x");
if (b < 16) Serial.print("0");
Serial.print(b, HEX);
Serial.print(" ");
}
boolean answer(void)
{
uint8_t i = 0;
while(mp3.available() && (i < 10)) { uint8_t b = mp3.read(); ansbuf[i] = b; i++; byte2hex(b); } Serial.println(); if ((ansbuf[0] == 0x7E) && (ansbuf[9] == 0xEF)) { return true; } return false; } void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // Kötelező késleltetés az inicializálás előtt command(0x09, 0x0002); // Az SD kártya mint forrás kiválasztása delay(200); // Kötelező késleltetés az indítás előtt } void loop() { if (Serial.available() > 0)
{
parancs = Serial.read();
}
switch (parancs)
{
case '1':
command(0x0E, 0x00);
Serial.println("Pause");
parancs = '0';
break;
case '2':
command(0x0D, 0x00);
Serial.println("Play");
parancs = '0';
break;
case '3':
command(0x01, 0x00);
Serial.println("Next");
parancs = '0';
break;
case '4':
command(0x02, 0x00);
Serial.println("Previous");
parancs = '0';
break;
case '5':
command(0x16, 0x00);
Serial.println("STOP");
parancs = '0';
break;
}
if (mp3.available()) // Ha a lejátszó elérhető
{
if (answer()) // Ha az answer függvény TRUE
{
if (ansbuf[3] == 0x3A) // Kártya vizsgálata // Ha be van dugva
{
Serial.println("TF Card in slot");
command(0x17, 0x0200); // A 02-es mappa játszása folyamatosan
}
if (ansbuf[3] == 0x3B) // Kártya vizsgálata // Ha ki van húzva
{
Serial.println("TF Card out of slot");
}
}
}
}
Itt a forráskódnál, egy alap állapotban én most a 02-es mappa tartalmát játszom le, és a serial monitoron keresztül lehet vezérelni az 5 legegyszerűbb funkcióval a lejátszót.
1 – Pause
2 – Lejátszás folytatása
3 – Következő szám
4 – Előző szám
5 – STOP (Playnél a számot előlről kezdi)
Jó szórakozást és ereményes tesztelést a modulhoz, remélem segítettem.








