EchoMp3 v1.4

Get this page as PDF

TechDesign Electronics



The EchoMp3 is a small DIY* MP3 player. It's cheap and of excellent quality.

  • 64, 128, 256, 512MB and 1, 2, 4 GB MMC and SD(HC) cards used as storage.
  • FAT (FAT16) and FAT32 supported.
  • Low power operation with a single AAA (HR03) 1V2 Ni-Mh battery.
  • Runs on a 18LF452 or 18LF458 at 20 MhZ.
  • Up to 256 kBps bitrate at 44,1 kHz supported. VBR may peak at 320 kBps.
  • ID3 v2.3 tags supported.
  • Full user control (volume, track, pause, skip, directory) with a 5-way micro joystick.
  • Real time display of bitrate, sampling rate, elapsed time, songnumber, ...
  • LCD contrast adjustable by user.
  • Directory scrolling and file fragmentation support. Directory depth up to 10 accepted.
  • Shuffle (random play) and extended character set enabled.
  • SDHC (High Capacity) Cards now supported. Here are some compatible cards.
  • New: Serial interface control.
  • High quality stereo DAC with a S/N ratio of typ. 87dB.
  • THD of only 0.1% typ.
  • On/Off pushbutton.
  • Software is 100% upgradeable through an RS232 bootloader connector.
  • Voice Recording in PCM-format with same hardware is now possible! Look here for the source code.

* Do It Yourself.

 Schematic & pcb (Eagle 4.11e), hex file available. Player Software Updated on November 24, 2009.

Discontinued as of Feb.2011. Check out our new EchoMp3 v3.1 instead.

Circuit explanation / Getting started:


PIC18LF45x PLCC   The 18LF452 or 18LF458 has to run at 20 MhZ due to the serial interface with the MMC. PLL cannot be used, cause it only works from 4V2. There's a quarter of ROM-space left for additional applications.
VS1002D:   MP3 decoder chip. Enhanced performance compared to the VS1001K. Sounds great! Future enhancements (equalizer and so on) are possible. Thanks to GBUF, no need for large capacitors at the earphone outputs. The chip also has a recording mode!
MMC/SD   Royalty-free and open source protocol makes this a great memory to work with. Finding a socket was more difficult. Format the card as FAT (FAT16) or FAT32, then copy them (all at once) to the card (with a cardreader.) Directories may be used. Tagging of your MP3 files can be done with Mp3 tag tools (freeware) and Audio Tags Editor (evaluation period.)
LCD   The LPH7779 (Nokia 3310 LCD) does the job. First four lines are for Artist and Song Title. Fifth line is for songnumber and elapsed time. Sixth line shows sample rate, bitrate and total songtime. Contrast of the LCD can adjusted during boot: hold the vol+ or vol- pressed at power up and the contrast will change accordingly; Settings are stored into the onboard EEPROM. Note that the player will also work without any LCD attached.
Controls   With the micro joystick, there are 8 user controls available. Two for volume (up & down) , track (left & right) , pause/play (short enter), skip (long enter) and directory scrolling (short enter, then up/down to scroll,  enter to go to the selected directory.) Shuffle is enabled/disabled during boot (hold right at power up, then release.)

Serial interface: volume (+ & -) , track (b & n) , pause/play (p), goto tracknumber (ex: 14<ENTER> )

Power   On/off pushbutton. The MAX1674 DC-DC step-up converter makes it possible to power the whole circuit from only one AAA battery. Some larger SD cards will not boot with a weak battery though. A 1.5V alkaline battery performs better than a 1.2V NiMh.
PCB:   We used as much SMD-parts as possible. Number of vias reduced to 54, only the bottom pads of the PLCC-socket need to be soldered. The PCB from our shop is a double sided and 100% connection tested PCB with plated-through-hole connections. All holes are drilled already. PCB size = 82 x 45 mm or 3"29 x 1"77.


Schematics: (eagle-file can be downloaded below.)

Full resolution image (GIF format).

Bill of Materials (Parts List:)


Main connections:

VS1002D PIC 18LF45x   MMC/SD PIC 18LF45x  


PIC 18LF45x   LCD-LPH7779 PIC 18LF45x
 SDO  SDI, RC4, pin25    1 - XCS  RA1, pin4    Volume Up / contrast + / Directory scroll up  RE2, pin11    1 - VDD  
 SDI  SDO, RC5, pin26    2 - SDI  RA4, pin7    Volume Down / contrast -/ Directory scroll down  RE1, pin10    2 - SCLK  RD5, pin31
 SCLK  SCK, RC3, pin20    3 - GND      Next Track / Shuffle  RE0, pin9    3 - SDA  RD4, pin30
 XCS  RC2, pin19    4 - VDD      Previous Track  RA5, pin8    4 - D/C  RD1, pin22
 XRESET  RB6, pin43    5 - SCK  RA2, pin5    Pause / Play / Fast Forward (FF)  RD6, pin32    5 - CS  RD3, pin24
       6 - GND            6 - GND  
 DREQ  RB1, pin37    7 - SDO  RA3, pin6          7 - VOUT  
 BSYNC  RB4, pin41                8 - RES  RD2, pin23
 DCLK  RB2, pin38                  
 SDATA  RB3, pin39                  



Downloads: right-click & "save as"

  WARNING: may not be duplicated for any commercial use whatsoever without explicit consent from the author (c) Michel Bavin, TechDesign Electronics.

 Schematic: 020v1420.sch (Eagle 4.11e), June 5, 2005 and (Important: copy these to your \eagle\lbr directory).

 PCB: 020v1420.brd (Eagle 4.11e) June 5, 2005.
 PIC Hex files: (Re)Programming of the PIC can be done via the RS232 bootloader connector (see below) and Tiny PIC bootloader 1.8
  • 020_v1429.HEX (PIC18LF452 @ 20MhZ and VS1002D @ 25MhZ) October 12, 2007.
  • 020_v1430.HEX (PIC18LF452 @ 20MhZ and VS1002D @ 25MhZ) February 8, 2008. SDHC support added.
  • 020_v1431.HEX (PIC18LF452 @ 20MhZ and VS1002D @ 25MhZ) February 11, 2009. More SDHC support, contibution by Ben Stembridge.
  • 020_v1432.HEX (PIC18LF452 @ 20MhZ and VS1002D @ 25MhZ) November 24, 2009. Serial interface control.
 Bootloader PIC Hex file: 18F452_hs20.HEX (only needed for development)
 PIC Source Code: not released, but you can buy a license on this Products page.

Get this page as PDF

Info & datasheet:

PIC18LF452 PLCC44.
VS1002D mp3 decoder LQFP48
ID3 v2.3.0 informal standard.
The private life of MP3 frames.
Kingfont MMC socket SDCMF-10715W111
Graphic LCD module type LPH7779 (NOKIA 3310 LCD) and its integrated controller PCD8544.
MAX1674 DC-DC step-up converter
Player starts playing at boot (ON/OFF pushbutton pressed.) Always on modification: see this post.
RS232 Bootloader (JP2) connector pinout:
  • pin1 (closest to "JP2" print): +5V for RS232 circuit.
  • pin2: PIC RX.
  • pin3: GND for RS232 circuit.
  • pin4: PIC TX .

Look here to build the (very simple) bootloader (RS232 level converter) hardware.

Download the Tiny PIC bootloader from the same site. We are using version 1.8 (Don't use version 1.91)

RS232 controls and  Command set
  • Player control via terminal. (JP2 bootloader/RS232 Level converter/ serial com port @115200 bpS with "type communication") Available commands (in green:)
  • Volume up: u
  • Volume down: d
  • Previous track (back): b
  • Next track: n
  • Pause/Play: p
  • Goto tracknumber (number followed by 0x0d) example: 14<ENTER> or 5<ENTER>


PCB (real size = 82 x 45 mm or 3"29 x 1"77 )


LCD removed



Check out our development tools page.

The PIC code was made with the PCWH CCS compiler ($425,-); you can install Microchip's MPLAB IDE (click on the link and you can get it for free) with it to get things running smoothly.

Programming of the PIC was done with the excellent Tiny PIC bootloader, through the RC6 & RC7 pins. However you will need a regular PIC programmer to write the PIC the first time with...

Eagle 4.11e was used for the schematic & PCB layout. 

Projects Home