Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino MP3-Player Catalex

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Serieller MP3-Player von catalex
× 1
Einige nette Funkmusik
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

So verwenden Sie den SERIAL MP3 PLAYER V1.0 von CATALEX:

  • Laden Sie zuerst die Bibliotheken wie gewohnt herunter:
#include   
  • Jetzt wählen wir aus, welche Arduino-Pins an den MP3-Player angeschlossen werden sollen und initialisieren das serielle Protokoll.
#define ARDUINO_RX 5//sollte sich mit TX des seriellen MP3-Player-Moduls verbinden #define ARDUINO_TX 6//verbinden mit RX des Moduls SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//init the serial protocol, tell zu myserial, welche Pins TX und RX sind  
  • Hier habe ich gerade in #define übersetzt das Zeug aus dem Datenblatt:
/////////////////////////////////////////// /////////////////////////////////////// // alle benötigten Befehle im Datenblatt ( http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf[8] ={0};//Der MP3-Player versteht Befehle in einer 8 int Zeichenfolge //0X7E FF 06 Befehl 00 00 00 EF; (wenn Befehl =01 nächste Songreihenfolge) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATA IS REQUIRED (Nummer des Songs) #define VOLUME_UP_ONE 0X04 #define VOLUME_DOWN_ONE 0X05 #define CMD_PLAY_W_INDEX (VOLUME IST 0_SET/VOLUME) der Lautstärke von 0 bis 30(0x1E)) #define SET_DAC 0X17 #define CMD_PLAY_WITHVOLUME 0X22 //Daten werden benötigt 0x7E 06 22 00 xx yy EF;(xx Lautstärke)(yy Nummer des Songs) #define CMD_SEL_DEV 0X09 //SELECT STORAGE GERÄT, DATEN SIND ERFORDERLICH #define DEV_TF 0X02 //HALLO,IM DATEN ERFORDERLICH #define SLEEP_MODE_START 0X0A #define SLEEP_MODE_WAKEUP 0X0B #define CMD_RESET 0X0C//CHIP RESET #define CMD_PLAY 0X0D //RESUME WIEDERGABE_ PLAYBACK IS PAUSED #define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(spielen Sie den Song mit dem Verzeichnis \01\002xxxxxx.mp3 #define STOP_PLAY 0X16 #define PLAY_FOLDER 0X17// Daten werden benötigt 0x7E 06 17 00 01 XX EF;(Spiele den 01 Ordner)(Wert xx ist uns egal) #define SET_CYCLEPLAY 0X19//Daten werden benötigt 00 start; 01 schließen #define SET_DAC 0X17//Daten werden benötigt 00 starte DAC OUTPUT;01 DAC keine Ausgabe ////////////////////////////// //////////////////////////////////////////////// ////  
  • Der MP3-Chip versteht Befehle aus dem int-Array[8] mit diesem Format
0x7E FF aa bb 00 xx yy EF  

Wo:

  • das erste und das letzte int sind mit 0x7E- und 0xEF-Werten festgelegt
  • aa ist die Versionsnummer, gib einfach 0x06 ein;
  • bb ist der im vorherigen Punkt aufgeführte tatsächliche Steuerbefehl
  • xx ist der erste Datenblock
  • yy ist der zweite Int der Daten

Und dies ist die eigentliche Funktion, die das Array erstellt. Wir müssen nur einen der #defined auswählen Befehle und geben Sie den Wert der Daten ein.

