HOW-TO: Portable car pc

posted Aug 27th 2005 9:30am by Eliot Phillips
filed under: transportation hacks

car pc
Today’s project comes from reader Douglas J. Hickok. A practical, portable car computer design it is intended to be easy to use in the car, but also easily removable.

A practical, portable car computer design
By Douglas J. Hickok


Introduction

What do you think of when I say “car computer”?  An expensive special piece of hardware that’s permanently mounted in a hidden spot in your car?  Probably?  For the last six months, I’ve been designing and building a portable computer.  By portable, I mean it can be plugged in as an ad-hoc server, workstation, media player, or GPS navigator just about anywhere — including my car.  Even though it was designed mostly as a car computer, who said it had to stay in my car?  And at the cost of a typical desktop system, why should it stay on my desk?  Car computers aren’t just for the rich anymore?

This project has broken many “rules” for traditional car computers:

  • It’s not permanently mounted in the car.
  • It doesn’t require (many) special parts or equipment.
  • It doesn’t seem to overheat in hot weather, and fans run quiet.
  • It’s not an electricity hog, and won’t drain the battery.
  • It fits in a tiny car with a weak electrical system.
  • It doesn’t use a DC-DC converter.
  • It doesn’t require a screen (for basic functions).
  • The system is about as cheap as a desktop computer.

What can it do?

  • Runs in my car or anywhere else.
  • Pinpoint my location on a detailed map.
  • Plot waypoints on the same map.
  • Play MP3’s, videos, games, etc.
  • Function as a file server, with only power and USB WiFi connected.
  • Function as a streaming security cam, with USB camera added.
  • Scan for WiFi signals, with or without a screen (audio output).
  • Function as a jukebox without a screen.
  • Anything else a computer can do, anywhere it can get power.

Requirements

From the beginning, I’ve had a long list of requirements for the system.  Most of them have been satisfied or
exceeded, but a few have fallen apart.  I’ll list the unsuccessful ones later, with descriptions of why they
didn’t work out.

General requirements:

  • It has to have style and look cool.
  • It has to fit in my tiny Geo Tracker and not get in the way.
  • It can’t kill my car electrical system or battery.
  • It must be CHEAP because I’m a poor college student!
  • It must be portable so it can be taken out of the car for security.
  • Hardware should take a beating from being moved.
  • Software must be flexible and have many possible functions.
  • Software must stay clean, boot quickly, and run smooth.
  • Software must do GPS mapping.
  • It must be 802.11b/g enabled, and run basic AP finding software.
  • It must play music, movies, games, etc.
  • It must be able to play music, scan WiFi, and execute programs without a screen.
  • It can’t be a distraction while driving.

Ideas that didn’t work out:

  • It must not use a hard drive, so it can be powered off at any time.  The main idea was to boot from a CD and
    use a RAM-Drive.  I could’ve used a Knoppix CD for the wardriving stuff or server stuff, a DOS CD for just
    playing MP3’s with DAMP, or a BartPE (or XPE) CD for anything else that XP can run.  However, a laptop HDD uses
    less power and boots quicker than a CD.  Plus, driver issues killed the idea in the end since I just couldn’t
    get everything I needed to work on all the boot CD’s.  I’ll just have to live with possible data corruption on a
    HDD based system.
  • I will save money by making my own cables.  However, it would’ve taken way too long and would’ve been a lot
    of work.  I saved time and headaches by just buying them.
  • I will make a single plug on the computer for everything in the car.  The idea was good to keep hook-up
    simple and quick, but went down the tubes with the custom wires.  I don’t have many wires to hook up
    anyway.
  • I’ll use an LCD TV because it’s cheaper.  Buying a TV out card and the screen actually isn’t that cheap, and
    the 320×240 resolution sucks, especially when converted from VGA.  I strongly recommend a small LCD monitor with
    VGA inputs so you can read everything at a decent resolution.

Preparing the car

car and me src=”http://www.weblogsinc.com/common/images/8165152273883585.JPG.30122056841462996″ align=”texttop” border=”0″
height=”275″ hspace=”4″ vspace=”4″ width=”425″ />

I drive a soft-top ‘95 Geo Tracker.  It’s a very small vehicle, but has room for four adults if they cram a
bit.  It’s high up so I can see, has 4-wheel drive for the Wisconsin winters, and is very good on gas.  It
has a small electrical system because there aren’t any accessories, with a 55 amp alternator and smaller-than-normal
battery.  The “trunk”, which is a very short space between the back seat and the rear of the car, is just enough
room for an 1800 watt car amp and dual 12″ speaker box.  I have also sacrificed the foot space behind the drivers
seat with emergency gear, so that limits my car to seating three people.  The computer can lie on the seat that’s
unusable anyway.

Comp in car align=”texttop” border=”0″ height=”566″ hspace=”4″ vspace=”4″ width=”425″ />

Space is limited in the front, and I needed to find room for a numeric keypad, a 7″ LCD touchscreen, and a 12 volt
splitter box for my three accessories.  (The GPS, the screen, and the radar detector)  The splitter box fit
nicely in the glove compartment, which now looks like a rats nest of wires.  The keypad can get wedged into a cup
holder or center console compartment.  The screen was a lot more difficult because it just wouldn’t fit nicely
anywhere.  In the end, I wire tied the screen’s included stand to a cardboard box, filled the box with pennies as
a counterweight, and tied the box to the car so it couldn’t fall.  So, it now sits on the top of the dash, in the
middle of the car.  It works well, since everyone in the car can see it.  I need to paint the ugly red box
eventually, but it’s obvious that I wasn’t going for “pretty” since the start of this project.  The best part
about this setup is that I can unplug power and video, unclip the screen, and easily remove it from the car.  I
bought a small padded carrying case that holds the screen and GPS for easy portability, which means I can carry my
entire system into the house with one hand.

car dash align=”texttop” border=”0″ height=”566″ hspace=”4″ vspace=”4″ width=”425″ />

So far, I haven’t mutilated the car.  Is it possible to plug a 400 watt inverter into the 12 volt plug?  The
answer is no, since the computer might pull more than 150 watts and blow the 12v power plug’s 15 amp fuse.  I ran
a wire from the battery, through an in-line 30 amp fuse under the hood, through a dash-mounted switch, to the inverter
that is under the drivers seat.  That was the only real change to the car itself.  It’s a good upgrade
because now I have a 120 volt plug for whatever might need it.

In the end, I estimate that the computer only pulls about 10 amps.  I’ve gone on long trips with fans running,
lights on, computer on, and music on at a decent volume, and the battery didn’t show any signs of being drained. 
If my car can take the load, just about any car out there could take it as well.

Most wires are wire tied into place so they stay out of the way.  The only cable that I use elsewhere is the LCD
VGA cable, but it sits nicely in place and doesn’t need to be wire tied.  I could’ve done a professional job and
hidden all the wires, but that would make hooking it up before driving much more difficult.  Besides, an excessive
amount of visible wiring adds geek points.

System Hardware

Computer leftovers

All of these parts I had around the house…

Motherboard brand, or VIA Technologies, model MV21 (I think) with built in sound, video, and USB.

AMD 900mhz CPU.

512 megs RAM.

40 gig laptop hard drive.

250 watt power supply.

Advice:  Find yourself a motherboard with more built-in stuff, like LAN.  The more the better, and if you
don’t use it you can usually turn it off in the BIOS.

During the initial setup, I had a PCI LAN card and a PCI WiFi card attached to the motherboard, along with a CD drive
plugged into the second IDE slot.  After everything was working, I removed all three items to save on power
consumption.

during setup align=”texttop” border=”0″ height=”466″ hspace=”4″ vspace=”4″ width=”425″ />

The only special cable you will need is a cable to connect the laptop HDD to an IDE slot like a normal HDD. 
There are two versions out there, one is a little conversion board that goes directly on the laptop HDD, and the other
is an actual cable that converts it.  The cable is recommended, because I couldn’t get the board to work
right.  The cable is a much cleaner install anyway.  Either one is less than $15, including shipping.

Finding a case

I wanted something strong, dangerous looking, and all-around hardcore.  I was originally thinking of a suitcase,
but that’s too lame.  So, I went to the army surplus store to see what containers were available.  I was in
luck; there was a $20 small plastic ammo crate that looked perfect.  It’s made to hold 30, 25mm M793-style ammo
rounds, and surely it can hold a computer.  It’s black and covered in yellow lettering, and has a large orange
explosive logo.  Luckily, both ends of the box open, so working inside of it will be a little easier.  Both
doors are heavy and latch shut with a metal lever.

Assembling the computer

First, I had to measure everything and drill about 18 bolt holes.  All the bolt holes are in recessed areas, so
none of the heads will stick out beyond the outer shell of the box.  As the case is lying down, the motherboard is
bolted to the bottom.  The stripped power supply is bolted up-side-down to the top behind the motherboard. 
The hard drive is screwed to the bottom behind the motherboard.  The power plug and power button are on the top by
the explosive logo.  The power button is an arcade button with the HDD LED mounted inside.  For ventilation,
I drilled another 24 holes in the box.  I mounted a case fan on the other side of the explosive logo, which does a
surprisingly good job of cooling the case.  The air cycles quickly because of the small volume the case can
hold.  The rest of the ventilation holes I drilled were in recessed areas in the three other corners away from the
fan.  Finally, I cut a small rectangle in the front for all the vital in-car connections to the motherboard. 
Cooling is very efficient; the CPU and power supply each has dedicated fans blowing past them.  The power supply
fan is right in the middle of the inside.  I had to put it on a hinge so I could get the motherboard back out if
needed.  I have full access to all the connections on the front of the motherboard if I open the front door. 
And, for debugging purposes, I can open up the rear door and connect an IDE CD drive.  The system can’t boot to
anything USB, so it’s difficult to work on when things aren’t booting correctly.  There is room for three PCI
cards if needed, but anything I really need has a USB version.

inside front align=”texttop” border=”0″ height=”213″ hspace=”4″ vspace=”4″ width=”425″ />

inside rear align=”texttop” border=”0″ height=”238″ hspace=”4″ vspace=”4″ width=”425″ />

Screen hunting

I spent a lot of time picking out an ideal LCD screen.  What I ended up buying was a $275 Lilliput 7″ Touchscreen
(model 619GL-70NP/C/T).  It all depends on what you want though, and what will fit into your car.  The
cheapest solution would be an LCD TV, but the resolution isn’t that great.  Another good solution is to buy a
trackball mouse instead of a touchscreen, and a small LCD that handles VGA input.  The trackball can be attached
to the car’s center console in a comfortable place, if there’s room.  I’m happy with the Lilliput because it can
do TV also, if I ever add a DVD player, and comes with a remote control, stylus, detachable stand, 12v car power cable,
110v home power cable, and all the needed cables for PC and TV use.  Even though all you can do is touch the
touchscreen, it can click, double-click, drag & drop, emulate a right click, and even type with the Windows
on-screen keyboard.  It’s quite a powerful input device.

GPS

At the time, the cheapest small GPS unit with data-output was the Garmin Geko 201, at a cost of $115.  Even
though it’s cheap, this unit is great!  It has all the common features in a really small package.  To use the
data-out capabilities, you will need a special cable.  It’s possible to create your own cable, but it was beyond
my capabilities since I didn’t have the right tools for such small projects.  The cable is about $40 at Cabela’s,
and has a serial plug and 12v car plug.  As for reading the data from the GPS, it’s very easy.  The GPS
outputs NMEA strings about every two seconds, which are just comma separated text data.  For more info on NMEA
strings and making your own serial cable, see these sites:

http://www.adonald.btinternet.co.uk/GPS/GPS.htm

http://www.boondog.com/%5Ctutorials%5Cgps%5Cgps.html

If you’re going for cheap and practical, a better alternative is the Garmin GPS 18 with the bundled nRoute software,
or a similar package, for about $120.  This all-in-one package is probably the best idea for all the
non-programmers.

Note: Don’t have your GPS on and connected to the serial port as your computer is booting.  Windows will see it
as a serial mouse and the pointer will jump and click randomly.  (Yeah, it took me a while to figure that one
out.)

WiFi

There are two options for an external WiFi antenna: A PCI card with an external antenna, or a USB device. 
Honestly, I don’t know why everyone chooses the more difficult one, which is a PCI or PCMCIA card with an external
antenna.  Where would I put the antenna?  It won’t stick to the soft-top.  My solution was to purchase
the $40 Linksys WUSB54G and wire tie it to the bar under my soft top.  In my opinion, a USB WiFi device is just as
good as an external antenna.  I also have a USB Netgear MA111 for out-of-car use.

