GPS Receiver v2

GPS_insideGPS_bodyWhen I first built my GPS receiver over a year ago I was fairly pleased with its performance. After using it more, however, it became obvious that I needed to make some improvements. The following were my biggest problems with the device.

  1. Battery life. The 9V battery and 5VDC regulator combination that powered the receiver wasted a lot of energy in the process of reducing the 9V input to the 5V needed to power the receiver. I wanted to find an alternative power source that could use rechargeable batteries with more capacity.
  2. Build quality of the receiver’s enclosure. I found that the enclosure I had been using was too large to conveniently fit in a backpack with other gear. I also wanted to rewire the device to better utilize wire management techniques inside the enclosure.
  3. Power & Backlight Controls. In my first attempt I used slide switches which, while functional, looked terrible. In my revised build I used push-on-push-off switches. This was an improvement, but they were still poorly placed and could turn on accidentally when pressed against other objects in a pack.

Battery Life

GPS_lidThe solution I found for this problem is actually a project that I’ve built before called the MintyBoost. This ingenious device takes a 2-3V input from 2 AA batteries and boosts it to 5V. While originally intended to charge USB devices such as cell phones or mp3 players, the MintyBoost works perfectly with my GPS receiver and offers a big improvement in convenience and performance. I can now use rechargeable NiMH AA batteries which provide 2000mAh of power, constituting over 300% more capacity than a typical alkaline 9V battery. This should translate into over 12 hours of battery life.

GPSWhile I would normally build a simple circuit like this from scratch, I decided to get MintyBoost kit for this build. Aside from the obvious convenience factor, it also packs the circuit into a much smaller package than I could accomplish on a proto-board. The only changes I made to the kit were that I did not install the female USB connector and its associated pull-up/down resistors since I connected my power wires directly to the board itself.

Build Quality

GPS_topI looked around for a new enclosure with a AA battery compartment, but I couldn’t find one that was the right size, so I decided to use a generic 6x4x2 project box from Radioshack and modify it for my purposes. While somewhat thicker, it is otherwise much smaller and fits better in the hand than my previous enclosure.

Because I need to access the inside of the case every time the batteries have to be changed, I wanted to be able to take the cover off without having to use tools. As with all Radioshack project boxes the cover is normally held on with 4 countersunk Phillips head screws. To allow for hand access, I drilled and tapped the screw holes in the body of the box to accept 6-32 cap screws. These machine screws have a knurled head instead of a screwdriver slot, allowing you to grip the head of the screw with your fingers. This makes removing the cover by hand a breeze.

In addition to modifying the case I also rewired all of the connections from the LCD and GPS module to the main board. This means I now have only 4 wires going from the main board to the lid, allowing me to bundle the wires and secure them with wire ties to the lid and body. Another change I made was mounting the two circuit boards and battery holder to the enclosure with double sided foam tape instead of stand-offs and bolts.

Power & Backlight Controls

To resolve my complaints about the receiver’s controls I decided to change both the placement and type of the switches I used. Instead of the face of the receiver, I moved the controls to the top of the unit. The main idea behind this is that it streamlines the profile of the receiver so that there are no protrusions when it is placed vertically in a backpack, making it less likely that the unit will be turned on accidentally. For the power switch I used a large rocker switch with a fairly stiff action. This switch is both functionally and aesthetically superior to my previous choice. For the backlight control I stuck with a pushbutton, but this time I went with a small momentary version. This was done because I rarely use the backlight and by requiring the user to hold down the button they are more likely to use it sparingly, thereby conserving the battery.

I am very pleased with this latest revision of my GPS receiver. It has always been a fun project and now it is even more capable and robust. Check out the video below for a walk-through and a demonstration of the unit.

Aqua Teen Hunger Force Animated LED Art

athf2athf1On January 31, 2007 Boston was shutdown when pieces of LED artwork that looked like characters from the Cartoon Network show Aqua Teen Hunger Force were mistaken for bombs. Ever since this occurred I have wanted to build my own version to hang up in my apartment.

My version is designed to look like the character Ignignokt; in case you don’t watch the show Ignignokt and Err (his sidekick) are Mooninites (residents of the moon, designed to look like characters from an 8 bit video game) who occasionally come down to Earth to annoy the Aqua Teens. I chose Ignignokt because he is green and blue (Err is purple and blue) and green LEDs are cheaper than purple LEDs. My design used 72 green and 40 blue LEDs.

athf_schematicI got my LEDs from Mouser and I chose them based primarily on their diffusion angle (over 40 degrees), which allows for better viewing angles than other LEDs. In order for an LED array like this to function properly the LEDs must be wired in parallel (ie. all of the cathodes are connected together as well as all of the anodes). I also had to subdivide the LEDs into a group of all of the green LEDs (D6 on the schematic) and all of the blue LEDs (D5 on the schematic). This had to be done because the LEDs were different types and there were more greens than blues, causing the current draw of the groups to be unbalanced. This created a problem where only the green group would light, consequently, I adjusted the resistor values such that I balanced the current drawn by both LED groups. There are also four additional groups to create the effect of Ignignokt giving the finger. These groups are controlled by a PIC16F84A microcontroller which orchestrates the animation of the LEDs. As shown in the schematic, group D1 is the hand and groups D2-D4 are the finger. The code (written in PicBasic) is very simple, involving only turning on specific digital outputs of the PIC for set periods of time. I can power the whole thing off a 9 Volt battery using a power circuit similar to that shown in the schematic for my GPS project (I substituted a 78L05 for the 7805 voltage regulator since this circuit draws less current). Check out the video to see Ignignokt in action.


