极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22374|回复: 7

Arduino连接WT5001模块播放MP3

[复制链接]
发表于 2013-3-17 01:04:57 | 显示全部楼层 |阅读模式
本帖最后由 A布 于 2013-3-17 11:42 编辑

网上购买了一个WT5001播放MP3的模块,价格30元,能插手机用的那种SD卡播放MP3,在论坛找了下没有相关的教程,无奈只有自己写代码了。苦逼的我第一次玩Arduino,还没学会走就先跑了。


先看看播放效果:



这也是第一次发帖,不会画那些图纸,就简单说下。arduino(小熊板)连接一个红外接收头,使用UART连接WT5001模块。

代码也是东拼西凑的,我自己都不知道什么意思,见笑了,大家将就看看,也希望大神给予指导。坛子里好像没有人使用这个模块,要是有人用的话希望可以一起交流,我本是打算还买一个ASR语音识别模块,由语音控制播放MP3的,但是语音识别模块也是没有ARDUINO的示例代码,并且是SPI接口的,看上去很复杂,没敢下手。

MP3播放模块代码如下:
  1. #include <IRremote.h>  // 使用IRRemote函数库

  2. const int irReceiverPin = 2;  // 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
  3. IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
  4. decode_results results;    // 定义results变量为红外结果存放位置

  5. void setup()
  6. {
  7.   Serial.begin(9600);   // 开启串口,波特率为9600
  8.   irrecv.enableIRIn();   // 启动红外解码
  9. }

  10. int mp3_send(int code[], int length)
  11. {
  12.   Serial.write(0x7e);
  13.   for (int i = 0; i < length; i++)
  14.   {
  15.     Serial.write(code[i]);
  16.   }
  17.   Serial.write(0x7e);
  18.   
  19.   //返回操作码
  20.   if (Serial.available())
  21.   {
  22.     return int(Serial.read());
  23.   }
  24.   
  25.   return 0;
  26. }

  27. int mp3_read()
  28. {
  29.   int data = 0;
  30.   while (Serial.available() > 0)
  31.   {
  32.     data += Serial.read();
  33.     delay(2);
  34.   }  
  35.   return data;
  36. }

  37. void loop()
  38. {
  39.   if (irrecv.decode(&results))
  40.   {
  41.     long value = results.value;
  42.     Serial.println(value);
  43.     if (value == 16720605)
  44.     {
  45.         //上一曲
  46.         int code[] = {0x02, 0xa6};
  47.         mp3_send(code, 2);
  48.     }
  49.     else if (value == 16712445)
  50.     {
  51.         //下一曲
  52.         int code[] = {0x02, 0xa5};
  53.         mp3_send(code, 2);
  54.     }
  55.     else if (value == 16761405)
  56.     {
  57.         //暂停
  58.         int code[] = {0x02, 0xa3};
  59.         mp3_send(code, 2);
  60.     }
  61.     else if (value == 16754775)
  62.     {
  63.       //音量加
  64.       int code[] = {0x02, 0xc4};
  65.       mp3_send(code, 2);
  66.       int value = mp3_read();
  67.       if (value > 0 && value < 31)
  68.       {
  69.         value+=5;
  70.         if (value >= 31) value = 31;
  71.         int val[] = {0x03, 0xa7, value};
  72.         mp3_send(val, 3);
  73.       }
  74.     }
  75.     else if (value == 16769055)
  76.     {
  77.       //音量减
  78.       int code[] = {0x02, 0xc4};
  79.       mp3_send(code, 2);
  80.       int value = mp3_read();
  81.       if (value > 0)
  82.       {
  83.         value-=5;
  84.         if (value <= 0) value = 0;
  85.         int val[] = {0x03, 0xa7, value};
  86.         mp3_send(val, 3);
  87.       }
  88.     }
  89.     else if (value == 16736925)
  90.     {
  91.         //循环播放
  92.         int code[] = {0x03, 0xa9, 0x02};
  93.         mp3_send(code, 3);
  94.     }
  95.     else
  96.     {
  97.       int code[2] = {0x02, 0xc1};
  98.       mp3_send(code, 2);
  99.       int value = mp3_read();
  100.       Serial.println(value, DEC);
  101.     }
  102.     /**/
  103.    
  104.     irrecv.resume();    // 继续等待接收下一组信号
  105.   }
  106.   delay(600); //延时600毫秒,做一个简单的消抖
  107. }
复制代码

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2013-3-17 10:40:53 | 显示全部楼层
等视频...



                     
回复 支持 反对

使用道具 举报

发表于 2013-3-17 15:18:27 | 显示全部楼层
不错哈..可以你可以写一下教程吗??具体的制作步骤啊..这个没有流程啊..我想学
回复 支持 反对

使用道具 举报

发表于 2013-3-17 17:26:41 | 显示全部楼层
独出来,就是要配一个微控器跟语音芯片一起工作,这样组成一个语音模块,模块可以使用标准总线接口(常见UART接口或者SPI接口)与外围相接,传输正确的识别信息。这样解决了语音芯片工作时独占CPU的瓶颈。复杂了就不是arduino了,那就是AVR了。
回复 支持 反对

使用道具 举报

发表于 2013-3-17 17:27:25 | 显示全部楼层
看了你的视频,不错啊。我觉得语音识别那一部分最好单独出来,就是要配一个微控器跟语音芯片一起工作,这样组成一个语音模块,模块可以使用标准总线接口(常见UART接口或者SPI接口)与外围相接,传输正确的识别信息。这样解决了语音芯片工作时独占CPU的瓶颈。复杂了就不是arduino了,那就是AVR了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-3-17 17:41:34 | 显示全部楼层
语音识别芯片我看了一个LD3320还不错,就是没有示例代码,提供的有开发手册,那也不是我这样入门玩家能写代码的,SPI有些难,还有哪什么时钟频率、上升沿、下降沿、数据有效==的,看着太复杂了。
回复 支持 反对

使用道具 举报

发表于 2013-5-10 12:33:35 | 显示全部楼层
A布 发表于 2013-3-17 17:41
语音识别芯片我看了一个LD3320还不错,就是没有示例代码,提供的有开发手册,那也不是我这样入门玩家能写代 ...

LD3320貌似只能用3.3V的单片机啊
回复 支持 反对

使用道具 举报

发表于 2013-8-14 17:14:17 | 显示全部楼层
请问楼主,ardunio通过UART接到WT5001的什么接口啊,WT5001在哪家买的?谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 01:06 , Processed in 0.042679 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表