Home About Writings Projects Other 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 that was all three out of: 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. The following are photos of my hard work (making it look nice was not easy).


I decided 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:

This is the first PCB I ever designed and I'm pleased to say that it worked on the first iteration. The PCB was designed before I learned any good layout practices or how to draw schematics in KiCad, so I had no net lines to help with routing and I had to repeatedly visually check if my work conformed to the the original schematic image. The poor design practices present in this PCB are of little consequence in this low-speed application, but a better job can be done. I will at some point draw up a schematic and design a less questionable PCB that I will release publicly.


Last modified: 29MAR2025