GPS Receiver

gps1If you have never been to the MAKE Magazine website you should really check it out. They have tons of project ideas on their site and more are posted every day on their project blog. In July I saw an article regarding a project that took a GPS module, a simple LCD display, a Basic Stamp to interface the two together, and created a GPS receiver. The receiver displays your coordinates in degrees, minutes, and seconds.

I was intrigued because for such a complex sounding project it appeared very straightforward and relatively inexpensive. Upon further digging I discovered that this project used a Basic Stamp 2 chip for a processor, along with a Basic Stamp Development Board and software; these together cost around $200, not including the cost for the LCD Display and GPS module (another $100).Then I remembered that the Basic Stamp is actually based off of and very similar to the PIC series of microcontrollers that I had previously worked with in college. After looking at the code provided on the project page, I decided that with a little effort I could convert it for use with a PIC (I used a PIC16F84A, but others can be used, they cost $6).

To program the chip I used the programmer I had from college. Built from a kit, it is USB compatible and has a ZIF socket so you don’t wear out the PIC’s pins pulling it in and out of the socket while troubleshooting your projects. It is not the cheapest programmer available at $85. Many other programmers are available for much less money, or you can build your own. The last item necessary is a BASIC compiler for the PIC. While the Basic Stamp is also programmed using the BASIC computer language (hence the name), the PIC uses a slightly different version called PicBasic. The compiler I used is called PicBasic Pro ($250) which I had from college (there is a cheaper version called PicBasic Compiler for $100); I also found another compiler which offers a free demo. For me, since I already have all of the pieces I need for PIC development it was much cheaper ($6 vs $200) to use a PIC instead of a Basic Stamp. The casual hobbyist should decide which route they want to take since the Stamp ($200 to get started) offers a more user friendly path, while the PIC ($150-$300 to get started depending on programmer and compiler) offers more customization and more processing power.

It took me most of an afternoon to refresh my memory and convert the code from PBASIC to PicBasic. The photo above shows my version of a homebrew GPS receiver using a PIC as I prototyped it on my breadboard. The GPS module has an LED that flashes to show it is acquiring satellite signals (at least 3 are needed for valid GPS data) and is solid once enough connections have been made. Since I plan on putting this project in some sort of handheld enclosure, the LED will no longer be visible. To get around this I added some code which makes use of one of the built-in features of the GPS module. This feature will report back how many satellites have made connections with the module, when this value is below 3 the LCD displays the text “Searching for satellites…”. When the value is above 3 the LCD displays the GPS location data. Overall this project was a lot of fun and a great refresher for me regarding PICs. In part 2 I’ll talk about how I powered this project off of batteries, integrated it into an enclosure, and provide my final schematic and parts list.

Parts List


gps3gps_schematicI previously prototyped my own GPS receiver. Since then I modified a small plastic enclosure to hold the LCD, GPS module and circuit board holding the PIC microcontroller and power circuit. I also added code (see link below) that checks for the state of a switch to determine if you wish to have the LCD’s backlight on or off. I decided to add this feature after measuring the current draw of the receiver as a whole. With the backlight on, the receiver draws an average of 165mA; with the backlight off, the receiver draws an average of 125mA (that’s about a 25% savings). Since the receiver runs off of a single 9 volt battery (alkaline – 600mAh typically), that power savings is equivalent to as much as 72 minutes of additional time the unit will now be able to run. With a lithium 9 volt (1200mAh – typically) it could add another 2 hours and 24 minutes.

gps2The picture on the right shows the receiver as completed; I will be the first to say that it is not the most professional looking, but it works. The switch on the right is for power and the other switch is for the backlight. The center picture shows the 4 possible LCD states: searching with backlight off, searching with backlight on, receiving GPS data with backlight off, and receiving GPS data with backlight on. The last picture is the schematic for the receiver unit.

I did some research and here are some constants that show how useful this unit can be for many different functions.

  • 1 Degree = 60 Nautical Miles (69 Miles)
  • 1 Minute = 1 Nautical Mile (1.15 Miles)
  • 1 Second = 101.2 Feet
  • 0.1 Seconds = 10 Feet

With these relationships and some basic geometry, I can determine distances and directions to and from GPS way points.

This was a really satisfying project to do. With just a handful of parts and a couple of modules I have a fully functional and now portable GPS receiver.

Parts List

  • LCD with backlight (2 lines, 16 characters per line)
  • Parallax GPS Module
  • PIC16F84A
  • 7805 (5 Volt Voltage Regulator)
  • 4700 Ohm Resistor
  • 4 MHz Crystal Oscillator
  • 100uF Electrolytic Capacitor
  • 0.1uF Ceramic Capacitor
  • 9 Volt Battery
  • SPST Switch (power)
  • SPDT Switch (backlight)

gps-revAs you can see in the photo, I got a new frontpanel for my GPS and replaced the two slide switches with push-on-off switches. The left button is for power and the right turns the LCD’s backlight on and off. Since the backlight toggle is performed via a digital input on the PIC I had to modify the circuit slightly by adding a 1M ohm pull-down resistor to the digital input which the pushbutton wires to. This is required because in the previous version the single pole double throw slide switch would either connect the digital input to +5V or ground; since the circuit now uses a single pole single throw pushbutton it cannot perform this same functionality. Therefore, the pull-down resistor grounds the digital input when the switch is not on and then when the switch is turned on its resistance is so high that it is effectively an insulator to ground in comparison to the straight +5V from the power supply circuit.