Bumpy is a small homemade mp3 player, with features similar to an iPod shuffle. The entire design is open-source, from the firmware to the circuit board to the 3D-printed case.
.mp3 files off of a micro-SD card.
You can load files onto the card then plug it into Bumpy,
or plug Bumpy into your computer:
it will show up like a flash drive (though it's a bit slower).
The UI is simple and minimalistic.
A scroll/click wheel
lets you change volume, play and pause,
and move foward and back through your
Eight LEDs glow through the case and show the player's status;
eight-bit animations give feedback when you change songs.
Bumpy recharges with a standard USB-mini plug. With typical use, it will play for over 24 hours on a single charge.
Bumpy's PCB is smaller than a typical business card. It's a two-layer board designed in Eagle and manufactured by OSH Park. Components are only placed on the board top; the battery is pressed flat against the other side.
The bill of materials contains a more detailed list of parts. The parts cost is $58 to build a single board; the price drops to $35 in quantity 100.
The firmware for playing
.mp3 files is fairly simple.
I use Roland Riegel's sd-reader library
to interface with the microSD card and get files from its FAT32 filesystem.
The mp3 decoder chip also speaks SPI; this portion of the firmware is similar to my fab boombox project from a few years back.
Implementing a USB mass storage device proved much more challenging. I started with the LUFA library's mass storage class driver, adapted the DataFlash-based example to an SD card, and wrote new sd_raw functions to do efficient multi-block reading and writing.
Bumpy has a eponymous 3D-printed case. It was printed in-house at Formlabs, where I'm gainfully employed.
The PCB is available for purchase on OSH Park.