A low cost GPS Monitor

The purpose of this project is to build a low cost device that can monitor the serial packets generated by a
Trimble Thunderbolt GPS Disciplined Oscillator (GPSDO). 

The intention is to be able to decode either standard NMEA or Trimble TSIP packets and present sufficient information
on a 2 line LCD display to ensure that the receiver is working and under what conditions. 

It is very much work-in-progress, hard hat required before you read the rest of the page :-)

Here is the hardware for my prototype GPS Monitor, based on the following:

Processor is a Silabs C8051F330 mounted on a Toolstick (Ref 1).  You can use the
DIP version of the chip (available at Mouser (Ref 2)) and mount it on a piece of perf board. 
Note: the Toolstick has the advantage of using a less expensive programmer, and it already has a pot that can
be used to adjust the LCD contrast.  I like recycling. 

Development tool is the free SDCC C Compiler (Ref 3). 
I use version 2.6.0 for Win32, which I have saved here, just in case it
would fall out of the Sourceforge repository. 
The current version (August 2013) is 3.3.0, but when I tried version 2.8.0, it would give me errors when
compiling a project I inherited, so for now I will stick with 2.6.0. 

Notes on the SDCC compiler and other 8051 development tools are available here (Ref 7). 

Display is a common 2 lines x 16 characters device available from many places (Ref 4)

Additional hardware requirements are limited:

An unregulated 7-12V @ 50mA power supply (there is a need for both 5V and 3V voltages,
obtained via inexpensive 3 terminal regulators, or one 5V regulator and 3 diodes to drop the 5V down to
~3V for the processor). 

Here is the first prototype.  I installed an LED on P0.7 for troubleshooting.  As of v0.0.4,
the LED only receives very narrow pulses and generates no visible light, but I use it as
a test point for the scope probe. 

The schematic (I have no shame).  The part on the left is the component side of the
Toolstick.  Please note the very elaborate RS-232/TTL converter...

Component side view of the Toolstick and LCD.  I used a 3 terminal voltage regulator for the 5V,
and 3 diodes to drop the 5V down to ~3V for the processor.  I used one of the LCD interface pad as
a holder for the 3V supply to the Toolstick (the LCD is used in 4 bit mode, so data on the other
4 bits is irrelevant.) 

The green LED on the Toolstick is connected to P1.3 and is not currently used by
the firmware as of v0.0.4.  The state of P1.3 is affected by the current LCD driver,
so until this driver is rewritten, that pin cannot be used. 

Here is a picture of the second prototype, intended for a Vacuum Fluorescent display (Noritake,
Ref 6). 

And here is a picture with the display, running:

Here is the schematic of Prototype #2:

The processor used, a C8051F330P, is in a 24 pin package, with 4 pins that are not used. 
That particular device is now obsolete and has been replaced with the C8051F330D (or C8051F330GP), which
is the same processor packaged in a 20 pin package.  The pinout of the P device is available
in Ref 8 and the GP device pinout is available in Ref 9. 

Here is the schematic with the D/GP processor:

Notes:

The 10k potentiometer is only necessary with the LCD display (contrast adjustment). 
The VFD does not have (or need) a contrast adjustment.  It has a brightness adjustment capability
in software.  The GPSMon firmware sets the brightness to "high" by default. 

For firmware version 0.3.3 and above, the GPSMonitor will display Local Time using your time zone
offset by default. 
Therefore, two additional switches shall be added, one between pin 17 and ground,
and one between pin 18 and ground.  Pin 18 is P0.6 and is used to deselect Time Zone Offset (display GPS time)
when grounded. 
Pin 17 is P0.7 and is used to select Daylight Savings Time when grounded.  It has no effect if Time Zone
Offset is not selected. 

Time Zone Offset and GPS Offset are hard coded at this time (version 0.3.3).  I am planning an
upgrade to make this easily programmable, but it is not ready at this time. 

Therefore, for firmware 0.3.3 and above to display GPS time like the original design, pin 18 shall be grounded. 

Finally, here is a picture of both units side by side, in dim light.  Which one do you prefer? 
(to be honest, the LCD is equipped with LED backlighting, which was not connected)

The current state of the project and firmware download info is available in my Wiki (Ref 5). 

And now, just for fun, here is a picture taken by Dan Karg of his GPSMonitor showing the 2008 leap second
(the Thunderbolt was configured to output UTC):

Other source

Someone pointed to me a source of GPS Monitor hardware on eBay.  The seller is fluke.l (note this is the letter "l", not the number "1"). 

I contacted him and he confirmed that he was using my software, in conjunction with overstock display modules. 
He was gracious enough to send me one of his monitors
for the cost of shipping.  The schematic is below:

I believe this is the second version, the first version did not have a voltage regulator. 

In the unit I received from fluke.l, and as other people have reported to me, the three diodes D1-D3 have been replaced with 0 ohm
resistors, which means the processor is powered directly from +5V. This is not good. 
The specification for the part has a max "normal" supply voltage of 3.6V, with an absolute max of 4.2V.

If that is the case in yours, you will need to take your fluke.l monitor apart to replace the jumpers with diodes. 
That requires desoldering the LCD connector.  It is easier to unsolder the pins on the LCD side than on the processor
board, as the holes on the processor board are a little too tight. 

Alternately, if you do not have the desoldering tool necessary for that job, I recommend to just cut the pins,
desolder them one at a time (which can be done with a conventional soldering iron) and replace the pins with bus wire. 
That will be much easier and will minimize the risk of damage to the PWB. 

The C8051F330-GP
is no longer available.  You may find some at brokers, but I recommend using the Toolstick instead. 
If you find the DIP device, you will need to buy a standalone programmer, or buy the small adapter
that plugs in the Base Toolstick adapter to provide a standard JTAG interface.