MP3 player with an e-paper screen, based on the Pi Zero 2 W

Similar projects worth following
This is a portable music player based on a Raspberry Pi Zero 2 W that uses an e-paper screen.

This is a remix of the PiPod project by bram at:

It was inspired by a comment on the original PiPod project: "It would be cool to see one with an e-paper screen." Challenge accepted!

The ePiPod uses a $6.99 epaper display from Waveshare (#12672).

Because this e-paper screen uses an SPI interface (like the original LCD screen), the change mostly involved implementing the e-paper power supply (SMPS) from Waveshare's reference design, along with using the Waveshare driver library, and then using the python pillow graphics library to draw to the screen.

The resulting PCB is available from PCBWay at:

The software, and instructions, are available at the github repository:

This project was inspired by BramRausch's "PiPod" project.

This "ePiPod" project replaces the 2.2" 320x240 LCD screen with a 2.13" 250x122 e-Paper screen, along with other changes to reduce power consumption.



E-paper screen for constant visibility of status, with minimal current drain on the battery.


The board includes a high-quality 24-bit I2S DAC.

It also includes a headphone amplifier to drive low-impedence headphones, and a 3.5mm headphone jack.

The software configures and enables VLC's 10-band Audio Equalizer. (The user can enable/disable the EQ via the "Settings" menu.)

User Interface Buttons

There are 5 front-panel buttons for navigation, and 2 side buttons for volume control. There is also a slide switch on top to disconnect the battery power.

User Interface Features

Select a Song, or Artist, or Album, or Genre to start playing. You can choose to play all songs, in alphabetical or random sequence.

Top playback screen shows Title, Artist, Album, Genre, and Track number. The top screen refreshes/updates with NO e-paper screen flickers.

While a song is playing, you can choose to "Play more Songs by this Artist" or "Play the Album this song is on" or "Play more of this Genre of music."

Battery Charging and Protection

The project uses a TP4056 for single-cell LiPo charging, and an FS312F for under- and over-voltage protection.


All software is in Python, and 100% open source. Even the Waveshare e-paper display driver software is in Python, and also completely open source.

Because of this, I found it easy to add specific features that I have wanted in an MP3 player, such as when you come upon a song you like and you want to hear more songs by that artist. So I added a menu item "Play More by this Artist." When you click this, songs that match the Artist are simply inserted directly into the playlist, and will come up next.

Complete set of gerber files, ready to send to a fabricator.

x-zip-compressed - 58.28 kB - 07/04/2024 at 17:38


PCB source files for CircuitStudio / Altium Designer. DOES NOT include the component libraries, so you may need to create some footprints and/or schematic symbols.

x-zip-compressed - 7.24 kB - 06/26/2024 at 17:28


Datasheets for all of the key components.

x-zip-compressed - 13.64 MB - 06/22/2024 at 20:40


STL files for the case and buttons.

x-zip-compressed - 249.53 kB - 06/22/2024 at 20:34



Schematic diagram. Done in CircuitStudio, which is a hobbyist version of Altium Designer that you can one-time purchase(!) for $495.

Adobe Portable Document Format - 475.61 kB - 06/22/2024 at 19:26


View all 6 files

  • Longer battery life

    drhatch06/22/2024 at 22:13 0 comments

    In order to extend the battery life of the original PiPod project, a few changes were made:

    1) Changed the LCD screen to an e-paper screen.

    The LCD backlight was consuming a lot of power (~40 mA), and the e-paper screen does not require illumination in ambient lighting conditions. So you can see the screen without stressing about draining the batteries.

    2) Replaced the Pygame graphics engine with the Python PIL (pillow) graphics library.

    3) Replaced the Pygame event que with thePython "keypad" and "digitalio" libraries.

    These two changes eliminated the power-hungry Pygame task that was always running in the background -- it reduced the power consumption by 9.5% while idle, and by 5.3% while playing music, which is significant.

    4) Changed the OS from "raspios-bookworm-arm64" to "raspios-bookworm-arm64-lite".

    The "lite" version of the OS does not have a graphical user screen, so it boots faster and also eliminates a lot of unnecessary tasks/processes running in the background.

    5) Reduced the ARM core and ARM bus clock rate down to 150 MHz.

    With so little software running, there is no need to clock the CPU at the default clock rate of 1 GHz. Reducing it to 150 MHz saves about 20 mA. (Note: There is no measurable power consumption reduction seen when disabling unused ARM CPU cores.)

    How Long Does the Battery Last?

    In my experience, the original PiPod had a battery life of about 2 hours using a 1200 mAh battery.

    Compare this to the ePiPod, which, when playing music non-stop, at normal listening volume (with the same 1200 mAh battery), now has a battery life of nearly 5 hours.

  • Status: 22 June 24

    drhatch06/22/2024 at 21:41 0 comments

    Log #1

    Here is where the project stands today (22 June 24):

    I have assembled the PC board, and it works as expected. This version was built from the gerbers (and BoM) that are attached to this Hackaday project.

    I have iterated the case files a couple of times. The most recent version I fabricated was mostly acceptable, but could be improved with some minor modifications. I made those modifications, and the .STL files are attached to this project.

    I am currently fabricating the case files according to the attached files, but I have not received them yet.  (I expect them to be very good, if not perfect.)  I will update the project once I use them to assemble a unit.

    UPDATE: The Rev3 (current) case files are acceptable.


    The software is stable, and works well.

    All source files are posted on github at:

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates