用树莓派PICO做一个复古迷你磁带播放器

2023-12-211.3万
精华项目
AI 快速预览详细 收起
该项目使用树莓派PICO制作了一个复古迷你磁带播放器,支持中文显示和流畅的磁带转动效果。硬件包括树莓派PICO、VS1053音乐解码芯片、240x135 ST7789彩屏等。项目的核心思路是实现中文显示、流畅的磁带转动效果以及良好的UI设计。通过这个项目,用户可以重温经典音乐体验,并享受动手实践的乐趣。


大家好,我是三十岁开始学习编程的大叔,jd3096,这有幸参加DFROBOT 征集树莓派项目活动
作为一个自学micropython两年半的练习生,也是第一次尝试用树莓派PICO做项目,希望大家多多支持,我很愿意尝试别人没做过的项目,并且本项目在DF论坛首发。
项目地址 https://github.com/jd3096-mpy/MPY-CASSETTE-PLAYER

先看成品的效果
用树莓派PICO做一个复古迷你磁带播放器图1
b站视频,喜欢的小伙伴欢迎三连



第一部分:项目起源

在我小时候,我大哥有一个索尼磁带随身听,让我一直很是羡慕,大哥也算是我的音乐启蒙人,在他那里听到了很多优秀的音乐作品,虽然后来也有了自己的MP3,再后来MP3也逐渐被淘汰,大家都开始用手机听歌了,但是我心中一直有关于磁带机的情怀,当时磁带随身听那精致的机械结构设计和炫酷的外观一直给我留下了很深刻的印象,现在尝试自己做一个!

用树莓派PICO做一个复古迷你磁带播放器图3

图1  尽可能模拟还原那个年代磁带播放器的外观和逻辑

第二部分:硬件选择
关于项目的硬件选择,MCU当然要符合本次活动的要求,就用树莓派PICO,同时要有一个彩屏可以还原转动透明磁带窗的效果,最后因为micropython的性能所限,我需要一个音乐解码芯片,最终选择了VS1053,理由是功能强大,网上也有现成的micropython库,其他的硬件都是常规的了,4个按键,tf卡槽,为了能优雅的实现开关机,这里引入了AXP的电源管理芯片。
   
硬件选好后,我先用模块搭建了一个做了测试,并简单写了这个项目的核心框架,就是模拟磁带播放的效果的UI
用树莓派PICO做一个复古迷你磁带播放器图5

图2  自己用开发板和模块搭建的,样子比较简陋,但是验证实现了基本的功能需求

第三部分:PCB制作

这里我委托老朋友eggfly帮我画了PCB,就可以实现小巧优雅的外观,也有个项目的样子了,待活动结束后会放到嘉立创开源广场

用树莓派PICO做一个复古迷你磁带播放器图6

图3  老李画的板子每次都深得我心,4层板,空间比较紧凑

第四部分:代码编写的核心思路

    硬件基本就是这样了,下面主要说一下软件方面需要解决的重点问题:
  • 作为国人的项目当然要支持中文啦,本项目加入了常用6500汉字的全字库支持,使用了wangshujun大佬的fb增强库 https://github.com/wangshujun-tj/mpy-Framebuf-boost
  • 要有流畅的磁带转动效果,本项目采用的是240x135的st7789彩屏,直接用python驱动会很影响效率,这里用了国外russhughes大佬的fastc驱动 https://github.com/russhughes/st7789_mpy
  • VS1053的驱动支持,使用了国外大佬peterhinch的库  https://github.com/peterhinch/micropython-vs1053 但是这个库仅支持了最基本的播放方法,所以我自己查阅了vs1053的手册并加入了一些更高级的方法
  • 良好的UI,作为一个强迫症,界面自己必须得看得过去,所以素材就用PS一个一个抠。。。也是个辛苦活儿
  • 尽可能还原磁带播放器的操作逻辑,这里要用到的就是快进、快退,原库没有怎么办。。。自己造呗,MP3编码格式和VS1053一顿猛啃,都解决了,磁带的封面用的就是mp3 id3信息中的专辑封面,只不过我都特殊处理过了,这样播放MP3的时候,如果有封面信息就会显示到屏幕上,就跟真的有个磁带放进去差不多啦
  • 最后就是融汇贯通啦,想着简单,实际去做一个完整的系统还是要费点功夫的,上述很多方法都需要修改micropython源码,所以最终的固件也是自己编译的,包含了一些比较高级的库,最后汇总使用。源码、说明、外壳文件、工具脚本建库上传了github https://github.com/jd3096-mpy/MPY-CASSETTE-PLAYER
  • 完整的项目当然需要一个壳子,今年我刚自学sw,还是helloworld水平,大家将就看一下
  • 最后再贴个嘉立创面板,不太懂设计瞎弄的,但是贴上面板之后会大幅度提升颜值逼格

用树莓派PICO做一个复古迷你磁带播放器图4

图4  嘉立创面板,自己瞎设计的,尽量简洁好看并且带有磁带机的元素

第五部分:生产实装

    最后激动人心的时刻来了,将所有的东西生产拼装起来,需要用到以下的工具和平台:
  • pcb方面选择嘉立创smt,无缝对接pcb设计,比较方便,这里用到的VS1053芯片是从官方买的,比较贵,邮寄的话还有很大降价空间,目前做10个smt,每个的平均价格大概是100元
  • 外壳选择自己建模并用拓竹A1 mini打印,如果想要更高的精度,可以选择各大3D打印平台,可以获得更好精度的壳子,stl文件在仓库自取
  • 嘉立创面板40元(10个)
  • 其他需要买的元件:600毫安时充电电池——10元,240x135 st7789插接款屏幕——8元,M2.5x8平头螺丝——4元(50个)

用树莓派PICO做一个复古迷你磁带播放器图2

图5  组装材料全家福,螺丝一拧,面板一贴就好啦

结束语

虽然这个项目用时比较久,耗费的时间精力也比较多,但是获得的成就感也是满满,目前硬件构架基本稳定,软件上面还有很多bug需要修改,因为整个程序完全是自己构建的,所以在平常感觉普通的功能也可能翻车,也欢迎大家多提意见,这次也一口气做了10个,大家有喜欢的话可以联系我。用树莓派PICO做一个复古迷你磁带播放器图7

感谢这个时代,能靠一个人的力量完成这些需要依赖那些很方便的平台和各种互联网资源才能做到,种树最合适的时间是十年前其次是现在,有爱好为什么不认真玩呢?












创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(11)
东吴小将
东吴小将
就是真的好看!!
罗罗罗
罗罗罗
666
式点
式点
有意思
rzegkly
rzegkly
很好的创意
RRoy
RRoy
质量很高,支持支持!
F0mmG5mWgR2J
F0mmG5mWgR2J
厉害厉害,赞
aYYSW8AepLLd
aYYSW8AepLLd
厉害厉害
JOVI
JOVI
学习学习
hnyzcj
hnyzcj
流弊
网络白丁
网络白丁
太强了,口水,猜能进前3
Ash1
Ash1
贼棒!有那味了,很复古 想去把家里的老磁带翻出来
- 没有更多了 -