linksys align=”texttop” border=”0″ height=”318″ hspace=”4″ vspace=”4″ width=”425″ />

Physical security

The security of a Geo Tracker is horrible.  If I lock my keys in my car, or if my lock is frozen on the outside,
I can usually break in easily by unzipping the side window, and reaching around to unlock it from the inside.  So,
my physical security is leaving nothing of value in the car.  All CD’s in there are copies of the originals, and
most everything else isn’t worth much.  The car computer and screen always come with me into the house or
hotel.  When I can’t bring it with, a small blanket covers the computer and the LCD screen is removed and hidden
elsewhere in the car.  Why would a thief break into my empty-looking car when there are nicer ones to
target?

System Software

The hardware is nothing without something to control it.  The abilities and limitations of any computer system
depend on the software that runs on it.  Choose software wisely, don’t make things cluttered, and don’t be afraid
to write custom programs to make things go smoother.

OS

Linux is usually a really good choice for projects like this.  However, I had difficulty getting all the drivers
to work.  I also didn’t want to spend a lot of time loading basic software to get everything to work, or removing
extra stuff from a distribution that doesn’t apply to this project.  I had an extra copy of Windows 2000, so I
installed it.  With minimal effort, everything just works.  I went through the basic steps to secure it,
patch it, and make it run smooth.  After I loaded all my custom software, it was great!

Software

My currently used software:

Stuff I wrote:

  • CarGPS – Works with GPS and tracks where I’m at on a map.
  • MapGen – Generates new maps from cached images.
  • ScreenDimmer – Dims the screen for nighttime use.
  • AudioControl – USB number pad controlled jukebox, etc.

Other programs I didn’t write:

  • NetStumbler – Scan for WiFi.
  • UltraVNC – For remote controlling the box over HTTP.
  • Http File Server 1.6a – Just for serving files.
  • CoffeeCup Webcam – For a security cam, etc.
  • Tftpd32 – TFTP and DHCP servers.

Usable without a screen

If I just want music for a shorter trip, I only need to bring the computer itself.  I plug in power, sound, and
a USB number pad.  I wrote a program (AudioControl) that uses the Media Player control to play music, and a
Text2Speech control to verbalize what I’m doing, both of which are built-in to Windows.  The entire program is
controlled with the number pad, and outputs only sound.  The program has three modes: music player, library
browser, and script browser.  The music player gives me basic control over the media player, like play, pause, and
next track.  The library browser lets me browse my music directories and add music to my current playlist. 
The script browser executes programs like Netstumbler, for audio output of WiFi signals, or batch files that can
auto-generate a playlist or do other tasks.

An example IO session, where I add and play one genre of music, is as follows:  (Number pad input is in brackets,
and sound output is in quotes and spoken with the default Microsoft Sam voice.)

“Audio control” [0] “Directory browser” [.] “Playlist deleted” [6] “Doug’s music” [2] “Browsing Doug’s music” [6]
“Electronic” [6] “Industrial” [2] “Browsing industrial” [enter] “Adding to playlist” [0] “Script browser” [0]
“Shutdown” [0] “Music player” [*] And the music starts playing in random order.

The mapping problem

Programs that do mapping are surprisingly expensive, plus they charge about $100 per state map.  They look really
nice and useful, but are way too bloated for a 7-inch screen.  As a savvy Computer Science student, I quickly
decided to write my own.  A few days later I had something that worked perfectly for my system.

map full align=”texttop” border=”0″ height=”318″ hspace=”4″ vspace=”4″ width=”425″ />

Doing good mapping is surprisingly challenging.  You can’t just take a huge map of the earth and expect it to
work.  Maps are just flat pictures, and the GPS only outputs numbers resembling your location.  Those two
things are completely different, because the earth is round and the map is flat.  Maps that are too big are
difficult to calibrate correctly, and maps that are too small aren’t very useful.

So here’s what I did:  Use pictures as maps, and save a small data file with two calibration points for each
map.  The calibration points contain the GPS coordinates and respective pixel values for a specific point on the
map/picture.  Using this relationship, you can calculate the pixel value for any given GPS coordinate.

