MP3 Carputer
An old PC I've turned in to an mp3 player for my car...
Development Stage: The Hardware
An old PC
75MHz Pentium I
48MB RAM
80GB Hard Drive (this is new)
Sound Blaster AWE64 ISA Sound Card
Edimax 802.11g Wireless Card (note aerial on cable)
| 
|
LCD module
Blue-backlit negative
HD44780 based
4x16 characters (behaves like 2x32)
Can't remember where I got this but it was about £20
| 
|
Parallel Cable, other parts
Parallel cable with just male end left on
Floppy drive cable
Some terminal blocks (min. 14 connections)
2 1KΩ Potentiometers
internal PC power connector, as shown
|  |
PC software setup
The PC has a clean install of Windows 98. I had to use Seagate's DiscWizard software to overcome the old BIOS's hard drive capacity limitation. I've installed the inpout32 DLL and MySql.
Development Setup
The Development Environment is Visual C++ 6.0, with DirectX9.0 SDK installed.
The project type I started with was "Win32 Console application with MFC support". However, after a few months (years actually) working on it in stages, I realised I needed to change the project type so I could use Windows messages, notably WM_GRAPHNOTIFY which is associated with EC_COMPLETE that lets you know when a song has finished.
So after a lot of reprogramming and getting increasingly frustrated with the 'finer' points of C++ Windows programming I got it going again. The project type I ended up using was "MFC AppWizard(exe) -> Dialog Based".
I'm developing the program on one computer and using a shared folder on the old PC as the compile target in Visual C++, this way I don't have to install loads of stuff on the target PC.
The key to communicating with the LCD through the parallel port is Inpout32.dll, which is installed on the target machine. Inpout32.dll can be found here: www.logix4u.net.
Update: Current Status
I've now got most of the functionality I want implemented and have made a box for the display / potentiometers and had it set up and working in my car.
Current Functionality:
- Plays MP3 and WMA (can play M4A, but they are too processor-intensive for my Pentium 75)
- Play, stop, pause (with fade in/out)
- Browse forward and back in song list, including skip by 10
- Synchronise database with filesystem (loads all filenames in to MySql)
- 'Go to' function where you type the first letter of a song and it takes you to that place in the list
- Next and Back functions to skip to the next song / go back one
- Song and current playing position is stored in database on pause and program exit
- Automatically starts playing last song from correct position on application start, with fade in
- Current position / track duration displayed on LCD when song is playing
- Volume up and down, with percentage display on LCD
- Volume automatically stored in database and loaded on application start
Photos to follow...
Downloads
Visual C++ 6.0 project files
The MySql database structure: phoenix.sql
Note that the database is called phoenix, just because at one point I hadn't worked on it for a while, so it did seem like I was resurrecting it somewhat, hence the phoenix "rising from the ashes".
Wiring/Pinout Diagrams
Word doc with parallel cable pinout and some other information on the parallel cable and interfacing to it from a PC.
parallel cable - connector block - floppy wiring.gif, this is an image showing the wiring between the parallel cable and the floppy cable (via the connector block).
power - connector block - floppy cable.gif, this shows the power connections from the PC in to the connector block and the potentiometers.
contact: