MPY cassette player v4 Walkman DIY cool MP3 player with Raspberry Pi RP2040, VS1053, and color display AXP2101. Nostalgic design, circuit battery powered, include source code and case 3D.
When I was a child, my older brother had a Sony Walkman cassette player that I always envied. I have always had a nostalgia for cassette players in my heart. The exquisite mechanical design and cool appearance of the cassette Walkman at that time left a deep impression on me. Now I am trying to make one myself based on the appearance of a cassette player!
This project is migrated from the standard edition and is participating in the Spark Program 2024. The difference between V3 and V4 is that V4 uses an A56 key cap, which will have a better texture.
The V3 and V4 shells are not interchangeable. As for the hardware selection for the project, the MCU used a Raspberry Pi PICO, and a color screen is needed to recreate the effect of rotating transparent tape window.
A 1.14-inch st7789 screen was chosen. Due to the limitations of Micropython’s performance, a music decoding chip is needed, so the VS1053 was chosen for its powerful functions and the availability of existing Micropython libraries online.
The other hardware components are standard, including 4 buttons and a TF card slot. In order to elegantly implement the power on/off function, the project introduces the newer AXP2101 power management chip that other experts are also using.
Schematic MPY cassette player v4 Walkman cool MP3 player
Core ideas of code writing As a Chinese project, of course it should support Chinese. This project has added support for the commonly used 6500 Chinese characters full font library, and used the fb enhancement library by wangshujun https://github.com/wangshujun-tj/mpy-Framebuf-boost.
To achieve smooth tape rotation effect, this project uses a 240×135 st7789 color screen, driving it directly with Python would greatly affect efficiency, so here I used the fastc driver by the foreigner Russ Hughes https://github.com/russhughes/st7789_mpy.
Support for VS1053 driver, using the library by the Peter Hinch https://github.com/peterhinch/micropython-vs1053. However, this library only supports the most basic playback methods, so I consulted the VS1053 manual myself and added some more advanced methods Good UI, as a perfectionist, the interface must be acceptable to me, so I painstakingly used Photoshop to create the materials one by one… it’s also hard work trying to replicate the logic of a tape player as much as possible.
The author delved into MP3 encoding format and VS1053, and utilized the album cover from the mp3 id3 information, but it processed it specially so that when playing MP3s, if there is cover information, it will display on the screen, making it feel like a real tape inserted Finally, it’s all about integration, thinking it’s simple, but actually creating a complete system requires some effort.
Many of the aforementioned methods require modifying the micropython source code, so the final firmware is self-compiled, including some advanced libraries, and then used collectively. The source code, instructions, shell files, and tool scripts are uploaded to GitHub of course, a complete project needs a shell. The author just started learning software engineering this year, still at a beginner level.
Production implementation PCB, seamless integration with PCB design, relatively convenient. The VS1053 chip used here is bought from the official website, quite expensive. There is still a lot of room for price reduction if shipped. Currently doing 10 SMTs, with an average price of about 100 yuan each.
The shell is self-modeled and printed with Tuozhu A1 mini printer. For higher accuracy, one can choose from various 3D printing platforms to obtain better precision shells. The STL files can be obtained from the warehouse. Other components to be purchased include: 600mAh rechargeable battery, 240×135 ST7789 plug-in screen, M2.5×8 flat head screws, A56 key caps.
Latest V3 appearance showcase video
Copy music through TF card transmission, use USB interface for program upgrade and charging, MP3 bitrate must not exceed 256k. It is recommended to use 128k or 192k, currently only supports MP3.
Bom MPY mini cassette player v4 Walkman DIY cool MP3 player
Name | Value | Description | Quantity |
Resistors | |||
R1,R12 | 510 Ω | R0402 — SMD resistor | 2 |
R2,R3,R18,R19,R44,R45 | 0 Ω | R0402 — SMD resistor | 6 |
R4,R5,R36,R37 | 22 Ω | R0402 — SMD resistor | 4 |
R8,R10 | 1 kΩ | R0402 — SMD resistor | 2 |
R9,R11,R14,R15,R17,R30,R31,R32,R39,R40,R41,R42,R43 | 10 kΩ | R0402 — SMD resistor | 13 |
R13 | 3.3 kΩ | R0402 — SMD resistor | 1 |
R16,R22 | 5.1 kΩ | R0402 — SMD resistor | 2 |
R21 | 2.2 kΩ | R0402 — SMD resistor | 1 |
R23,R24,R25,R26,R27,R28,R29,R35 | 100 kΩ | R0402 — SMD resistor | 8 |
R33,R38 | 10 Ω | R0402 — SMD resistor | 2 |
R34 | 1 MΩ | R0402 — SMD resistor | 1 |
Capacitors | |||
C1,C18,C19,C20,C25,C37,C41,C42 | 1uF | C0402 — SMD capacitor | 8 |
C2,C15 | 10uF | C0603 — SMD capacitor | 2 |
C3,C6,C10,C13,C14,C33,C34,C35,C36 | 100nF | C0402 — SMD capacitor | 9 |
C4,C5 | 15pF | C0402 — SMD capacitor | 2 |
C7,C8,C9,C11 | 2.2uF | C0402 — SMD capacitor | 4 |
C12 | 1nF | C0402 — SMD capacitor | 1 |
C16,C17,C26 | 22uF | C0603 — SMD capacitor | 3 |
C21,C22,C23,C24 | 4.7uF | C0402 — SMD capacitor | 4 |
C38,C39 | 10nF | C0402 — SMD capacitor | 2 |
C40 | 47nF | C0603 — SMD capacitor | 1 |
C43,C44 | 12pF | C0402 — SMD capacitor | 2 |
C45,C46,C47 | 10uF | C0402 — SMD capacitor | 3 |
Semiconductors | |||
LED1 | 19-217/GHC-YR1S2/3T | LED0603 — LED green | 1 |
LED2 | KT-0603R | LED0603 — LED red | 1 |
Q1 | AO3401A | P Channel SOT-23 MOSFET | 1 |
U1 | W25Q128JVSIQTR | 128Mbit SOIC-8-208mil NOR FLASH | 1 |
U2 | 1.14-IPS-135×240-ST7789V | 1.14-IPS display | 1 |
U4 | RP2040 | 264 KB 30 ARM-MSeries 133MHz LQFN-56(7×7) Microcontroller Units (MCUs/MPUs/SOCs) | 1 |
U5 | VS1053B | LQFP-48(7×7) Audio Interface ICs | 1 |
U6 | AP7312-1833W6-7 | 150mA null Positive electrode 6V, 1.8V SOT-26-6 Linear Voltage Regulators | 1 |
U7 | AXP2101 | QFN-40 Single Cell NVDC PMU with E-gauge | 1 |
LED4 | 19-217/BHC-ZL1M2RY/3T | LED0603- LED blue | 1 |
PAD5,PAD6,PAD7,PAD8,PAD9,PAD10 | ROUND_PAD_1.2MM | ROUND_PAD_1.2MM | 6 |
Miscellaneous | |||
SW1 | TS-1187A-B-A-B | 5.1 mm 1.5 mm Round Button Brick nogging SPST SMD Tactile Switch | 1 |
SW2,SW3,SW4,SW5,SW6 | TC-1102DE-C-G | 6 mm 7 mm Round Button Lying SPST Plugin Tactile Switch | 5 |
T1,T2,T3,T4 | Screw hole m2.5×6 | M2.5 screw hole | 4 |
USB1 | KH-TYPE-C-16P | Female Surface Mount Right Angle Type-C SMD USB Connector | 1 |
CARD2 | TF-101A-P3 | Self bomb SMD SD Card Connector | 1 |
FPC1 | FPC-05FB-8PH20 | Right Angle 8P SMD, P=0.5mm,Surface Mount Right Angle FFC/FPC | 1 |
H1 | MH200V-11-02-1000 | P=2mm Pin Headers 2 pin | 1 |
JP1,JP2 | JUMPER-SPARKFUN | JUMPER-SPARKFUN | 2 |
L1,L2 | 1uH | 0806 Power Inductor | 2 |
L4,L5 | 600 Ω @100MHz 0603 Ferrite Bead | L0603 — SMD inductor | 2 |
AUDIO1 | PJ-3420-A-SMT | 3.5mm headphone jack 235℃ 30V 500mA SMD Audio Connector | 1 |
X1 | 12.288MHz | 12pF ±10ppm ±30ppm SMD3225-4P Crystal | 1 |
X2 | 12MHz | 20pF ±10ppm ±30ppm SMD3225-4P Crystal | 1 |
Download files, links, and notes
Download PCB in Gerber and PDF
- Buy RP2040
- Buy VS1053B
- Buy AXP2101
- Use document WIKI
- Repository containing shell source code and related tools
- Store
- Panel source files, welcome to modify by yourself
- PDF datasheet Raspberry Pi RP2040
- PDF datasheet VS1053B
- PDF datasheet AXP2101
- PDF datasheet W25Q128JVSIQTR
- PDF datasheet AP7312-1833W
Source: https://oshwhub.com/jd3096/mpy-cassette-player-v4