Disclosure:
This article reviews the open-source MPY-Cassette-Player-V4 project by jd3096, a heartfelt tribute to classic cassette Walkmans reimagined with modern microcontroller technology. We aim to share this creative maker project that combines nostalgia and practicality with the global electronics enthusiast community.
Overview
This article covers the MPY Cassette Player V4, an open-source RP2040-based DIY project designed by jd3096. This project features the classic Walkman appearance blending with the modern technology. Based on modern microcontroller and music decoder technology design, the project is created into a classic cassette Walkman appearance, making it ideal for makers who love retro tech and hands-on creation. We’ll walk through its project value, honest cost, build time estimates, core features, maker tips, and open-source files to ensure a smooth build and operation.

Project Value & Key Skills
As you could see from its name, MPY Cassette Player, the code is based on MicroPython, which is a subset of python for microcontrollers. It could be a real challenge to use the MicroPython code on a real and practical hardware project, as most of the MicroPython codes in the community currently, are for some simple hardware projects, like ESP32 or other MCUs projects with multiple sensors and with simple control logics. The MPY Cassette Player is the first one, perhaps, that I have ever seen, to implement the MicroPython code on a real, functional and practical hardware project. For makers, it’s a great chance to learn new coding skills with MicroPython, especially the efficient code that shows the smooth animation on the TFT during playback.
These are the list of skills you will learn from this project:
- RP2040 MicroPython programming
- SPI/I2C communication
- Custom MicroPython firmware deployment
- VS1053 audio decoder programming
- Create efficient code for driving the ST7789 TFT and UI design
- AXP2101 PMIC for battery charging and software-based power on/off control
- SMT parts soldering and PCB assembly
- MP3 metadata parsing
- Custom fonts integration
Cost & Build Time
To help makers plan realistically, here is a straightforward breakdown for a complete V4 build, based on the creator’s official BOM and standard component sourcing:
- Total Cost: ~$25 (±$3) (varies by supplier)
- Build Time: 6–8 hours (including SMT and through-hole soldering, firmware flashing, and testing. Time for 3D printing, acrylic panel printing, not included)
- Difficulty Level: Upper-Intermediate (Basic SMT parts soldering, QFN package soldering and MicroPython firmware flashing & customization)
- Software Setup: Medium. Pre-compiled custom firmware is available, so beginners don’t need to modify or compile MicroPython code themselves. Advanced makers are free to tweak the code for adding features or customizing the UI.

Core Features
This section lists the major hardware components and full functional characteristics of the MPY Cassette Player V4.
Major Hardware Components
- Main Controller: Raspberry Pi PICO (RP2040 chip, dual-core ARM Cortex-M0+, 264KB on-chip SRAM, 2MB onboard Flash memory)
- Audio Decoder Chip: VS1053 (soldered directly on PCB, supports MP3 audio decoding)
- Power Management IC: AXP2101 PMIC, for battery charging management, software-based power on/off control, stable voltage regulation for RP2040 and TFT
- Display Module: ST7789 1.14-inch IPS TFT, 240×135 resolution, SPI interface, 65K colors
- Input & Storage: 4 tactile control buttons (play/pause, forward, reverse), onboard TF/SD card slot for music storage, USB-C port (only for firmware update and battery charging)
- Power Supply: 3.7V 600mAh lithium battery
- Mechanical Parts: Added A56 button caps for V4 version only, M2.5×8 flat-head screws, custom 3D-printable enclosure
- Auxiliary Parts: Basic components (resistors, capacitors)

Functional & Design Features
- Audio Playback: MP3 format only, maximum bit-rate limited to 256 kbps (128 kbps or 192 kbps recommended)
- Animation Effect: The effect of spinning tape reels on LCD during playback
- Media Information Display: Parses MP3 ID3 metadata, shows title, artist info and album art on the screen
- Language Support: English and Chinese. Built-in Chinese character library (supports up to 6500 commonly used Chinese characters)
- Power Design: Software based power on/off logic based on AXP2101
- Firmware Characteristic: Custom-compiled MicroPython firmware with built-in C-optimized functions/methods for efficient running
- Portrait Design: Classic cassette Walkman appearance, compact PCB design
- Open-Source Completeness: Complete open-source project (PCB schematics, PCB layout, firmware, 3D enclosure STL, MicroPython code)

Tips & Notes
These tips and notes below are based on the MPY Cassette Player V4 PCB design and verified build practices:
- TF and USB-C: Transfer all music files exclusively via the TF card; the USB-C port is only for firmware upgrades and battery charging. The player supports MP3 music only, with a maximum bitrate of 256kbps. For a stable playback and optimal performance, MP3 files with 128k or 192kbps are good to work, as suggested by the designer.
- Firmware: Please be sure to use the custom MicroPython firmware compiled by the project creator; generic community MicroPython builds will not work. Because the creator has added custom C-compiled functions to boost its performance, which are critical for smooth audio playback and sleek animations on TFT. The generic community firmware lacks these optimizations.
- TF Card and File System: Format TF cards to FAT32 with 4096-byte clusters to prevent file system errors and failed music file scan.
- Enclosure Durability: 3D-print the case in PETG instead of PLA for a better durability(STL files are available in the project repo).
- Acrylic Panel Sheet: The colorful acrylic panel sheet design is included in the easyEDA project, and you could order the UV printed sheet from LCSC.


Open-Source File Sources
All official design files, firmware, and documentation are hosted on the creator’s verified platforms:
- OSHWHub Project Page: https://oshwhub.com/jd3096/mpy-cassette-player-v4
- GitHub Repository (custom firmware, source code, 3D enclosure STLs): https://github.com/jd3096-mpy/MPY-CASSETTE-PLAYER
- MPY Library Used: mpy-Framebuf-boost (wangshujun-tj, Chinese font support); st7789_mpy (russhughes, TFT driver), MicroPython-vs1053 (peterhinch, driver for audio decoder)
The Final Word
The MPY Cassette Player V4 is a worthwhile project for makers seeking a balance of hands-on learning (MicroPython code on a practical hardware project) and functional results. It is accessible for those with basic soldering and MicroPython skills, while offering meaningful challenges in embedded audio and PCB design. The official files are open source, the component list is affordable, and the end product is a unique retro music player. As long as you follow the media and firmware requirements closely, this build is a reliable microcontroller projects
**Copyright Notice**:This article is an original review of the MPY Cassette Player V4 project designed by jd3096 (original project: https://oshwhub.com/jd3096/mpy-cassette-player-v4). The original project is licensed under OSHW Approved license. All images used are credited to jd3096 without modifications.
