Catalex Serial MP3 player – YX5300 Chippel

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.

CMDDAT1DAT2Zenefájlok betöltéséhez kapcsolódó műveletek
0x0C0x000x00Rendszer RESET, közelező késleltetés 500ms
0x090x000x02TF kártya és alkönyvtár kiválasztása, kötelező késleltetés 200ms
0x030x000x033 zeneszám lejátszása
0x080x000x033 zeneszám lejátszása hurokban
0x0F0x020x012 mappa lejátszása hurokban
0x220x1E0x044 fájl lejátszása hangerőbeállítással 30 = 1E
0x170x020x00Zeneszá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

CMDDAT1DAT2Lejátszási műveletek
0x010x000x00Következő szám
0x020x000x00Előző szám
0x0E0x000x00Pause
0x0D0x000x00Lejátszás folytatása
0x160x000x00STOP zeneszám előlről
0x040x000x00Vol+
0x050x000x00Vol-
0x060x000x1EHangerő beállítás 30 = 1E
0x0A0x000x00Alvó állapot (Sleep mode)
0x0B0x000x00Ébresztés alvó állapotból (Wake up)
0x1A0x000x00DAC bekapcsolás
0x1A0x000x01DAC 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.

 

Nézz be a webshopba a fellelhető alkatrészekért!

Kosár
Scroll to Top