using Arduino to control mp3 decoder chip

I am starting a project that is over my head - but I'm a fast learner... I wonder if I could get a little help.

I need several (as in hundreds) of mp3 players that are triggered by 10 millisecond wide pulses, about 2 milliseconds apart of two volts.

So, I want to make very cheap and very small mp3 players.

Naturally, Raphael Abrams ( is a huge resource, but to make small changes to his code I'd have to shell out the $300-$400 compiler for the PIC. I just got my first bare-bones Arduino kit from Make ( and thought if I could use the Atmel chip to control an mp3 decoder that might be the way to go. This way it would be easier to compile and easier to embed the new code on the Atmel chip.

So, I found these resources, which are close to what I need but not quite:

Both use the Atmel Atmega128 chip (is that just an older version of the Atmega168 that came with my Arduino kit?) and, if I'm right, should be easier and cheaper to compile and burn with a new code than the Teuthis models.

Both are more complicated than I need, with LCD readouts and IR ports... and I don't need a hard drive, a SD or MMC card would be perfect.

So, to boil it down to a few questions: 1. Has anyone designed a circuit board that allows the Arduino to control an mp3 decoder chip directly, without any extras? 2. Am I right in thinking that it would be a lot cheaper to compile and burn new code into an Atmel chip than to start with the Teuthis models (which use PIC controllers)? 3. Can I start with the examples from MicroSyl and FrankVH and use my Atmega168 chip? Are they compatible? 4. Is there a simpler solution that I am missing? 5. Does anybody know how much of a change I would have to make to the MicroSyl and FrankVH PCBs to substitue the harddrive for a SD or MMC card and also drop the IR port and LCD displays?


Welcome to the forum!

Several hundred MP3 players — wow! That's going to be really expensive. I'm curious. What are you building? What is your application?

Regards, David

Both use the Atmel Atmega128 chip (is that just an older version of the Atmega168 that came with my Arduino kit?)

Atmel has what I consider a cough_uniquecough_ product numbering system. So, in this case, the ATmega128 isn't an older version of the ATmega168, it's actually a microcontroller with more flash (128KB vs 16KB) and different features. Other chips in the same series as the ATmega168 (meaning they're pin compatible replacements with differing amounts of Flash memory--I think) are the ATmega48, ATmega88 and the slightly mythical ATmega328.

At least, that's my understanding. :-)


You can easily find a PIC Programmer for under $400. Buy a ICD2 (Microchips flagship) clone off eBay for under $60 and will operate in MPLAB as a genuine ICD2 and you'll be set with one of the best programmers you can buy. Alternatively, for a bit of fun you could build your own:

If the software is already there, i would go with the PIC option.