MP3 Player

Author admin    Category All projects, Audio     Tags , , , , ,


I decided to do this project for several reasons: first I like music, second I have a huge collection of MP3, and third I wanted to be able to play them anytime in my living room.  I began the project with one major restriction, the printed circuit board of MP3 player MUST be single side in order to do it myself.  After 2 months of drawing, I realized this project was in fact ‘feasible’! One major characteristic of this player was the bi-directional remote control. I had to give several information, folders and songs on a small graphic LCD. 

In the comfort of your living room you can browse and listen to 30 gig of MP3. The MP3 player is nicely built around the Atmel ATMega128 running at 16Mhz. The MP3 decoder is a VS1001k which gives a crystal clear sound. The USB interface is done via FT232MB, which by the way, makes USB development very simple. In this project I found two big difficulties: understanding FAT32 and transmitting a large quantity of information via Infrared. In order to understand FAT32 I used these tools: – Windows software for checking the hard drive data on sector like WinHex. – Microsoft FAT32 white paper’s reading (not so easy to understand) – Other source code of FAT32’s analyzing could be useful Infra Red Communication Devices like GP1UD26xk (infrared sensor) need to have a density of 1’s lower then 45% so the Manchester encoding MUST be used with a speed of 2400bps maximum and 2 stop bits. Manchester encoding gives you 50% of 1’s. Each time you send “1″ you will send “10” and for “0″ you send “01″.  The utilization of 2 stop bit by bytes will give you approximately 45% of 1’s.  The fact is that you loose 50% of the original speed but that’s the only way to do it and you will send the double quantity of bytes. ATA Interface The ATA interface in PIO mode is very simple, if you know how to interface any MCU peripherals this is the same method.  You have a 16 bits address bus which controls the register you want to write to or read from.

Please note that this MP3 player is not see like a mass storage unit by windows, it's a high speed serial port (1Mbps) and you must wrote your own driver.



MP3 Player

  • IDE ATA interface
  • FAT 32 with long file name support
  • USB interface
  • On board power supply (input from 7v to 20v DC)
  • Bootloader firmware upgradeable via USB port
  • Infrared bi-directional interface

Remote Control

  • Back light graphic LCD
  • worked with only 2x AA batteries
  • In sleep mode sink less than 1uA (2.5mA in active mode)
  • 5 buttons for easy navigation
  • Long range (more than 20 feets)



- Player Schematic in PDF format

- Remote Control Schematic in PDF format

- IR Transceiver Schematic in PDF format

- Player Source Code in ICCAVR format

- Remote Control Source Code in ICCAVR format

- MP3 Player Bootloader source code for MegaLoad in ICCAVR format "via usb"



30 Comments to “MP3 Player”

  • saeed April 8, 2010 at 6:21 am

    this project is very good, but i can't download it.
    if it is possible send it for me(
    thank you very much

  • admin April 8, 2010 at 2:04 pm


    The link was broken, I just fix it, give it a try


  • Leonardo Moura May 10, 2010 at 1:05 pm

    Which the capacity of hard disc?

  • admin May 10, 2010 at 1:13 pm

    I had try with 40g, but it could be more, I don’t exactly know the max size

  • Leonardo Moura May 10, 2010 at 1:55 pm

    congratulations for its projects. Where I find something on ATA? it wanted to make using PIC.

  • admin May 10, 2010 at 1:57 pm

    Thanks,  Just download the source code and all the ATA is there

  • Leonardo Moura May 10, 2010 at 2:01 pm

    OK, is alone to record musics in hard disc and to place to touch?

  • Daniel Zhou May 15, 2010 at 1:45 pm

    I like this project. The site(blog) is more beautiful than it used to be….
    I have finish the main board many years, but sadly, the remotor does not work…

  • admin May 15, 2010 at 1:49 pm

    Thanks for the positive comment!, The remote should work, it’s work here. Did you have some IR data comming out of the MCU, and is there 40khz on the transmition output of the MCU, Did you have a scope?

  • Daniel Zhou May 17, 2010 at 7:38 am

    Hi, Thank you for your replay~
    I did not make a formal PCB for the remoter(I made a formal PCB for the main board ),  the 3310LCDs on the remoter have some quality problem(I bought three 3310LCDs, but all of them are out of work it hard to connect to the remoter board).
    Now I am not insterested in MP3, I want to make a WAVE player to out put the SPDIFor IIS data to connect to a better DAC.
    Nice blog…  :-)

  • Daniel Zhou May 17, 2010 at 7:42 am
  • parry June 13, 2010 at 6:34 pm

    I really like this project and want to get started.I have a uniboard atmega128 right now.Please tell me what all should i read before getting started with d project.

  • admin June 13, 2010 at 9:57 pm

    -Your Mega Datasheet
    -IDE protocol
    -FAT32 file system
    You will have work for 2 month

  • Julia August 12, 2010 at 6:06 am

    great job,,!
    hi! i also wanna make a MP3 player project. but maybe i will use MMC to replace the hard disk and mega32. which one is better for the file system : PetitFs or FAT32..?
    thanks syl

  • admin August 12, 2010 at 12:04 pm

    Thanks, Fat32 is simple if you don’t use the long file name, but it’s complicated with long file name support, I had never work with PetitFs, I can’t say


  • Vitaliy November 24, 2010 at 8:14 am

    Hi dear Sylvain!
    this project is wonderful.
     But I think that for comfort in the use, it is needed that after power-up, playing started from the same place where a shutdown was.

  • admin November 24, 2010 at 12:46 pm

    Yes you are right, just had a write to eeprom function to store your location and restore is at start-up


  • Vitaliy November 26, 2010 at 8:37 am

    Ok, will be interested in a new version beta-testing. thanks.

  • Moe Howard January 20, 2011 at 6:54 pm

    Great work! One question about the 74lvc245. The /OE pin is left floating (not grounded) and it seems you want to use it as A input and B output, was this a simple drafting error?

  • admin January 20, 2011 at 6:55 pm

    That’s a drafting error

  • julia May 10, 2011 at 3:49 am

    hai syl.. Can I have a consultation via email? Cause I have a source that I wanna ask.
    Would you mind giving we your email?
    thank you

  • admin May 10, 2011 at 12:08 pm

    I only reply to very specific question. I don’t reply to question like how it’s work, could you make one for me,

    b i b i @ m i c ro Syl.c0m

  • Leonardo June 30, 2011 at 5:29 am

    Hello I have to configure the hard drive in slave?
    Thanks …

  • admin June 30, 2011 at 11:26 am

    It could be done, but I don’t know how it’s make to long time I had written this code

    Sylvain Bissonnette

  • Leonardo June 30, 2011 at 2:28 pm

    Very good project
    I mounted the hard drive but it reads.
    The jumpers on the hard drive is set to slave or master?
    Thank you.

  • admin June 30, 2011 at 2:43 pm

    In Master mode

  • johnny301092 July 12, 2011 at 3:45 pm

    I'm really impressed with your MP3 project. I'm from Croatia and I was looking similiar project on Croatian websites for more than 2 years. I finaly found this website. Thank God!!!
    I'm doing on one project too… 2+1ch AMP (I'm still planning but…I got almost everything I need).
    I came to an idea of making AMP with HDD from which you can play MP3 files.
    My question is : Is ti possible to put smaller LCD (on AMP casing ;without using IR controller)
    Please, if you can, asnwer on my e-mail : 
    Nice work!!!

  • admin July 17, 2011 at 1:21 pm

    Yes you can do this but you need a lot of modification in the code !!! good luck

  • Niitsh November 9, 2011 at 7:03 am

    Hi syl,
          I am completely new to this field and like to design your project , so kindly let me know about a whole programming which i   need in this project!!!!!!!!!
    I hope u'll help me!!!

  • Amir December 2, 2011 at 10:04 am

    Hi !
    Thanks for this good project .

Post comment

Please note

All my source codes were taken from my personal projects.

Everything is for your information only. The C/C++ codes have been written
with ICCAVR. You can find the header and source CRT files by downloading their compiler.

All is for your information and everything is AS IS without any warranty of any kind. No other files are available and I don't make any modification for any body.



Electronic Links


AGC Anemometer AVR AVR Bootloader Bootloader Capacitence Capacitor Clock Color Control DCC Debugger Devices Digital driver Function Generator High Gain Microphone Humidity Inductance Inductor Laser LCD LED 3W Library Lightning Detector MegaLoad Meter Moodlight Mood Light MS5534 Nixie OscilloScope projector Rain Fall Sensor rgb RGB LED Scop Sensor SHT75 Temperature Terminal Tipping Bucket Train Modeling Vintage Water Detector