Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Mp3-speler Catalex

Componenten en benodigdheden

Arduino UNO
× 1
Seriële MP3-speler van catalex
× 1
Leuke funkmuziek
× 1

Apps en online services

Arduino IDE

Over dit project

SERILE MP3-SPELER V1.0 van CATALEX gebruiken:

  • Download eerst de bibliotheken zoals gewoonlijk:
#include   
  • Nu kiezen we welke Arduino-pinnen op de mp3-speler worden aangesloten en initialiseren we het seriële protocol.
#define ARDUINO_RX 5//moet verbinding maken met TX van de seriële MP3-spelermodule #define ARDUINO_TX 6//verbinden met RX van de module SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//init het seriële protocol, vertel naar myserial welke pinnen TX en RX zijn  
  • Hier heb ik zojuist vertaald naar #define de dingen uit de datasheet:
//////////////////////////////////////////// //////////////////////////////////////// //alle commando's die nodig zijn in de datasheet( http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf[8] ={0};//De MP3-speler begrijpt orders in een 8 int string //0X7E FF 06 commando 00 00 00 EF; (als commando =01 volgende nummervolgorde) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATA IS VEREIST (nummer van nummer) #define VOLUME_UP_ONE 0X04 #define VOLUME_DOWN_ONE 0X05_QUINUME IS 0X05_VOLUME IS 0X05 van volume van 0 tot 30(0x1E)) #define SET_DAC 0X17 #define CMD_PLAY_WITHVOLUME 0X22 //data is nodig 0x7E 06 22 00 xx yy EF;(xx volume)(yy aantal nummers) #define CMD_SEL_DEV 0X09 //SELECT STORAGE APPARAAT, GEGEVENS IS VEREIST #define DEV_TF 0X02 //HALLO,IM DE GEGEVENS VEREIST #define SLEEP_MODE_START 0X0A #define SLEEP_MODE_WAKEUP 0X0B #define CMD_RESET 0X0C//CHIP RESET #define CMD_PLAY 0X0D AFSPELEN IS GEPAUZEERD #define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NODIG, 0x7E 06 0F 00 01 02 EF;(speel het nummer af met de directory \01\002xxxxxx.mp3 #define STOP_PLAY 0X16 #define PLAY_FOLDER 0X17// gegevens zijn nodig 0x7E 06 17 00 01 XX EF;(speel de 01 map)(waarde xx maakt ons niet uit) #define SET_CYCLEPLAY 0X19//data is nodig 00 start; 01 close #define SET_DAC 0X17//data is nodig 00 start DAC OUTPUT;01 DAC geen uitgang ////////////////////////////// ////////////////////////////////////////////////// ////  
  • De MP3-chip is niet bestand tegen bestellingen van int array[8] met dit formaat
0x7E FF aa bb 00 xx yy EF  

Waar:

  • de eerste en de laatste int staan ​​vast met 0x7E en 0xEF waarden
  • aa is het versienummer, typ gewoon 0x06;
  • bb is het eigenlijke besturingscommando vermeld in het vorige punt
  • xx is eerste b int van gegevens
  • jj is de tweede int van gegevens

En dit is de eigenlijke functie die de array bouwt. We hoeven alleen maar een van de #defined . te kiezen commando's en voer de waarde van de gegevens in.

void sendCommand(int8_t commando, int16_t dat) { delay(20); Send_buf[0] =0x7e; //startbyte Send_buf [1] =0xff; //versie Send_buf [2] =0x06; // het aantal bytes van de opdracht zonder startbyte en eindbyte Send_buf [3] =opdracht; // Send_buf[4] =0x00;//0x00 =geen feedback, 0x01 =feedback Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //datal Send_buf [7] =0xef; //eindbyte voor (uint8_t i=0; i<8; i++)// { mySerial.write (Send_buf [i]); } }  

In de setup-functie moeten we het juiste apparaat voor TF selecteren en het tijd geven om te settelen (asynchrone procesmagie):

void setup() { mySerial.begin(9600);//Start onze seriële communicatie voor onze seriële monitor! vertraging (500);//Wacht chipinitialisatie is voltooid sendCommand (CMD_SEL_DEV, DEV_TF);//selecteer de TF-kaartvertraging (200);// wacht 200 ms }  

In de loop speelde ik eenvoudig het nummer met het label 001:

void loop() { sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);//speel het eerste nummer af met volume 15 class delay (1000000);//het programma stuurt de afspeeloptie elke 100 seconden naar de catalex-chip}  

Hoe nummers naar de SD-kaart te uploaden:

Zoals ze in de datasheet zeggen met heel slecht Engels:

De mp3-chip leest de .mp3 of .wav alfabetisch geïndexeerd, dus als we mappen maken met de namen 01, 02. En liedjes met de naam 001xxxxx.mp3 , 002xxxx.mp3 . We kunnen zeker zijn van het nummer/de map die we gebruiken.

Hier heb je een gratis geluidsbibliotheek.

GELUKKIG HACKEN!

EXTRA:
dezelfde code maar met seriële hardware (ik moest voor mijn STM32-bord)

Code

  • TEST het apparaat
TEST het apparaatArduino
initialice en speel een nummer af met volume 30
//code herschikt door Javier Muñoz 10/11/2016 vraag het me op [email protected]#include #define ARDUINO_RX 5//should connect to TX of the Seriële MP3-spelermodule#define ARDUINO_TX 6//verbind met RX van de moduleSoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//start het seriële protocol, vertel myserial welke pinnen TX en RX zijn/////////// ////////////////////////////////////////////////// ///////////////////////// alle commando's die nodig zijn in de datasheet (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//De MP3-speler begrijpt orders in een 8 int string //0X7E FF 06 commando 00 00 00 EF;(if command =01 volgende nummervolgorde) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 //DATA IS VEREIST (aantal nummers)#define VOLUME_UP_ONE 0X04#define VOLUME_DOWN_ONE 0X05#define CMD_SET_VOLUME 0X06//DATA IS VEREIST (aantal volumes van 0 tot 30#define 0X17#) CM D_PLAY_WITHVOLUME 0X22 //data is nodig 0x7E 06 22 00 xx yy EF;(xx volume)(yy number of song)#define CMD_SEL_DEV 0X09 //SELECT STORAGE DEVICE, DATA IS REQUIRED #define DEV_TF 0X02 //HELLO,IM THE DATA REQUIRED #define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0B#define CMD_RESET 0X0C//CHIP RESET#define CMD_PLAY 0X0D //RESUME AFSPELEN#define CMD_PAUSE 0X0E // NAAR AFSPELEN IS GEPAUZEERD 02PLAY0X 0DEfine CMDOL;(speel het nummer af met de directory \01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17// data is nodig 0x7E 06 17 00 01 XX EF;(speel de map 01)(value xx maakt ons niet uit)#define SET_CYCLEPLAY 0X19//data is nodig 00 start; 01 close#define SET_DAC 0X17//data is nodig 00 start DAC OUTPUT;01 DAC geen uitgang////////////////////////////// ////////////////////////////////////////////////// ////void setup(){Serial.begin(9600);//Start onze seriële communicatie voor seriële monitor in onze pcmySerial.begin(9600);//Start onze seriële communicatie voor DE MP3delay(500);//Wacht chipinitialisatie is voltooid sendCommand (CMD_SEL_DEV, DEV_TF);//selecteer de TF-kaartvertraging (200);//wacht 200ms}void loop(){sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);// speel het eerste nummer af met volume 15 classdelay (1000000);//het programma stuurt de afspeeloptie elke 100 seconden naar de catalex-chip}void sendCommand(int8_t command, int16_t dat){ delay(20); Send_buf[0] =0x7e; //startbyte Send_buf [1] =0xff; //versie Send_buf [2] =0x06; // het aantal bytes van de opdracht zonder startbyte en eindbyte Send_buf [3] =opdracht; // Send_buf[4] =0x00;//0x00 =geen feedback, 0x01 =feedback Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //datal Send_buf [7] =0xef; // end byte for (uint8_t i=0; i<8; i++)// { mySerial.write (Send_buf [i]);// stuur bit naar seriële mp3 Serial.print (Send_buf [i],HEX);/ /send bit naar seriële monitor in pc } Serial.println();}

Schema's

Op de datasheet kunnen we zien dat de voeding kan variëren van 3,2 tot 5v
met een verbruik van 200mA

Productieproces

  1. Spelpiano
  2. Plak deze onderhoudsnummers op je mp3-speler
  3. Squid Games Doll gebouwd met Arduino UNO
  4. Arduino Spybot
  5. FlickMote
  6. Zelfgemaakte tv B-Gone
  7. Hoofdklok
  8. Vind mij
  9. Arduino Power
  10. Audio afspelen in Arduino
  11. Arduino - webgebaseerde mp3-speler