|
拆机贴可以看这个:https://zhuanlan.zhihu.com/p/39634765
ESP32支付宝盒完美爆改蓝牙音箱,支持按钮控制切歌,音量,暂停。
支付宝盒:
理论上来说,另一款低配没有屏幕的宝盒也可以改,不过我没有那个机器无法验证(复制坛友的图):
1. 首先直接上蓝牙音箱代码(基于Arduino,VSCode打开即可):
https://gitee.com/zhuhai-esp/Pla ... -Arduino-BT-Speaker
2. 然后直接得到效果如视频:
https://www.douyin.com/video/6998293318316608809
3. 看下内部结构:
再看下板子:
4. 介绍一下实现思路:
ESP32有很多开源实现蓝牙音箱的项目,我是用了这个:
https://github.com/pschatzmann/ESP32-A2DP
主要代码:
- #include "BluetoothA2DPSink.h"
- BluetoothA2DPSink a2dp_sink;
- void setup() {
- i2s_pin_config_t my_pin_config = {
- .bck_io_num = 26,
- .ws_io_num = 25,
- .data_out_num = 22,
- .data_in_num = I2S_PIN_NO_CHANGE
- };
- a2dp_sink.set_pin_config(my_pin_config);
- a2dp_sink.start("MyMusic");
- }
- void loop() {
- }
复制代码 注意:i2s_pin_config 这个结构体需要根据音频输出的实际硬件引脚来做配置,
也就是指定I2S实际输出引脚,其他的不用怎么修改
5. OTA配置
这个是题外话,因为支付宝盒下载程序不太方便,需要手动短接P0口,
所以玩Arduino的话主要使用OTA来下载程序吧:
这个也很简单:
- void setup() {
- ArduinoOTA.begin();
- }
- void loop() {
- ArduinoOTA.handle();
- }
复制代码
6. 给几个按钮赋予事件,用于调节音量,切歌等,效果在视频中有的:
- void inline setupButtonEvents() {
- // reset
- buttons[0].attachClick([] {
- payAudioDisable();
- ESP.restart();
- });
- // up
- buttons[1].attachClick([] { a2dp_sink.next(); });
- buttons[1].attachDoubleClick([] {
- if (volume < 120) {
- setVolume(volume + 10);
- }
- });
- // down
- buttons[2].attachClick([] { a2dp_sink.previous(); });
- buttons[2].attachDoubleClick([] {
- if (volume > 10) {
- setVolume(volume - 10);
- }
- });
- buttons[3].attachClick([] {
- if (isPause) {
- a2dp_sink.play();
- } else {
- a2dp_sink.pause();
- }
- isPause = !isPause;
- });
- }
复制代码
再贴一次完整代码:https://gitee.com/zhuhai-esp/PlatformIO-ESP32-PayBoxA2
这次废物又可以完美利用了
支付宝盒其他玩法可以参考这个帖子:
https://www.mydigit.cn/thread-265728-1-1.html
补充内容 (2023-9-13 13:54):
https://github.com/zhuhai-esp/PayBoxA2-ESP32-Clock |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|