大数跨境
0
0

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

用树莓派Pico做一个复古迷你磁带播放器 DF创客社区
2023-12-28
2
导读:效果非常不错。
【点击上方「蓝字」关注DF创客社区,一起成为技术颜控】

大家好,我是三十岁开始学习编程的大叔,DF创客社区ID:jd3096,有幸参加DFRobot的征集树莓派项目活动。

作为一个自学MicroPython两年半的练习生,也是第一次尝试用树莓派Pico做项目,希望大家多多支持,我很愿意尝试别人没做过的项目,并且本项目在DF论坛首发。

项目GitHub地址:https://github.com/jd3096-mpy/MPY-CASSETTE-PLAYER

先看成品的效果:

b站视频,喜欢的小伙伴,欢迎三连!

项目起源

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

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

硬件选择

关于项目的硬件选择,MCU当然要符合本次活动的要求,就用树莓派Pico,同时要有一个彩屏可以还原转动透明磁带窗的效果,最后因为MicroPython的性能所限,我需要一个音乐解码芯片,最终选择了VS1053,理由是功能强大,网上也有现成的MicroPython库,其他的硬件都是常规的了,4个按键,tf卡槽,为了能优雅的实现开关机,这里引入了AXP的电源管理芯片。

硬件选好后,我先用模块搭建了一个做了测试,并简单写了这个项目的核心框架,就是模拟磁带播放的效果的UI。

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

PCB制作

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

图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水平,大家将就看一下。

最后再贴个嘉立创面板,不太懂设计瞎弄的,但是贴上面板之后会大幅度提升颜值逼格。

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

生产实装

最后激动人心的时刻来了,将所有的东西生产拼装起来,需要用到以下的工具和平台:

  • pcb方面选择嘉立创smt,无缝对接pcb设计,比较方便,这里用到的VS1053芯片是从官方买的,比较贵,邮寄的话还有很大降价空间,目前做10个smt,每个的平均价格大概是100元
  • 外壳选择自己建模并用拓竹A1 mini打印,如果想要更高的精度,可以选择各大3D打印平台,可以获得更好精度的壳子,stl文件在仓库自取
  • 嘉立创面板40元(10个)
  • 其他需要买的元件:600毫安时充电电池——10元,240x135 st7789插接款屏幕——8元,M2.5x8平头螺丝——4元(50个)
图5  组装材料全家福,螺丝一拧,面板一贴就好啦

结束语

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

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

文章首发于:DF创客社区

转载请注明来源信息


▲ 点击参与


硬件军火库

DF硬件军火库

点击了解详情👆


DFRobot官方品牌店 https://dfrobot.taobao.com/

DFRobot官方旗舰店 https://dfrobot.jd.com/


大家有什么想说的,欢迎在下方留言

有任何问题,可以点击“阅读原文”与作者直接沟通!



 往期项目回顾 



一文读懂全系列树莓派!

学习这20条Linux命令,玩转你的树莓派!

6块屏幕的树莓派Cyberdeck,了解一下!

用树莓派「点亮」圣诞树

树莓派自制云服务器,放进口袋随身携带!

用树莓派制作一个“数码显微镜”

春天来了,你需要一款复古风格的树莓派相机

3D打印的树莓派蜘蛛机器人

用树莓派和ESP32做一台掌上电脑!

做一个基于树莓派Zero的复古游戏主机

全网最全!树莓派扩展板怎么选?一个视频搞定!


点击阅读👆

【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读2.7k
粉丝0
内容1.3k