So where are those free maps I keep using?  I originally scanned paper maps, but found a much better free source:
Google Maps.  Since I’m using the maps for personal use only, and for planning purposes (to get to places), then
it should all be OK by the Google TOS.  I created a program (MapGen) to generate large, 7680 x 7680 pixels,
detailed maps from my cached images.  Calibration is easy since it’s at the same zoom level; I only need one point
to get the map on track, and the other point is calculated based on previous maps the same size.  Because of this,
I can calibrate new maps on-the-fly by centering the map on my current location and pressing a button.

map panel align=”texttop” border=”0″ height=”480″ hspace=”4″ vspace=”4″ width=”425″ />

Since all nearby images are cached, and the program handles all the math and map plotting, I don’t need the internet
to figure out where I’m traveling.  For a really long trip though, I might need to cache a few more
images.

End Result

In car use

Everything is running smooth.  On vacations, I never get lost and can drive with confidence.  Also, I can
take as many digital pictures as I want and empty the camera onto the car computer when it’s full.  Recently, one
of my favorite hobbies is Geocaching, which the mapping works great for.  I can add a geocache as a waypoint, and
the program plots it on the map.  After I drive as close as I can, I can just remove the GPS and find the
cache.  Marking turns on the map is useful too, so I don’t miss them.  If the passenger is bored, they can
watch a movie or play games.  My girlfriend, Amanda, loves it!  And of course, I can always have music in the
background, or let it find new WiFi access points.

Out of car use

Hooking up the system to an existing network is very easy.  All I need is a power plug, and the USB network
interface.  I have a USB NIC, but normally I use the Netgear MA111 wireless which is long enough to poke outside
the box.  By default, the box will grab an IP from DHCP and UltraVNC will start listening for remote
control.  If I need a full computer setup, I can grab the LCD touchscreen, it’s cable, and the keyboard from my
car.  Plugging it all together gives me a small workstation for a hotel network, or another desktop computer at
home.

comp minimal align=”texttop” border=”0″ height=”566″ hspace=”4″ vspace=”4″ width=”425″ />

Future Upgrades

Keylogger

Not to log keys, but to catch and swap keys before Windows sees them.  It would be really handy to use the USB
number pad to do window switching (alt+tab), open the start menu (control+esc), close the active program (alt+F4), type
text like cell phones, and many other things.  Since the number pad doesn’t have those keys, I need to do some
swapping at a low level in the OS.

DIP Switches

It would be nice to tell the computer what it should do on boot-up.  Should it be a DHCP server or grab an
IP?  Should it start the file server program or the GPS mapping program?  Since I might not have any IO
devices hooked up at the time, I would like it to read the settings from DIP switches and act accordingly.

Directions

With future additions to my GPS program, it will be able to say something through the Text2Speech control when it
comes near a specific GPS coordinate or picture pixel value.  I can plan out my route and list all these spots in
a text file, and the system will say stuff like “turn right on highway 56″ as I approach it.

Better mapping

The mapping program can always use improvements.  I’d like it to handle bigger maps, have smoother zooming, more
features, etc.  I also want an easier way to generate good maps, and a larger cache of source maps. 
Minimizing clicks and adding automation is a task that can never be finished.

Auto-volume

My soft-top is noisy when it’s going fast, which is why I got a large audio amp.  However, slowing down for towns
always makes the music too loud, and speeding back up makes the car too noisy to hear the music.  Since the GPS
knows my current speed, I’d like to interface it with the audio program to make the volume auto-adjust depending on how
fast I’m going.

System Review/Recommendations

If you would like to give this project a try, here are my basic recommendations:

Older computer parts, ~$250.

Any small case you can find.

Car inverter (400 watt), $40.

Linksys WUSB54G WiFi, $40.

VGA LCD Touchscreen, $275.

…or…

VGA LCD and a trackball mouse for < $200.

…or…

Write a control program and only use audio output.

Garmin Geko 201 GPS ($115) and the cable ($40).

…or…

Garmin GPS 18 with the bundled nRoute software, $120 or more.

Plus many little expenses for stuff…

Be creative, have fun, and good luck!

Recent Posts



Reader Comments

Leave a Reply

Hack a Day serves up fresh hacks each day, every day from around the web and a special How-To hack each week.

Send us your hacks











Hacks

Resources

RSS newsfeeds

Powered by WordPress

Most commented on (30 days)

Recent comments