esp32-s31音频方案+拨号+小画廊

🔥 用 ESP32 手搓了一个全功能蓝牙音箱!封面、歌词、频谱全都有



乐鑫 ESP32-S31 Korvo1 开发板写了一套完整的蓝牙音乐播放器固件。手机蓝牙连上就能播音乐,800×480 触摸大屏上实时展示专辑封面、滚动歌词和频谱动画,效果贼炫酷。已经全部开源到 GitHub 了,固件也编译好了可以直接烧录。

47bb9c97f90de7837f05654f95623176.jpg3859b970bb62c682d746196f81c7db2c.jpg59531a8c1971d29e199f989c3bfb8aff.jpg799717921d1118e733bc0d1b9fe3b4a3.jpgf7f47ae04dfae59408692bb1ce2695d9.jpg

🎧 功能一览

蓝牙音频

  • 蓝牙 A2DP Sink 协议,手机/电脑的音频流直接推过来播放
  • AVRCP 远程控制,支持播放/暂停、上一曲/下一曲、音量调节
  • 自动获取歌名、艺术家、专辑名、流派信息
  • 接收并实时显示专辑封面(JPEG 格式)

图形界面

  • 圆形裁剪的专辑封面 + 持续旋转动画,有唱片机的感觉
  • 滚动歌词同步显示,最多 5 行,当前句自动高亮
  • 16 段彩虹色 FFT 实时频谱柱状图,25fps 流畅刷新
  • GIF 表情包画廊,内置 14 张动图,左右滑动翻看
  • 完整拨号器界面,数字键盘 + 接听/挂断/拨号按钮
  • 右侧浮动音量条,自动隐藏不挡视线

其他

  • HFP 蓝牙免提通话,来电自动显示号码
  • 左右滑动手势切换三个页面:画廊 → 音乐 → 拨号
  • GT1151 电容触摸,操控灵敏丝滑

🛠️ 硬件配置

  • 主控芯片:ESP32-S31(RISC-V 双核)
  • 开发板:ESP32-S31 Korvo1
  • 屏幕:800×480 RGB 接口 IPS 触摸屏
  • 音频 DAC:ES8311 编解码器
  • 内存:16MB Flash + 8MB PSRAM
  • 接口:I2S(音频)+ I2C(触摸)+ RGB(显示)

💻 软件技术栈

  • ESP-IDF v6.2+ — 乐鑫官方开发框架
  • LVGL v9.2.2 — 开源嵌入式图形库,驱动整个 UI
  • ESP-GMF — 乐鑫多媒体框架,管理音频管线
  • BlueDroid — 蓝牙 Classic 协议栈(A2DP + AVRCP + HFP)
  • esp_jpeg — JPEG 硬件解码,封面秒加载
  • Noto Sans SC — Google 思源黑体,中文完美渲染
  • FreeRTOS — 实时操作系统,多任务调度

🧠 开发中踩过的坑

  1. 封面切换延迟 — 歌切了封面还是上一首的 → 独立低优先级线程异步解码 JPEG,UI 线程只负责显示
  2. 中文字体全是方块 — LVGL 默认不支持大 Unicode 范围 → 启用 LV_FONT_FMT_TXT_LARGE,嵌入完整中文字体
  3. 封面一会有一会没 — 异步队列消息竞态 → 在 LVGL 锁内同步隐藏旧封面,消除闪烁
  4. 固件编译报错 — ESP32-S31 用 RISC-V 工具链,跟普通 ESP32 的 Xtensa 不一样 → 配了好久的 toolchain 路径

📂 开源地址

GitHub:https://github.com/han0519/esp32-xiaofeng

仓库里有什么:

  • ✅ 完整项目源码,clone 下来配好环境就能编译
  • ✅ 超级详细的 README,包含架构图、数据流图、配置说明、调试命令、常见问题
  • ✅ Release 页面有编译好的固件(bootloader + 分区表 + 应用固件,共 3 个 bin 文件),直接 esptool 烧录就能跑
  • ✅ 所有依赖组件均已内置在 components/ 目录,不需要额外下载

想复刻的照着 README 一步步来就行,写得已经保姆级了 😎

评论 (0)

评论

登录后即可评论

暂无数据
暂无数据