void sendCommand(int8_t command, int16_t dat) { delay(20); Send_buf[0] =0x7e; //Startbyte Send_buf[1] =0xff; //Version Send_buf[2] =0x06; //die Anzahl der Bytes des Befehls ohne Startbyte und Endbyte Send_buf[3] =Befehl; // Send_buf[4] =0x00;//0x00 =keine Rückmeldung, 0x01 =Rückmeldung Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //Daten Send_buf[7] =0xef; //Endbyte for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]); } }  

In der Setup-Funktion müssen wir das richtige Gerät für TF auswählen und ihm Zeit zum Einrichten geben (asynchrone Prozessmagie):

void setup() { mySerial.begin(9600); // Starten Sie unsere serielle Kommunikation für unseren seriellen Monitor! delay(500);//Warten Chip-Initialisierung ist abgeschlossen sendCommand(CMD_SEL_DEV, DEV_TF);//Wählen Sie die TF-Kartenverzögerung(200);//Warten Sie auf 200ms }  

In der Schleife habe ich einfach den Song mit der Bezeichnung 001 abgespielt:

void loop() { sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01); // den ersten Song mit Volume 15 Class Delay (1000000) abspielen; // das Programm sendet die Play-Option alle 100 Sekunden an den Catalex-Chip }  

So laden Sie Songs auf die SD-Karte hoch:

Wie sie im Datenblatt mit einem wirklich schlechten Englisch sagen:

Der MP3-Chip liest die .mp3 oder .wav alphabetisch indiziert, also wenn wir Ordner mit den Namen 01, 02 erstellen. Und Lieder mit dem Namen 001xxxxx.mp3 , 002xxxx.mp3 . Wir können sicher sein, welchen Song/Ordner wir verwenden.

Hier haben Sie eine kostenlose Soundbibliothek.

GLÜCKLICHES HACKEN!

EXTRA:
gleicher Code, aber mit Hardware-Seriell (ich musste für mein STM32-Board)

Code

  • TEST das Gerät
TEST das GerätArduino
Initialisieren und spielen Sie einen Song mit Volume 30
//code neu arrangiert von Javier Muñoz Serielles MP3-Player-Modul #define ARDUINO_TX 6//Verbindung zum RX des ModulsSoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//Initieren Sie das serielle Protokoll, teilen Sie myserial mit, welche Pins TX und RX sind /////////// //////////////////////////////////////////////// /////////////////////////alle im Datenblatt benötigten Befehle (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//Der MP3-Player versteht Befehle in einer 8 int Zeichenfolge //0X7E FF 06 command 00 00 00 EF;(if command =01 next song order) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATEN SIND ERFORDERLICH (Anzahl der Songs)#define VOLUME_UP_ONE 0X04#define VOLUME_DOWN_ONE 0X05#define CMD_SET_VOLUME 0X06//DATEN ERFORDERLICH (Anzahl der Volumes von 0 bis 30(0x1E)_ .X17#Define CM D_PLAY_WITHVOLUME 0X22 //Daten werden benötigt 0x7E 06 22 00 xx yy EF;(xx Lautstärke)(yy Nummer des Songs)#define CMD_SEL_DEV 0X09 //SPEICHERGERÄT AUSWÄHLEN, DATEN SIND ERFORDERLICH #define DEV_TF 0X02 //HALLO,IM DATEN ERFORDERLICH #define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0B#define CMD_RESET 0X0C//CHIP RESET#define CMD_PLAY 0X0D //WIEDERGABE FORTSETZEN#define CMD_PAUSE 0X0E //WIEDERGABE IST PAUSED#define CMD_PLAY_X;(spielen Sie den Song mit dem Verzeichnis \01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17// Daten werden benötigt 0x7E 06 17 00 01 XX EF;(spielen Sie den 01 Ordner)(Wert xx ist uns egal)#define SET_CYCLEPLAY 0X19//Daten werden benötigt 00 start; 01 close#define SET_DAC 0X17//Daten werden benötigt 00 start DAC OUTPUT;01 DAC keine Ausgabe ///////////////////////////// //////////////////////////////////////////////// ////void setup () { Serial.begin (9600); // Starten Sie unsere seriellen Coms für den seriellen Monitor in unserem pcmySerial.begin (9600); // Starten Sie unsere Serial Coms für DAS MP3delay (500); // Warten Sie Chip-Initialisierung ist abgeschlossen sendCommand(CMD_SEL_DEV, DEV_TF); // TF-Kartenverzögerung auswählen (200); // 200 ms warten} Schleife löschen () {sendCommand (CMD_PLAY_WITHVOLUME, 0X0F01); // den ersten Song mit Lautstärke 15 Classdelay abspielen (1000000); // das Programm sendet die Wiedergabeoption alle 100 Sekunden an den Catalex-Chip}void sendCommand (int8_t command, int16_t dat) { delay(20); Send_buf[0] =0x7e; //Startbyte Send_buf[1] =0xff; //Version Send_buf[2] =0x06; //die Anzahl der Bytes des Befehls ohne Startbyte und Endbyte Send_buf[3] =Befehl; // Send_buf[4] =0x00;//0x00 =keine Rückmeldung, 0x01 =Rückmeldung Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //Daten Send_buf[7] =0xef; // Endbyte für (uint8_t i=0; i<8; i++) // {mySerial.write (Send_buf[i]); // Bit an serielles mp3 senden Serial.print (Send_buf[i],HEX);/ /Bit an seriellen Monitor im PC senden} Serial.println();}

Schaltpläne

Auf dem Datenblatt können wir sehen, dass die Stromversorgung von 3,2 bis zu 5 V variieren kann
mit einem Verbrauch von 200mA

Herstellungsprozess

  1. Klavierspieler
  2. Kleben Sie diese Wartungslieder auf Ihren MP3-Player
  3. Squid Games Doll-Build mit Arduino UNO
  4. Arduino Spybot
  5. FlickMote
  6. Selbstgemachter Fernseher B-Gone
  7. Hauptuhr
  8. Finde mich
  9. Arduino-Power
  10. Audio in Arduino abspielen