NodeMCU-32S-内部DAC音频输出测试
前言
一直想玩玩ESP32的蓝牙音频功能,手上面有一个NodeMCU-32S,还没有办法直接测试音频。最近在逛CDSN时发现一个将NodeMCU-32S作为音乐电台的小项目,点进去看了下,学到了一些内容,下面记录一下。
其实在这里我学到的仅仅是将音频通过ESP32内部的DAC输出,这样刚好只用一个NodeMCU-32S和一个小喇叭就能够测试啦。
注意:本次测试仅仅用于DAC输出验证,无它
硬件说明
ESP32内置的DAC对应的外部引脚是GPIO25和GPIO26,相应的在原理图上的位置如下图所示。
为了能够进行快速测试验证,笔者就直接将一个4欧姆的喇叭接到了ESP32的DAC输出引脚上,其中喇叭一个引脚接GPIO25,另外一个引脚接地。
软件编译
在 ESP-IDF 中已经为我们提供了一个蓝牙音频的测试demo,项目名字是 a2dp_sink ,不过这个项目默认的音频输出是 External I2S Codec,我们在编译之前,在 make menuconfig 中要将其修改为 Internal DAC。如下所示。
软件编译完成之后,执行 make flash monitor 进行测试。
测试
软件运行起来之后,就可以使用手机蓝牙连接ESP32了,在手机蓝牙中搜索,会找到一个 ESP_SPEAKER 名称的蓝牙,配对之后,打开音乐播放器,放一首歌曲。就能在喇叭中听到声音了,然后再看串口的日志输出,能够看到音频数据包的序号,如下。
W (310372) BT_APPL: new conn_srvc id:19, app_id:0
I (310382) BT_AV: A2DP connection state: Connected, [38:a5:ed:94:5a:36]
I (310732) BT_LOG: bta_av_link_role_ok hndl:x41 role:1 conn_audio:x1 bits:1 features:x824b
I (310742) BT_AV: A2DP audio state: Started
E (310782) BT_APPL: bta_dm_pm_btm_status hci_status=26
I (310782) BT_AV: AVRC conn_state evt: state 1, [38:a5:ed:94:5a:36]
I (310782) BT_AV: AVRC remote features 4b
I (310822) BT_AV: A2DP audio state: Suspended
I (310842) BT_AV: AVRC metadata rsp: attribute id 0x1, 借我
I (310842) BT_AV: AVRC metadata rsp: attribute id 0x2, 谢春花
I (310852) BT_AV: AVRC metadata rsp: attribute id 0x4, 算云烟
I (310852) BT_AV: AVRC metadata rsp: attribute id 0x20,
I (311142) BT_LOG: bta_av_link_role_ok hndl:x41 role:1 conn_audio:x1 bits:1 features:x824b
E (311142) BT_APPL: bta_dm_pm_btm_status hci_status=31
I (311142) BT_AV: A2DP audio state: Started
I (312782) BT_AV: Audio packet count 100
I (314232) BT_AV: Audio packet count 200
I (315692) BT_AV: Audio packet count 300
I (317152) BT_AV: Audio packet count 400
I (318602) BT_AV: Audio packet count 500
I (320062) BT_AV: Audio packet count 600
I (321572) BT_AV: Audio packet count 700
I (323022) BT_AV: Audio packet count 800
额外补充一点,这个内部DAC是8位的,而且我这次测试使用的是杜邦线 + 排针,然后接到了一个4Ω的喇叭上,所以输出的音频基本是没办法听的,噪音非常严重。该测试仅仅作为一次内部DAC音频的调试,如果要实现蓝牙音频输出,还是推荐外接音频输出芯片。而不是直接使用内部DAC… :)
ESP32-DAC参考链接
用你的 ESP32 做一个音乐电台
ESP32 学习笔记(五)DAC - Digital To Analog Converter