409浏览
查看: 409|回复: 0

[项目] 【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3

[复制链接]
本例实验采用Mini MP3 Player播放器模块
是一款小巧且价格低廉的MP3模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为UNO或者是任何有串口的单片机的一个模块。模块本身完美的集成了MP3、WAV、WMA的硬解码。同时软件支持TF卡驱动,支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图2

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图3
​​​
模块管脚图
管脚号        管脚名称        功能描述        备注
1        BUSY        播放时输出高电平,停止为低        忙信号
2        RX        UART异步串口数据输入        3.3V的TTL电平
3        TX        UART异步串口数据输出        3.3V的TTL电平
4        DACR        DAC右声道输出        可外接功放、耳机
5        DACL        DAC左声道输出        可外接功放、耳机
6        SPK1        外接单声道喇叭        接3W/4Ω或2W/8Ω无源喇叭
7        SPK2        外接单声道喇叭        接3W/4Ω或2W/8Ω无源喇叭
8        VCC        电源正极        3.6-5V
9        IO5        触发输入口5        接地触发
10        IO4        触发输入口4        接地触发
11        IO3        触发输入口3        接地触发
12        IO2        触发输入口2        接地触发
13        IO1        触发输入口1        接地触发
14        GND        电源负极        系统地
15        DP        USB数据线        读U盘或用USB数据线连接电脑更换TF卡内容
16        DM        USB数据线

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图4

串口模式
模块支持异步串口通讯模式,通过串口接受控制命令

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图1

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图5

【花雕动手做】实验七十六:语音控制SD卡音乐DFPlayer模块播放MP3
实验开源代码

  1. #define ASC2_12
  2. #define ST7735_CS_PIN 9
  3. #define ST7735_CS_GPIO_PIN gpio_pin_1
  4. #define ST7735_DC_PIN 1
  5. #define ST7735_DC_GPIO_PIN gpio_pin_1
  6. #define ST7735_RST_PIN 25
  7. #define ST7735_RST_GPIO_PIN gpio_pin_1
  8. #define ST7735_SCK_PIN 3
  9. #define ST7735_SCK_GPIO_PIN gpio_pin_3
  10. #define ST7735_MOSI_PIN 2
  11. #define ST7735_MOSI_GPIO_PIN gpio_pin_2
  12. #define ASC2_32
  13. #define ST7735S_RGB_GBR_ORDER   0
  14. #include "asr.h"
  15. extern "C"{ void * __dso_handle = 0 ;}
  16. #include "setup.h"
  17. #include "myLib/asr_st7735.h"
  18. #include "myLib/asr_event.h"
  19. #include "myLib/asr_mp3.h"
  20. uint32_t snid;
  21. unsigned char i;
  22. void hardware_init();
  23. SPITFT spi_tft(128, 160);
  24. //{ID:250,keyword:"命令词",ASR:"最大音量",ASRTO:"音量调整到最大"}
  25. //{ID:251,keyword:"命令词",ASR:"中等音量",ASRTO:"音量调整到中等"}
  26. //{ID:252,keyword:"命令词",ASR:"最小音量",ASRTO:"音量调整到最小"}
  27. void ASR_CODE()
  28. {
  29.   //{ID:500,keyword:"命令词",ASR:"播放歌曲",ASRTO:"好的,播放了"}
  30.   if(snid == 500){
  31.     spi_tft.clear((0xF800));
  32.     spi_tft.set_text_color((0x07FF),(0xF800));
  33.     spi_tft.set_cursor(0,66);
  34.     spi_tft.draw_hanzi_32("开始播放");
  35.     for (i = 0; i < 8; i = i + 1) {
  36.      Serial.write(MP3_wie_cmd(i,0x0D,0,0));
  37.     }
  38.   }
  39.   //{ID:501,keyword:"命令词",ASR:"下一首",ASRTO:"好的,下一首"}
  40.   if(snid == 501){
  41.     spi_tft.clear((0x07E0));
  42.     spi_tft.set_text_color((0x001F),(0x07E0));
  43.     spi_tft.set_cursor(0,66);
  44.     spi_tft.draw_hanzi_32("下一首歌");
  45.     for (i = 0; i < 8; i = i + 1) {
  46.      Serial.write(MP3_wie_cmd(i,0x01,0,0));
  47.     }
  48.   }
  49.   //{ID:502,keyword:"命令词",ASR:"停止播放",ASRTO:"好的,停止了"}
  50.   if(snid == 502){
  51.     spi_tft.clear((0x001F));
  52.     spi_tft.set_text_color((0xF800),(0x001F));
  53.     spi_tft.set_cursor(0,66);
  54.     spi_tft.draw_hanzi_32("播放停止");
  55.     for (i = 0; i < 8; i = i + 1) {
  56.      Serial.write(MP3_wie_cmd(i,0x16,0,0));
  57.     }
  58.   }
  59.   //{ID:503,keyword:"唤醒词",ASR:"智能管家",ASRTO:"我在"}
  60.   if(snid == 503){
  61.     digital_write((21),1);
  62.     spi_tft.clear((0x8FFF));
  63.     spi_tft.set_text_color((0x001F),(0x8FFF));
  64.     spi_tft.set_cursor(0,60);
  65.     spi_tft.draw_hanzi_32("歌曲仓库");
  66.   }
  67.   //{ID:504,keyword:"命令词",ASR:"不错不错",ASRTO:"谢谢鼓励,继续唱歌"}
  68.   if(snid == 504){
  69.     digital_write((21),1);
  70.     spi_tft.clear((0x001F));
  71.     spi_tft.set_text_color((0x8FFF),(0x001F));
  72.     spi_tft.set_cursor(30,66);
  73.     spi_tft.draw_hanzi_32("谢谢");
  74.   }
  75. }
  76. void hardware_init(){
  77.   spi_tft.init();
  78.   spi_tft.set_direction(2);
  79.   spi_tft.set_text_wrap(true);
  80.   spi_tft.set_text_size(32);
  81.   spi_tft.set_bg_mode(1);
  82.   vTaskDelete(NULL);
  83. }
  84. void setup()
  85. {
  86.     Serial.begin(9600);     setPinFun(13,SECOND_FUNCTION);   setPinFun(14,SECOND_FUNCTION);
  87.   //{speak:小蝶-清新女声,vol:20,speed:10,platform:haohaodada,version:V3}
  88.   //{playid:10001,voice:欢迎使用人工智能AI语音助手,用智能管家唤醒我}
  89.   //{playid:10002,voice:我退下了}
  90.   digital_write((4),1);
  91.   xTaskCreate(hardware_init,"hardware_init",256,NULL,100,NULL);
  92. }
复制代码

生成模型与编译烧录

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图6

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图7

实验记录视频

【【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3】 https://www.bilibili.com/video/BV1cx4y1y7Ws/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987



实验场景图

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图8

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图9

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图10

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图11

【花雕动手做】ASRPRO语音识别(71)---DFPlayer 播放 MP3图12


10 (1).jpg
10 (2).jpg
10 (3).jpg
10 (4).jpg
10 (5).jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail