A few months ago I stumbled across the very first Reverse GeoCache project by Mikal Hart. I was fascinated by the idea and decided to build one of my own.
What is a Reverse GeoCache?
Other than with ordinary GeoCaches you do not need to find the box at the target coordinate: You will already have it when the puzzle starts. But the box is closed and it will only open when you are near the target coordinate. In order to find the coordinate, the box has a button: When you press the button, the internal GPS receiver will detect the current location and the distance to the target will be displayed. Of course the number of trials is limited. If you press the button too often, the box will be sealed forever.
Starting the Project:
One of my main goals for the new Reverse GeoCache was to make it much smaller in size. Of course I also wanted to add some new features. I have been working on this project for about four months. After finishing two fully functional prototype versions I now consider it “production/stable”
- Size: 95mm x 73mm x 53mm
- Weight including batteries: 199g
- Maximum payload size: 57mm x 53mm x 9mm
- Power supply: 2 AAA cells
- LCD: 2×16 characters
- Piezo buzzer for some sound feedback
- Each try is logged to the internal EEPROM. By using a secret key combination the logs can be shown on the display. So if you know how to do it, you can see how clever the puzzle was solved (or not). There is also a RS232 output to send the data to a computer.
- Emergency open by software: You can reset the box if you know the key combination (The piezo buzzer was a very important precondition for implementing this feature).
- Emergency open by hardware: You just have to remove four screws to be able to slide off the lid (I assume that none of the recipients will spoil all the fun by opening the box this way)
- The power consumption in sleep mode is about 310uA. 800mAh rechargeable batteries should last for at least about 80 days, assuming many tries with bad GPS reception. Power consumption will drop to about 60..70uA with the next generation of PIC controller, which should result in more than a year of operation.
Some details about circuit and software:
- A highly efficient MAX1674 along with some SMD parts is the step-up converter I am using to increase battery voltage to 5V. The LCD and the servo require this voltage – otherwise I would have preferred 3V3.
- The GPS receiver is taken from a Haicom HI-204 SiRFStar III PS/2. It is the device that draws the greatest current. So I use a BS250 MOSFET to cut the power supply when not needed.
- The LCD and the servo are connected to a second MOSFET, so they can also be powered down.
- The controller is a PIC18F2520. I have started with a much more efficient PIC18F14K22, but it turned out that I needed more program memory to implement all of the cool features. Now I am impatiently waiting for the PIC18F26K22: With its nanoWatt XLP Technology I expect an enormous decrease of power consumption (especially in sleep mode). Also it has some cool new hardware features built in.
- The software is written in C. It used 10kWords of 16kWords available in the PIC.
- The custom PCB has been designed using KiCad. I have used the toner transfer technique to print the board.
What I might implement in future revisions:
- Adding a low battery warning by using the PICs ADC (the LBI feature of the MAX1674 turned out to draw too much current!).
- Allowing reprogramming the target location by key input or via connection to a PC instead of having it compiled in the program code.
- Using the power down feature of the MAX1674 in sleep mode in order to save even more power (requires new controller that works with lower voltages).
- And finally one of the most interesting features IMO: Adding a tiny GSM module to post a SMS each time the device has detected the location.