乐鑫Esp32学习之旅11 入门 乐鑫esp-adf 音频框架开发,造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。(附带Demo)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xh870189248/article/details/98635976

  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。
2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。
3、 认识基本esp32的GPIO接口,开始点亮您的第一盏 LED和中断回调实现按键功能 。
4、体会esp32的强大的定时器功能, 实现定时2s闪烁一盏LED灯。
5、接触实践esp32的pwm宽度脉冲功能, 实现呼吸效果闪烁一盏LED灯。
6、smartConfig和微信airKiss在esp32的实现,一键配网轻松快捷连接路由器。
7、利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。
8、esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。
9、esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。
10、乐鑫esp32 SDK编程利用rmt驱动ws2812七彩灯,实现彩虹渐变效果。
11、入门 乐鑫esp-adf 音频框架开发,esp32造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。
12、开源一个微信公众号airkiss配网esp32以及局域网发现功能的工程,分享一个airkiss配网小工具。


在这里插入图片描述

一、前言;


    距离上篇 esp32 的文章发表有一个月了,在群里应该有人知道我付费某些工程被别人“喷到”什么样了。但事情过了有段时间了,我不管他人怎么说了,我依然不忘初心做自己的事情,写自己的笔记,也希望可以帮助其他人。

    这几周最让我关注的是 香港激进分子事件,作为中华子孙,都忘了前一百年香港是怎么被外国侵犯的,如今的自由、和平生活过得太舒服了;竟然去侮辱国徽,去霸占地铁入口阻碍交通导致一位孕妇惊吓入院,真应了网友一句话:“这种人要是在大陆,被打得认不出爹娘!” 对待为什么香港没用出动暴力解决,推荐大家看看这文章:https://mp.weixin.qq.com/s/dr7_ERFLy6Q-AE1wfNLljg

    说了这么多话,下面入正题;

    乐鑫esp-adf 音频框架已经是开源很久了,我也是一直在玩这个,周末看了看,有个蓝牙耳机的新工程开源了,而我上半年也是买了很多 esp32 语音开发板,但是都怎么更新代码,于是乎,我拿出我之前买的乐鑫开发板 esp32 Lyrat 语音开发板,调节了2个小时,终于玩出来了,很舒服,解决了我的小米8没有耳机插口问题,因为我有一个蓝牙耳机,哈哈!!

    实物图:


二、手头上的esp32语音开发板总结;


     想了想,应该买了几个第三方开发板了,

  • TTGO:https://github.com/LilyGO/TTGO-TAudio
  • 工程没多少,主要还是 蓝牙耳机功能、网页调节音量开灯功能,是驱动WM8978实现的;以及一个驱动ws2812 的 ardunio工程。
    在这里插入图片描述

     这个是我最早接触的了,是一个优秀的工程师开发的,有蓝牙音响+WEB收音机,百度语音识别等功能,虽然现在的乐鑫 adf 框架已经有了这些例子,但是已经深度封装了,想要深度,建议学习这个大神的作品;

  • 知乎专栏:https://www.zhihu.com/people/frankie.zengfu
  • whyengineer:https://github.com/whyengineer/esp32-lin

在这里插入图片描述


     最后要介绍的是乐鑫官网的,我已经买了2块了,一个是买群友的,一个买官网的,还好价格不贵,但是在国外卖的价钱是国内的2倍多;其主要设计是围绕音频方案开发的,有很多好玩的demo,比如 播放mp3文件,文字通过百度云转语音播放,duerOs等开源工程;而我后面就是玩这个官网的开发板了!

在这里插入图片描述


三、环境搭建;


     其实环境搭建很简单,大家先搭建 esp-idf 的环境,可以参考我之前的 esp8266 rtos3.0 环境,把工具链指向 esp32 的就可以了!或者去红旭的教程,可以在 linux 或者 windows 搭建环境;

     等你就绪了 esp-idf 环境步骤,入门了 “Hello world” 工程之后,还需要做以下步骤:


3.1 修改 IDF指向路径,增加 ADF路径;


     不管是 windows 还是 linux平台都要修改 IDF指向路径,增加 ADF路径,下面是我在 windows平台实现的思路;
     在工具链设置文件 esp32_toolchain.sh , 修改 IDF指向路径让它指向当前 adf 路径里面的 idf 文件夹,而增加 adf 路径,如下:

在这里插入图片描述

四、编译工程;


     把官网的 pipeline_bt_sink 工程编译,可能你会编译失败,因为需要一些配置,首先你得打开蓝牙配置使能,在 make menuconfig 配置:

在这里插入图片描述


/esp-adf/components/audio_service/bluetooth_service.c:435 (bluetooth_service_start): enable controller failed

    如果你发现你跑起来了但是没有搜索到其蓝牙耳机,也有以上报错,也许是下面不对,因为没启动蓝牙服务成功!

    这里尤其注意要在 make menuconfig 打开蓝牙设置蓝牙控制器模式,否则无法启动蓝牙服务:

      bluetooth                  
                ---->bluetooth controller
                                ---->bluetooth controller mode
                                                    ---> br/edr only 

在这里插入图片描述


五、其他;


    这个开发板很特别,需要2个 Mico USB,一个是串口用,一个专门供电的;以及需要手动进去下载模式,非手动!

    因为我玩过其他开发板,具有当前播放歌曲的详细信息,很遗憾的是,目前官网这个demo是木有的,但是我根据以往开发板经验,加一些数据进去,就可以显示当前播放歌曲的详细信息啦!

    只需要把我提供的组件 <bluetooth_service> 文件夹替换官网的文件夹即可!工程主文件不需要修改!

思路:主要是要监听蓝牙播放时候的 metadata 的改变特征事件,要主动订阅,在蓝牙事件回调 ESP_AVRC_CT_CHANGE_NOTIFY_EVT中实现对数据剖析显示即可!


  • 主要还是可以显示 中文歌曲的信息哦!
    在这里插入图片描述

另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • 玩转esp8266带你飞、加群付费QQ群,不喜的朋友勿喷勿加:434878850
  • esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
  • 关注下面微信公众号二维码回复 190807 获取本工程源码地址,干货多多,第一时间推送!

猜你喜欢

转载自blog.csdn.net/xh870189248/article/details/98635976