Home About Writings Projects Music Code Photo Links nthpulse.net

< Return to Projects

DIY CD Player

This page follows the development of my CD player project based on an Atmega328 microcontroller and a 5.25 inch IDE disc drive. The decision to build this came about when I was looking for a stationary CD player to use instead of a desktop to listen to CDs and found nothing cheap, small and aesthetically nice.
This project is based on the ATAPIduino project by Carlos Durandal which uses three PCF8574 I/O expander chips connected to expose the IDE bus to an Arduino over the I2C bus. The Atmega328 aboard the Arduino Uno has only 20 GPIO pins, while the IDE bus requires at least 24 GPIO, so the PCF8574s are used to create an I2C to IDE interface which can be used to send track control commands to and retrieve track information from the disc drive.

I built the interface on a piece of protoboard, following the schematics on Durandal's webpage. I got lazy and skipped the decoupling capacitors for each IC but the board works regardless. The following are photos of my hard work (making it look nice was not easy).


I was compelled to design a PCB for this, as it's a skill I wanted to learn, and this point-to-point soldering is a severe headache and unsustainable. I designed the following PCB in KiCad:

I had fooled around in KiCad a few months earlier, and knew how to lay tracks and footprints, and create a board outline, but this was my first ever actual PCB. I ordered it through JLCPCB and it worked on the first iteration. With this being my first PCB, there are some quite questionable decisions made, such as no power planes, and signal traces running parallel to each other on opposite sides of the board. Questionable, but this is a low-speed, hobbyist application, and I haven't yet learned good PCB layout practices, either personally or in my university course (PCB layouts is quite far in the future). Once I improve some trace routing, I will release the KiCad files and gerbers for modification and manufacturing, so others don't suffer the point-to-point work like I did above.


Last modified: 29MAR2025