JhzS5

MPY-CASSETTE-PLAYER-V4

 
Overview
This project was migrated from the standard version and is participating in the Spark Program 2024. The original project can be found here: https://oshwhub.com/jd3096/mini-cassette-player_copy_copy.
The difference between V3 and V4 is that V4 uses A56 keycaps, which have a better feel. The V3 and V4 cases are not interchangeable.
Part 1: Hardware Selection
Regarding the hardware selection for this project, a Raspberry Pi PICO was used as the MCU. A color screen was also needed to reproduce the effect of rotating the transparent cassette tape window, so a 1.14-inch ST7789 was chosen. Finally, due to the performance limitations of MicroPython, a music decoding chip was required, and the VS1053 was ultimately chosen because of its powerful functionality and readily available MicroPython libraries online. The other hardware is standard: four buttons, a TF card slot, and to achieve elegant power on/off, the relatively new AXP2101 power management chip, which is also used by other developers, was introduced.
Part Two: Core Ideas for Code Development

As a project developed by Chinese developers, it naturally needs to support Chinese characters. This project includes full character support for 6500 commonly used Chinese characters and uses wangshujun's Framebuf enhancement library (https://github.com/wangshujun-tj/mpy-Framebuf-boost).
For smooth tape playback, this project uses a 240x135 ST7789 color screen. Directly using Python drivers would significantly impact efficiency, so we used russhughes's FastC driver (https://github.com/russhughes/st7789_mpy).
For VS1053 driver support, we used peterhinch's library (https://github.com/peterhinch/micropython-vs1053). However, this library only supports the most basic playback methods, so I consulted the VS1053 manual and added some more advanced methods
. A good UI is also essential; as someone with OCD, the interface must be visually appealing, so I painstakingly extracted the assets one by one using Photoshop. It was also a lot of hard work
to recreate the operating logic of a cassette player as closely as possible. I spent a lot of time working on MP3 encoding formats and VS1053, and finally solved those problems. The cassette covers use the album art from the MP3 ID3 information, but I've specially processed them so that when playing MP3s, if there's any cover art, it will be displayed on the screen, making it almost like a real cassette is being played.
Finally, it's all about integration. While it seems simple, building a complete system actually takes some effort. Many of the methods mentioned above require modifying the MicroPython source code, so the final firmware was also compiled by myself, including some advanced libraries, which are then used in the final compilation. The source code, instructions, shell files, tool scripts, and library creation are uploaded to GitHub: https://github.com/jd3096-mpy/MPY-CASSETTE-PLAYER. A
complete project naturally needs a shell. I just started learning Switch this year, and I'm still at a "Hello World" level, so please bear with me. Part Three: Panel Design.
The JLCPCB panel is a rough design I made myself, trying to be simple and good-looking while incorporating cassette player elements. Because I'm worried about wear and tear, I chose an opaque material printed on the bottom.
Part 4: For the



PCB assembly, JLCPCB SMT was chosen for its seamless integration with PCB design, which is quite convenient. The VS1053 chip used here was purchased from the official website, which is relatively expensive. There is significant room for price reduction if shipped directly. Currently, 10 SMTs are being made, with an average price of about 100 yuan per unit.
The shell was modeled by myself and printed using Tuozhu A1 Mini. If higher precision is desired, various 3D printing platforms can be selected to obtain shells with better precision. STL files can be picked up from the warehouse.
JLCPCB panels cost 45 yuan (10 units).
Other components needed: 600 mAh rechargeable battery – 10 yuan, 240x135 ST7789 plug-in screen - 8 yuan, M2.5x8 flathead screws - 4 yuan (50 pieces), A56 keycaps 2 yuan (20 pieces).
Function demonstration video,
latest V3 appearance display video,
user documentation, WIKI
repository including shell source code, related tools, etc.
For finished products, please visit Bilibili Workshop; fans have a discount
on panel source files. Feel free to modify and


copy music via TF card. USB interface for program upgrades and charging. MP3 bitrate must not exceed 256kbps; 128kbps or 192kbps is recommended. Currently only MP3 is supported. If you cannot accept these terms, please do not place an order. Thank you for your cooperation.
Discussion group: 559021501
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2026-03-26 19:03:41

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号