亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino Mp3 播放器 Catalex

组件和用品

Arduino UNO
× 1
catalex 的串行 MP3 播放器
× 1
一些不错的放克音乐
× 1

应用和在线服务

Arduino IDE

关于这个项目

如何使用 CATALEX 的 SERIAL MP3 PLAYER V1.0:

  • 首先,像往常一样下载库:
#include   
  • 现在我们选择将哪些 Arduino 引脚连接到 mp3 播放器并初始化串行协议。
#define ARDUINO_RX 5//应该连接到串口MP3播放器模块的TX #define ARDUINO_TX 6//连接到模块的RX SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//初始化串口协议,告诉到 myserial 的引脚是 TX 和 RX  
  • 这里我只是翻译成#define 数据表中的内容:
//////////////////////////////////////////// ////////////////////////////////////// //数据表中需要的所有命令( http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf[8] ={0};//MP3 播放器解析 8 个 int 字符串中的命令 //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 //DATA IS REQUIRED (歌曲数) #define VOLUME_UP_ONE 0X04 #define VOLUME_DOWN_ONE 0X05 #6VOLU0RED 0X00RED 0X05 REQUIMD音量从 0 到 30(0x1E)) #define SET_DAC 0X17 #define CMD_PLAY_WITHVOLUME 0X22 //需要数据 0x7E 06 22 00 xx yy EF;(xx volume)(yy 歌曲数) #define CMD_SEL_DEV 0X09设备,需要数据#define DEV_TF 0X02 //你好,我需要数据#define SLEEP_MODE_START 0X0A #define SLEEP_MODE_WAKEUP 0X0B #define CMD_RESET 0X0C//芯片重置#define CMD_PLAY 0X0DYBRES0E //define CMD_PLAY 0X0DYBRESE PLAYBACK IS PAUSED #define CMD_PLAY_WITHFOLDER 0X0F//DATA IS NEEDED, 0x7E 06 0F 00 01 02 EF;(播放目录\01\002xxxxxx.mp3的歌曲#define STOP_PLAY 0X16 #define PLAY_16FOLDER7data is required//x7E 06 0F 00 01 02 EF 00 01 XX EF;(播放01文件夹)(值xx我们不关心)#define SET_CYCLEPLAY 0X19//需要数据00开始; 01 close #define SET_DAC 0X17//需要数据 00 start DAC OUTPUT;01 DAC无输出//////////////////////////// ////////////////////////////////////////////////// ///  
  • MP3 芯片使用这种格式解析由 int array[8] 组成的命令
0x7E FF aa bb 00 xx yy EF  

哪里:

  • 第一个和最后一个 int 固定为 0x7E 和 0xEF 值
  • aa 是版本号,就放0x06;
  • bb 是上点列出的实际控制命令
  • xx 是第一个 b int 数据
  • yy 是数据的第二个整数

这是构建数组的实际函数。我们只需要选择 #defined 之一 命令并放入数据的值。

void sendCommand(int8_t command, int16_t dat) { delay(20);发送缓冲区[0] =0x7e; //起始字节 Send_buf[1] =0xff; //版本 Send_buf[2] =0x06; //没有起始字节和结束字节的命令的字节数 Send_buf[3] =command; // Send_buf[4] =0x00;//0x00 =无反馈,0x01 =反馈 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //datal Send_buf[7] =0xef; //结束字节 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]); } }  

在 setup 函数中,我们需要为 TF 选择合适的设备并给它时间来解决(异步过程魔术):

void setup() { mySerial.begin(9600);//为我们的串口监视器启动串口通信! delay(500);//等待芯片初始化完成 sendCommand(CMD_SEL_DEV, DEV_TF);//选择TF卡 delay(200);//等待200ms }  

在循环中,我简单地播放了标记为 001 的歌曲:

void loop() { sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);//播放第15首曲子延迟(1000000);//程序每100秒向catalex芯片发送播放选项}  

如何将歌曲上传到 SD 卡:

正如他们在数据表中用非常糟糕的英语所说:

Mp3芯片读取.mp3.wav 按字母顺序索引,因此如果我们创建名称为 01、02 的文件夹。以及名称为 001xxxxx.mp3 的歌曲 , 002xxxx.mp3 .我们可以确定我们正在使用的歌曲/文件夹。

这里有一个免费的声音库。

HAPPY HACKING!

额外:
相同的代码,但使用硬件串行(我必须为我的 STM32 板)

代码

  • 测试设备
测试设备Arduino
初始化并播放一首 30 卷
//代码重新排列由 Javier Muñoz 10/11/2016 在 [email protected]#include #define ARDUINO_RX 5//should connect to TX of the串口MP3播放器模块#define ARDUINO_TX 6//连接到模块的RXSoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);//初始化串口协议,告诉myserial的引脚是TX和RX////////// ////////////////////////////////////////////////// ///////////////////////数据表中需要的所有命令(http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf)static int8_t Send_buf[8] ={0};//MP3 播放器解析 8 个 int 字符串中的命令 //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 //需要数据(歌曲数)#define VOLUME_UP_ONE 0X04#define VOLUME_DOWN_ONE 0X05#define CMD_SET_VOLUME 0X06//需要数据(从0到30的音量)#define DAC77厘米D_PLAY_WITHVOLUME 0X22 //需要数据 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 DEVREDDATA 0X02 //HELLO RELIQU #define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0B#define CMD_RESET 0X0C//芯片复位#define CMD_PLAY 0X0D //恢复播放#define CMD_PAUSE 0X0E //播放暂停//#define CMD_HFED0E0F0XE0F0E0F0XEF0F0F0F0F0F0XEF0F0XEF0F0F0F0F0F0F0XEF0F0XEF0F0X0F0X0F0XEF0F0X0F0E0F0X0F0F00F0F0X0E0F0X0E0F0F0之间#define SLEEP_MODE_START 0X0A#define SLEEP_MODE_WAKEUP 0X0C//芯片复位#define CMD_PLAY 0X0D //恢复播放#define CMD_PAUSE 0X0;(播放目录\01\002xxxxxx.mp3#define STOP_PLAY 0X16#define PLAY_FOLDER 0X17//需要数据0x7E 06 17 00 01 XX EF;(播放01文件夹)(值xx我们不关心)#define SET_CYCLEPLAY 0X19//需要数据00开始; 01 close#define SET_DAC 0X17//需要数据 00 start DAC OUTPUT;01 DAC无输出//////////////////////////// ////////////////////////////////////////////////// ////void setup(){ Serial.begin(9600);//在我们的pcmySerial.begin(9600)中启动我们的串行监视器串行通信;//启动我们的MP3delay(500)串行通信;//等待芯片初始化完成 sendCommand(CMD_SEL_DEV, DEV_TF);//选择TF卡延迟(200);//等待200ms}void loop(){sendCommand(CMD_PLAY_WITHVOLUME, 0X0F01);//播放第15首曲子classdelay (1000000);//程序每100秒向catalex芯片发送播放选项}void sendCommand(int8_t command, int16_t dat){ delay(20);发送缓冲区[0] =0x7e; //起始字节 Send_buf[1] =0xff; //版本 Send_buf[2] =0x06; //没有起始字节和结束字节的命令的字节数 Send_buf[3] =command; // Send_buf[4] =0x00;//0x00 =无反馈,0x01 =反馈 Send_buf[5] =(int8_t)(dat>> 8);//datah Send_buf[6] =(int8_t)(dat); //datal Send_buf[7] =0xef; //结束字节 for(uint8_t i=0; i<8; i++)// { mySerial.write(Send_buf[i]);//发送位到串行 mp3 Serial.print(Send_buf[i],HEX);/ /send bit 到 pc 中的串行监视器 } Serial.println();}

示意图

在数据表上我们可以看到电源可以在 3,2 到 5v 之间变化
消耗200mA

制造工艺

  1. 弹奏钢琴
  2. 将这些维护歌曲贴在您的 MP3 播放器上
  3. Squid Games Doll 使用 Arduino UNO
  4. Arduino Spybot
  5. FlickMote
  6. 自制电视 B-Gone
  7. 主时钟
  8. 找到我
  9. Arduino Power
  10. 在 Arduino 中播放音频
  11. Arduino - 基于网络的 MP3 播放器
  12. Tech-TicTacToe