Car Monitor Display Ver. 1.0 (a.k.a. "carmondi")
Back
Latest Update: April 11, 2004
Related project: Car Monitor (a.k.a. "carmon")
What is it?
- Carmondi is designed to display the vital information contained in a GPS stream.
The data displayed is: speed (in km/h), heading (in degrees), altitude (in meters) and
the number of satellites locked.
What does it consist of?
- Carmondi consists of 4 major components:
- 16F628 4MHz PIC Microcontroller
- 2x12 Character HD44780 Compatible LCD
- A subset of LCD routines from Adam Davis
- Firmware for the PIC: Programmed in C using PICCLite from HiTech
Obviously other support components are required, including a variety of passive components, and a MAXIM rs232
level convertor chip. Please see schematic for components required.
A way to get a programmed PIC is also required. If you have or have access to a programmer a HEX file can be found below.
If on the other hand you have no access to a programmer a preprogrammed PIC can be purchased from me. Please
click here for further details.
What does it do?
- On powerup, Carmondi displays a couple banner pages and then sits in a loop waiting
for valid data to arrive from the GPS unit.
Inside carmondi's interrupt service routine (ISR) is a state machine that looks for two lines of interest contained in
the GPS stream arriving through the serial port:
- The $GPRMC sentence - contains heading and speed information
- The $GPGGA sentence - contains altitude and number of satellites currently connected to
The state machine has two branches, one for each supported sentence.
Operation of the state machine after detecting a valid sentence is nearly identical for both branches:
- the state machine confirms it is the correct sentence
- it then counts comma characters until the "valid" field is reached
- it checks the valid field to determine if the fix is valid.
A GPS unit will not make this field show valid
until it has aquired enough satellites to get a proper fix. If the fix is not valid the state machine aborts
- the state machine continues to count comma characters until it hits the required fields for speed (in knots),
heading, altitude and satellite count
- it collects the data into storage, sets a flag, and finally resets to base state
Outside of the interrupt service routine is an infinite loop that checks a flag to determine if the ISR is
signalling a new set of data, if so it processes the data (which consists of formating the data into the
right positions to be displayed on the LCD, and in the case of speed, also converts from knots to km/h).
Finally, with the data processed, and properly formatted, it is printed out on the LCD.
Enough already! Show me the files...
- Links to the files are as follows:
And now, some pretty pictures
- Schematic, please click on image to open full res version

- Image of the topside of the board

- Image of the underside of the board

- Image of the underside of the board, rs232 port side

- Image of the LCD connector

- Image of the LCD mounted on car dash panel, front view

- Image of the LCD mounted on car dash panel, rear view

- Image of the LCD mounted on car dash panel connected to carmondi

- NEW! Pictures of power up sequence


Video of following image

- NEW! Picture and video of operating screen

- NEW! Picture of view from passenger seat

Miscellanous/Loose Ends
- The project is now in the car. Testing will commence for a while, so far no oddities noticed
Latest Notes/Updates
-
April 11, 2004 - I added a few more pictures
of carmondi actually operating in the car.
-
April 10, 2004 - Upon out of car final testing it was noticed that speeds between 100 and 109.9
were not being displayed properly (the tens digit was blank).
Found a bug in the software and corrected it.
- Please check back from time to time for updates.
Resources
- Obviously, to do a project like this requires quite a few resources, below are a few I used:
- PICLIST - The PICLIST is a email based mailing list consisting of nearly 2000 people. Think of it as
a PIC centered think-tank: a group of individuals that have probably seen most of the problems encountered while working with
PICs and are eager to help others in solving those problems. I'm a co-admin of the list.
- Microchip.com - The manufacturer of the PIC Microcontroller line. A great product, a great company.
Can't really do anything with a PIC without referencing one of their datasheets or app notes.
- HI-TECH - Manufacturer of the PICCLite C compiler used for this project. Kudos to them for
releasing a version of their compiler for free use. If I were doing this sort of thing more, (and had the money) I'd likely buy their
full version. A direct link to PICCLite C can be found here (It's kind
of hard to find if you don't know where to look).
- Adam Davis - Electronics - LCD - The place I got the
routines for writing to the LCD (which I slightly modified for my purposes), very useful site.
- Electronics Goldmine - The place I got the 2x12
character LCD module.
- iTRAX02 Evalutation Kit PDF - Might not sound so from the title, but a
great reference for NMEA GPS sentence formats and definitions.
Question? Comments?
Please note:
All contents on this site remain the property of myself (with exception of the LCD rouines in the PIC firmware which are property of Adam Davis).
Please feel
free to use the information found here in "one off", personal, hobbiest type projects.
No permission is granted for using the information on this site in commercial type projects.
Please contact me at webmaster@farcite.net about using any
of the contents on this site in a commercial application.
Copyright 2004, Herbert Graf. All rights reserved.
Back
Last update:
Sunday, April 11, 2004