YARG (Yet another reverse geocache)

As a geocacher of several years, I was intrigued to read Mikal’s article about his reverse geocache.


It’s been many years since I built any amateur electronics, but the article reignited an interest, so off I went.

And quite a steep learning curve it was. The puzzle box description was the first time I’d even heard of an Arduino, let alone programmed one. Luckily, I have done quite a bit of programming in the past, so with a board and a starter kit, I set to work figuring out what it could do.

To cut a long story short, and it involved about 6 weeks of drilling, gluing, code hacking and head scratching, the time came for a live test. Unfortunately, this coincided with one of the coldest spells of weather in this country for years. However, after many happy hours spent wandering a frozen field 6 inches deep in snow trying to figure out “what the $%^&*! is it doing now?”, most of the bugs are now shaken out.

My box differs somewhat from the original; I freely admit to copying the basic idea, but have introduced some features of my own.

This is how it works. The box has two locks, one combination, one normal key type, an on/off button and a display. The key is locked in the holder on the side (geocaching micro hunters will recognise the container used!). The aim of the game is to press the button, read a clue from the display and figure out one or more locations to visit to unlock the box.

There can be up to 4 puzzle types, individually or as a series: (i) a distance from the target, (ii) a bearing, (iii) “warmer” or “colder” and (iv) a set of coordinates to go to. Type (iii) was suggested by my daughter and is a real b$%^&*! to solve out in the field; it’s almost impossible over a large distance.

The trick then is to use map, compass, triangulation, or whatever, to work out where to go. When you get within a pre-programmed distance of the target, the box does one of 3 possible things: (a) shows coordinates for a new location, (b) displays the combination, (c) releases the key.

As with the original, each press of the button loses you a life. If the number of lives reaches zero, then the box is locked forever. Also, it’s no good switching on and then walking around watching the display - it only shows one message. For example, with the distance puzzle, you are shown the current distance from the target, but moving closer or further has no effect on the display. You have to switch off and on again, losing 1 life, to get the next reading.

In fact, there is also a programmable “ease” factor. This means that when you get within a certain distance of the target, the display can switch to continuous mode. The “ease” distance can be large, to make an easy puzzle, or zero to drive you crazy. The closeness you have to get to the target is also programmable, and can be as low as 5 metres.

Unlike the original design my box is a plastic Peli case. The idea was to have something fairly weatherproof, but in the end I drilled so many holes in it, it would probably make a good colander. Another problem is that polypropylene is almost impossible to glue. I had to get some special 2-part resin from Germany to fix the display window on, and ended up with a rather sticky mess. At least it should cope with a few raindrops, though probably not a plunge in the river.

Another change, and this took about 4 weekends of programming effort, was to make the puzzles fully programmable without needing a PC. So you can reset the coordinates, change the number and order of puzzles, and specify how close you have to be to each target for the box to judge you successful. All this is achieved through a couple of push buttons. For mark 2, I will place the buttons where they can actually be reached.

I’ll put in some photo links shortly. The project is now as debugged as it’s likely to get. During construction, I only destroyed 1 LCD display and the “congratulations, you made it” buzzer. In any event, the box is so soundproof, you could hardly hear it anyway.

Thanks, Mikal, for the inspiration. It’s been a fun project.

Pics here: