Of course, the first thing that a Linux computer for the car needs is a name. As the computers on my network are all named cat related names (purr, pawz, prowl, catseye, catnip, kinich ahau) a suitable name for the car computer was chosen : Meow.
The next step would be to find a computer small enough to easily build into the trunk of the car. I had initially thought of buying a SFF (small form factor) desktop machine, as it was closest to the size of a trunk-mounted CD changer. I have a machine known as an Iopener, which I originally bought for this purpose, but ended up finding other projects for. A laptop computer was also a good choice, as it's designed to be mobile.
So, one day I get a call at work, Takaza, a good friend has found just such a laptop, and is sending it out my way by special delivery (Thanks for giving a hitchiker a ride Duncan). It just so happens this laptop is a common model, a Dell Lattitude CPi 300. I have one of these at home, that I got at an auction at work (It worked fine, but had cracked case plastics, and non-working caps/numlock lights). It's also the same laptop that my mom has. Excellent, I can use the extra parts from the car computer to repair the one I already own, the remaining parts can go into a box to be used as spare parts to fix mine or my mom's in the future (Spare parts are the key to being a geek, you never know what you'll need).
Somewhere along the way I picked up a docking station for the Latitude, this allowed me to hook into the power button without having to specifically modify the computer itself.
While I now have a working version of the car computer software, I'm of the belief that there's always room for improvement. I will keep updating this page as I add new things.
Power the computer up when ignition is turned on
Monitor the voltage of the battery (prevent draining of the battery if the engine is not running)
Power off with the ignition switch
This one : uSDC20D - Well built, functions perfectly.
20v @ 3A for the laptop (Modified car laptop adapter)
6v @ 1.6A for the USB Hub & GPS
Write a cleaner interface to setting up, and auto-finding WIFI access points.Access point - (play games between cars, link 1 cell phone to all passengers)
Sync files to my home network
USB - To the front of the car, for interfacing with control units, memory cards, etc12v Always On - From the always-on of the radio (fused)
12v Ignition Switched - To tell the Power Module the key is on (fused)Audio - FM Modulator in the trunk, to add a radio station for the computer. Channel 87.7 It broadcasts about 150-200 feet away from the car as well.
|
Debian Linux install
Apache (Webserver)
Configuration of the system
Perl - Brains of the system
Data Hub (Diagram/Notes)
Distributes data to and from seperate system processes. |
|
|
(* designates modules that talk to data_hub)
MP3 player*
Plays mp3's via XMMS |
|
|
GPS Monitor*
Listens to incoming GPS data from GPSD |
|
|
|
|
|
|
|
Speach daemon* (What's the point of having a car computer if it can't talk to you)
Perl wrapper for Flite. |
|
|
Weather
Software to retrieve local weather forcasts based on current position. |
|
I've been busy with other projects lately, so not much has changed on the car computer. Initially I started soldering wires into the laptop, my idea was to bring the power-switch, power-led, serial-port and audio through one cable to my interface-box. So, of course, once I finished wiring all this up, I found a docking station for $5 at a local computer store. On the bottom of the docking station, there are 6 metal pins, it has serial and audio ports. Basically it does everthing I was trying to wire into the laptop. I qlwo picked up 3 more laptops at a work auction (cheap!) These are PII/300's (as opposed to the original 266) and have 128mb of RAM .... score! Swapped one for my mom's 266 laptop, and still have the other 2, one will be turned into the car computer (My motto, develop on the lesser hardware, run on the greater), and the existing car computer will be retired to parts. So, work to do, but great possibilities ahead. I'm going to build a frame to mount in the trunk so that the laptop slides in, connects to the docking station. When I want to take it with me, I just undock it. Sweet!
I have a working but still beta version 1.1b that now uses the data_hub for communications. I am excited by this because it essentially ties all the independantly operaing modules together into a whole. Eventually the GPS module can detect nearby landmarks, and select a song in the mp3 player. The GPS could speak out important landmark names, or play stereo-tones indicating the direction of the landmark. The possibilities open up tremendously with this interlink between the programs, as new applications can be written, and easily tie into existing data sources, and I/O.
Tinkering on and off between October and March I finally have a self-booting, no intervention required car computer. I'm using an uSDC20D startup controller to automatically start and shut down the laptop. It works better than anything I would have taken the time to build. The designer was kind enough to re-program this one for me to operate below 0C so that I can still have tunes during the cold Chicago winters (Laptop lives in the trunk). I mounted everything into the lid of the trunk, out of the way of the storage below. After a brief ... disagreement with the laptop (It wouldn't boot with the lid closed) ... it starts properly. This phase of the development of the car computer is finished, it's offically at ver 1.0.Lots more to add to it before I consider it finished however. I need an interface in the front of the car to control the music more easily. The WIFI network needs to be fleshed out (possibly a card with an antenna jack). But, what I wanted as a computer is already here. My motto has always been "Make it work, then make it pretty."
Scrapped the mpg123 interface, and instead am now using an interface to Xmms. Since Xmms requires and X server to connect to, I installed a VNC X server on :10. I can VNC in and watch what Xmms is doing, while my program mp3_daemonruns the show (playlist, shuffling, playing the next song, interface to the webpage). The Weather interface was upgraded some to improve it's reporting capabilities. MP3 screen got a playlist selector added.Right now the bulk of the software writing is done. There will of course be fine-tuning and new ideas to add. My primary focus at this time will be the car power system. Getting the computer to read the ignition switch, power on automatically, and more importantly shut down on it's own.
Figured out the Targus adapter, and now have 20.00v (Exactly According to my multimenter) coming off of the adapter. I psudo-attached it to the car, and wired it to the cable going to the front of the car (Which right now plugs into the lighter socket. Didn't get MP3's playing because the laptop had the sound muted, and all the wires were in the way. I was too lazy to remove it just for sound. I took a drive to Fry's and back (about an hour each way). The computer locked up at one point (I'm assuming it's power issues as I geek-rigged a power connector from a hot-melt glue stick). I will try running with the battery in the laptop to see if it improves stability, if so I'll drop the $25 on ebay to get a proper connector for the laptop (Or get lazy and solder it in).
Fleshed out the GPS-data mapping program, it looks clean, and navigates like the online-maps. Still only draws the trip, and not the roads/states, but there's always ver 2.0.The mp3 player was re-written. The library I was attempting to use to wrap and control MPG123 didn't work for me, so I re-wrote my own MPG123 daemon. It works well, and the basic web-interface I have can control the basic functionality of playing mp3's (play, stop, pause, next, previous). I'm happy I had to write my own daemon in the end. The old one didn't shuffle correctly, instead it just picked random songs on forward and back, so you could never go back to the previous song, mine can.
Wrote a parser for the NOAA downloadable weather XML files. It's an ugly format, but gives a lot of information. My in-car webpage can now connect to the internet (where available) and download local weather conditions and forcast. Take that weather.com.
I mounted the laptop in the car (Dremel works off my inverter), and a friend gave me a Targus adapter to use for power (Thanks Tybis). I am still figuring out the pinout of this devices 'switchable tips' which appear to contain only a resister to limit the voltage. $.10 for a resistor, or $15+S&H for a new tip....let me think about that.
Part of the car wireing is in place as well, I ran cat5 from the trunk to the dashboard, along with a 3 conductor wire to provide power and 'key on' signal. I have yet to wire it into the electrical system.
To catch everyone up to date:Debian Linux is installed on the development laptop. Re compiled a 2.4.18 kernel to get everything working on the laptop.
Running tgpsd as an interface to my GPS unit, works very well. Conducted my first trial run last weekend (Oct 2nd) on my way to Detroit. You can see a screenshot above of the trip-log, it turned out better than I had hoped for a trial run.
I have written a VERY VERY basic mp3 playing application, which is likely to be erased and re-written as things go.
Tried to mount the laptop in the car today, only to find out my inverter is not powerfull enough to run my drill. Perhaps my dremel will work. Using Heating-pipe mounting straps to hold the computer, and a belt to hold it in place.
Still have to design, test, and install the power connections so I don't need to run off of the inverter.