Arduino CD Player
Maybe your like
Making a CD player using an Arduino and IDE CD-ROM drive
Daniel1111 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 usernameWe 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
Team (3)
-
Daniel1111 -
dennisdebel -
SHYAM SUKHADEORAO FUTANE
- ArduinoCdPlayer
Related lists
Audio stuff
Audio-related projects
This project was created on 12/27/2020 and last updated 5 years ago.
Description
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't care.I've been wanting to do another project that involved digital audio for a while, so this is it. It's very heavily based on the ATAPIDUINO project, and also inspired by jurc192'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 directlyDetails
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?
ShareDiscussions
Log In/Sign up to comment
Become a Hackaday.io MemberCreate 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
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 NevermindTag » Arduino Cd Rom Controller
-
An Arduino And A CD-ROM Drive Makes A CD Player - Hackaday
-
DIY Arduino ATAPI CD-ROM Controller - FC2
-
CD Playback Control - Project Guidance - Arduino Forum
-
Cd Rom Stepper Motor Arduino L298n + Joystick Controlled Speed ...
-
CD-ROM Stepper Motor With Arduino Motor Shield L293d - YouTube
-
CD-ROM Sensored BLDC Motor Control With Arduino - Simple Projects
-
CD-ROM Controller DVD-ROM IDE Optical Controller DIY ... - EBay
-
Run A CDROM Brushless Motor With Arduino : 3 Steps - Instructables
-
Sensored Brushless DC Motor Control With Arduino - Simple Projects
-
Run A CDROM Brushless Motor With Arduino - Pinterest
-
CD ROM Stepper Motor Speed And Direction Control Using Arduino ...
-
XY Axis CD-ROM Laser Printer