Arduino CD Player

Hackaday.io Hackaday.io Projects Discover Contests Courses Stack More Courses Tutorials Events Hackerspaces Hackaday.com Tindie Marketplace Sign up Log in Close 0% 0% Arduino CD player

Making a CD player using an Arduino and IDE CD-ROM drive

daniel1111Daniel1111 Following Follow project Liked Like project Become a Hackaday.io member

Not a member? You should Sign up.

Already have an account? Log in.

Sign up with Github Sign up with Twitter OR Remember me Sign up Forgot your password? Just one more thing

To make the experience fit your profile, pick a username and tell us what interests you.

Pick an awesome username hackaday.io/ Your profile's URL: hackaday.io/username. Max 25 alphanumeric characters. Pick a few interests Projects that share your interests People that share your interests

We found and based on your interests.

Choose more interests.

OK, I'm done! Skip Join this project Similar projects worth following 14.2k views 13 comments 40 followers 44 likes
  • Description
  • Details
  • Files 0
  • Components 0
  • Logs 0
  • Instructions 0
  • Discussion 13
View Gallery 14.2k 13 40 44

Team (3)

  • daniel1111Daniel1111
  • dennisdebeldennisdebel
  • shyam-sukhadeorao-futaneSHYAM SUKHADEORAO FUTANE
Join this project's team
  • ArduinoCdPlayer
hardware ongoing project

Related lists

Audio stuff

Audio-related projects

This project was created on 12/27/2020 and last updated 5 years ago.

