The Traveling Geocache using Arduino

Traveling Geocache

This project and future projects can be found at my website  where you can also find my blog.
Easy FTDI USB interface hardware explained in step 10
Easy FTDI USB interface programming explained in step 13
NEW code uploaded works perfectly with speaker output! see step 13

For those not familiar with geocaching, it is a wonderful treasure hunt/ adventure game for grownups and kids! Traditionally one finds a set of coordinates and cryptic clues on a website that hosts geocache locations. Using a hand held GPS device, one simply tromps off into the wilderness (or busy city intersection) and uses the power of observation and clue solving to find a hidden box usually with a prize inside! This is loads of fun and free! Geocache

The Traveling Geocache still requires the user to get to a specific set of GPS coordinates but the hand held device is replaced by the Traveling Geocache itself. It is a locked box with an LCD display and one button. Upon pressing the button an intro screen welcomes the user to the Traveling Geocache and then displays the distance in kilometers from the target location. If the distance is larger than the programmed margin of error radius, the LCD informs you that access is denied. The box will not unlock until it is brought to the correct location! This is a great way to give a present to a friend or loved one. You can put tickets inside and set the magic location to the museum, aquarium, stadium, train station (DO NOT set a location that requires plane travel! Unopenable homemade electronic boxes are not welcome at airport security!). Any prize will do. Because the box is intended for a specific person, the prize can be far more special than in a traditional geocache.

Apart from the prize, the box also contains a log book where recipients can sign their names and write messages. There is also a usb drive with information on all of the electronics and software. This enables the recipient to reprogram the box, change the destination, customize the LCD messages, replace the prize, and re-gift the box to another friend, loved one, or trustworthy stranger. You can even leave a url somewhere inside the box where users can enter their names and destination locations enabling every user to track the life of the box!

This was my first time using GPS and LCD modules as well as my first time working with relays. Don’t worry about the learning curve if you can already make a light blink on the arduino.

Thanks to sparkfun and instructables for holding the microcontroller contest. It really motivated me to document and post my first ever instructable! If you like it, please rate and vote for this project!

Please leave comments! =)

Step 1: Private Property Rights are Upheld by Police with Guns

Despite our dreams of open source communism, capitalism is still a reality. With that in mind here is some info on intellectual property involved in this project.

This project was inspired by Mikal Hart’s “Reverse Geocache Puzzle Box” He has been wonderful about providing information on his design. Please note: “Reverse Geocache” and “Reverse Geocache Puzzle Box” are trademarked intellectual property of Mikal Hart. If you think that is uncool, he DOES have all the wiring diagrams and software available for free as long as you are not profiting off of them. He did after all write several arduino libraries for the program.

The original reverse geocache:

Build instructions for the original Reverse Geocache:

Other Acknowledgements:

Thanks to lady ada for all her super helpful tutorials!

Thanks to sparkfun for keeping up the Free Day tradition. I got my very first atmega328 with my 10 free day dollars (YES, I actually made it onto their site on free day!)

Thank you as well to RickP on the arduino forums for help with the relay switch design.

Arduino Traveling Geocache circuit

Step 2: Materials + Tools

Sparkfun Electronics is a good place to get most of what you need

List of Tools:

Soldering Iron
Wire cutters + strippers
Hot Glue gun

List of Materials:

Cool looking box



Arduino (you need to get one with a through hole chip. The surface mount SMD version of the arduino UNO will not work)

atmega328 chip or

28 pin dip socket (for atmega328)

perf board


1N4004 or any 1N400X diode (you can get these at radioshack)

Momentary switch

330Ohm resistor

10KOhm resistor

10k Ohm trim pot

22pf Capacitors (2)

16MHz crystal

22 gauge solid core wire (multiple colors help a lot)

standard servo

gps module

LCD (I used a 16X2)

5 volt relay

4 AA battery holder

4 AA batteries

female headers

male headers

scrap wood

large nail or metal bar

eye hooks (3)

usb stick



Step 3: Cutting the Box

This picture is of the first box I attempted to cut. This is the correct pattern but I cut the LCD hole too large! Always cut a smaller hole than you think you will need and work from there. I found it easiest to use a dremel but use whatever you like.

Now is also a good time to set four screws into the bottom of your box to act as legs. Later on, we will use two of these for a secret back door entrance into the box!

Step 4: Breadboard Arduino

Here is all the info from the arduino website :

If you bought an Atmega328 with the bootloader already installed, simply follow the second half of this step. If you have a blank chip, please follow the entire step.

Burning the BootloaderIf you have a new ATmega328 (or ATmega168), you’ll need to burn the bootloader onto it. You can do this using an Arduino board as an in-system program (ISP). If the microcontroller already has the bootloader on it (e.g. because you took it out of an Arduino board or ordered an already-bootloaded ATmega), you can skip this section.

To burn the bootloader, follow these steps:

  1.  Upload the ArduinoISP sketch onto your Arduino board. (You’ll need to select the board and serial port from the Tools menu that correspond to your board.)
  2.  Wire up the Arduino board and microcontroller as shown in the diagram to the right.
  3.  Select “Arduino Duemilanove or Nano w/ ATmega328” from the Tools > Board menu. (Or “ATmega328 on a breadboard (8 MHz internal clock)” if using the minimal configuration described below.)
  4.  Run Tools > Burn Bootloader > w/ Arduino as ISP.

You should only need to burn the bootloader once. After you’ve done so, you can remove the jumper wires connected to pins 10, 11, 12, and 13 of the Arduino board.”


Read more: The Traveling Geocache using Arduino

Leave a Comment

Your email address will not be published. Required fields are marked *