用透明 OLED 做一个蓝牙歌词显示及音乐控制器

2026-10-184

最近折腾了一块微雪的 0.96 寸 SSD1312 透明 OLED,128×64 分辨率。透明屏挺有意思的,就想着拿它做一个复古风格的蓝牙音乐线控,既能控制手机播放音乐,又能显示歌曲信息和实时歌词。

 

硬件部分

主要用到了下面几个模块:

  • RP2040:负责屏幕驱动、按键和界面显示
  • SSD1312 透明 OLED:显示歌曲信息和歌词
  • ANS-BT301S:负责蓝牙连接、音乐控制和歌词数据获取
  • 几个实体按键:音量调节、播放暂停、上一首和下一首

最初考虑直接用 ESP32 实现,但获取手机播放的歌曲信息和歌词没那么简单。后来找到 ANS-BT301S 模块,它支持通过串口输出歌曲信息和歌词,正好符合需求。

用透明 OLED 做一个蓝牙歌词显示及音乐控制器_image_1.webp

制作过程

首先解决的是透明 OLED 的驱动问题。这块屏幕采用 SSD1312,使用 MicroPython 编写驱动,最开始遇到了花屏、错行等问题,尤其是频繁刷新或者滚动文字时比较明显。后来改用了I2C接口,显示总算稳定了下来。

接下来是蓝牙部分。RP2040 通过 UART 与 BT301S 通信,发送 AT 指令实现播放控制,同时接收歌曲名称、播放进度和歌词数据。

这里也踩了个坑:模块的歌词输出和手机音频播放方式有关。测试发现,手机直接用扬声器播放时无法正常获取歌词,但连接蓝牙耳机后就可以获取。

最后是界面设计。因为屏幕只有 128×64,能显示的内容非常有限,所以尽量做得简洁一些。顶部显示蓝牙状态和歌曲名称,中间是播放状态、时间及进度条,底部留给歌词。中文显示使用 GB2312 字库,还做了歌曲名称滚动显示和自动熄屏等功能。

用透明 OLED 做一个蓝牙歌词显示及音乐控制器_image_2.webp

最后

整个项目最麻烦的反而不是硬件,而是屏幕驱动的稳定性和蓝牙歌词的获取。

目前基本实现了最初想要的功能。透明 OLED 配合复古线控的设计,感觉还是挺有意思的。

后续再做一个外壳,把电池和按键整合进去,做成真正可以随身使用的小设备。

最后附件中附上源码

硬件清单

  • ssd13121

创作许可协议

本项目采用 CC BY(署名) 进行许可。

评论(0)
- 没有更多了 -