This project uses an Arduino Pro-Mini to turn a PC IDE CD-ROM drive into a stand-alone CD player. Arguably a project for the late 1990s to early 2000s, but I don&apos;t care.I&apos;ve been wanting to do another project that involved digital audio for a while, so this is it. It&apos;s very heavily based on the ATAPIDUINO project, and also inspired by jurc192&apos;s similar project on <a target="_blank" rel="noopener noreferrer" href="http://hackaday.io">hackaday.io</a> (<a target="_blank" rel="noopener noreferrer" href="https://hackaday.io/project/24905-using-old-cd-drive-as-a-music-player">https://hackaday.io/project/24905-using-old-cd-drive-as-a-music-player</a>). The main difference is that this project uses the S/PDIF output of the CD-ROM drive to feed a DAC, rather than using the analogue audio output from the CD-ROM drive directly

This block diagram shows the key parts of the project:

Not shown are the controls (connected to an I2C port expander) and the I2C OLED display.

I had originally planned to add IR control to this project - and there is a header on PCB for it - but kinda lost interest (realising a CD player project in 2020 makes little sense) before I got around to implementing it. Plus, I'm not sure if there's enough memory left for that anyway.There's also a header for a S/PDIF output on the PCB as well - but again, not soldered on or implemented in code for the same reason.

I've chosen to incorporate a pro-mini board, rather than a bare ATMEGA328p, into this project partially due to laziness, and partially because they cost about the same anyway.

The code, whilst heavily based on the ATAPIDUINO project, is mostly rewritten - there isn't much that remains unchanged from the original (original code this is based off of is in the repo as well).

What works:

  • Playing CDs
  • Controls: Stop, Play, Pause, Fast Forward, Rewind, Next track, Prev track, Eject
  • OLED display: Shows track number, track time, and one of: Play/Stop/FF/RW/Eject symbols
  • Analogue audio output via DAC

What doesn't work / issues:

  • Forgot to connect 3v3 to pin 20 (DVDD) of the DAC/PCM5102, ooops. Added bodge wire between the 3v3 output tab on U4 to the bottom of C11
  • IR control - the header on the PCB exists, but not fitted or implemented in code
  • Untested: Audio mute circuit. During development, it was powered via the Pro-Mini (with a sepearte ATX supply for the CD-ROM drive), so I needed to disable the mute circuit as there was no 12v input. So there's a bodge wire between TP2 and TP3, with R25 & R29 not populated. I've no reason to think it wouldn't work, but I lost interest before testing it. If I was continuing with this project, I'd probably add a jumper to disable it.
  • S/PDIF output: There's a header on the PCB for a FCR684204T 3.5mm TOSLINK connector, but I've not fitted it. It should only require a small amount of extra code to tell the WM8805 to enable this output.
  • I was planning to design a case for this along the lines of a "normal" stand-alone CD player, but attaching everything to a piece of plywood will do now I think.
  • General PCB layout - the position of the IDE cable partially obscures the display. My original intention was for the display and controls to be mounted on a front panel, so it wouldn't have mattered (there are pin headers next to each button for this reason). But there's no reason why the layout couldn't be improved to accommodate both options.

Enjoy this project?

Share

Discussions

Log In/Sign up to comment

Become a Hackaday.io Member

Create an account to leave a comment. Already have an account? Log In.

Sign up with Github Sign up with X OR Sign up Rahman ziad wrote 06/22/2024 at 11:08 point

Hi, so nowadays PATA CD-ROM is not widely available. What if I use a SATA to PATA converter? Will it work?

Are you sure? yes | no

trybula wrote 09/14/2023 at 19:02 point

Hi, great project! I would like to recreate it and maybe even take it further by improving it, but firstly could you share your arduino code?

Are you sure? yes | no

Daniel1111 wrote 09/15/2023 at 21:10 point

Hi, arduino code is on github here:

https://github.com/daniel1111/ArduinoCdPlayer/tree/main/sketchbook/cd2

Are you sure? yes | no

trybula wrote 09/16/2023 at 08:01 point

Thanks

Are you sure? yes | no

darioia wrote 07/03/2023 at 18:53 point

For someone that not have more time to implement board, SMD mounting and so on, I suggest to use (but it's a bit more expensive):https://www.aliexpress.com/item/1000007621078.html?spm=a2g0o.order_list.order_list_main.4.61f31802eRzurshttps://www.amazon.com/HiLetgo-Lossless-Digital-Converter-Raspberry/dp/B07Q9K5MT8/ref=sr_1_1?crid=VS4E79SSGIAD&keywords=Youmile+PCM5102&qid=1688410282&sprefix=youmile+pcm5102%2Caps%2C144&sr=8-1and any very low noise DCDC converter.

Are you sure? yes | no

michaelc984 wrote 07/09/2022 at 12:45 point

Hi. I can see that there have been no updates on this project for  a few months, but this project interests me a great deal. I'd be grateful if Daniel or anyone else could give me some pointers on how to get the data off a music cd, and into I2S format, so I can send it to the Dayton Audio DSPB-250. I had planned to use an optical drive that take CDs, DVDs, Blu Rays, etc., connected to a Raspberry Pi, as that would allow me to also send internet radio to the DSPB-250 as well. 

Are you sure? yes | no

darioia wrote 07/03/2023 at 18:44 point

The WM880x output interface is already a I2S interface. From : https://www.parts-express.com/pedocs/manuals/dayton-audio-dspb-user-manual-v1_21.pdf page 38 the connector J2 is the I2S interface (pin 2, 3, 4), but it is missed sysclk, I think it is not needed (in my Raspberry dac I haven't sysclk). I don't know if works or not in SW point of view.

Are you sure? yes | no

trublu289 wrote 02/20/2022 at 19:59 point

Are you still doing something with this project? I have a idea to go even further but will need help.

Are you sure? yes | no

Daniel1111 wrote 02/21/2022 at 14:43 point

No, I think it's fair to say at this point it's unlikey I'm going to be doing anything more with this project

Are you sure? yes | no

trublu289 wrote 02/21/2022 at 14:59 point

Ok that's fair. Would you able to help me a tad bit on my project? 

Are you sure? yes | no

Daniel1111 wrote 02/22/2022 at 18:20 point

possibly if I can, yeah?

Are you sure? yes | no

Cals Chers wrote 02/09/2021 at 18:08 point

Nice work so far!  A couple questions:1. Why did you choose the WM8805?  Seems like overkill.  Wouldn't something cheaper (e.g. DIR9001) have done the job?

2. Which CD-ROM(s) have you tried?  Have you tried a CD/DVD-ROM type?

Are you sure? yes | no

Daniel1111 wrote 02/13/2021 at 17:03 point

1) A few reasons - none particularly good if I'm honest. I had a couple of left over WM8805's from a previous project, and know how to use them. I'd also half planned to be able to use the board as a DAC (there's an additional S/PDIF header on the board), as WM8805's can switch between multiple inputs. But I never implemented that - the header on the board isn't for a TOSLINK connector, and there's not the  isolation that's really needed for an external coax connection, so that's not happening.

As for price, having checked, it looks like I paid £6.57 for 5x WM8805's back in 2018 (and it's similar now), whilst after a (very quick!) look I can only spot DIR9001's for just under £4 each.

2) So far, only 2* NEC CDR-1800A - despite the name, it's a CD-ROM drive, not a CD-R* LG DRD-8160B - DVD-ROM drive

Both seemed to work fine, although the NEC drive sounded better (more like a "normal" cd player) when fast forwarding / skipping through a CD

Are you sure? yes | no

Does this project spark your interest?

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

Become a member Going up?

About Us Contact Hackaday.io Give Feedback Terms of Use Privacy Policy Hackaday API

© 2025 Hackaday

Yes, delete it Cancel

Report project as inappropriate

You are about to report the project "Arduino CD player", please tell us the reason.

Send message

Hello, I really like your project and I think I have skills to help you.

Your application has been submitted.

Remove Member

Are you sure you want to remove yourself as a member for this project?

Project owner will be notified upon removal.

Remove Nevermind

Tag » Arduino Cd Rom Controller