Several months prior to the annual Berkshire GeoBash Mega Event in Massachusetts (USA), I was contacted to see if I’d be interested in creating a gadget cache for their event. I said “Yes!” of course. I never dreamed it would end up as a top-ten favorited cache in my state.

Once I had accepted, the real pressure started. What kind of cache to make? I keep a list of future gadget caches I’d like to make, and started looking at it. The “Wacky Wire” idea jumped out at me. Most of the ideas I’ve had would fit in a birdhouse style form-factor, but I knew the Wacky Wire cache would need to be bigger. Luckily, the mega event host, Bousquet Ski Resort, had no problem with that.

At first, I was going to use Signal the Frog as the theme, since he is the face of geocaching, and he does visit for the event. About a week later, I realized that I could use a goat instead. A goat has been part of the theming for this mega event the past four years, so I jumped on that idea. I found a simple goat outline that they used in the second year, and based my cache around that.

The Result

The cache page is at https://coord.info/GC6JZ0Q. Because it was launched a week prior to the mega event, a few locals were able to give it a shot before all the attendees. Geocacher bdubs213 was there within an hour after it was published, and recorded his FTF experience!

Video: FTF with bdubs213 and chicken34

The 3videosisters also visited soon after the cache came out and shot a video. They had the extra experience of herding up some animals on their way to the cache. Bousquet Ski Resort sometimes has an animal pen around the woods where this cache is kept – the animals chew back all the vines and invasive species. They are completely fine with people entering the pen to access the cache.

Video: 3videosisters Meet the Goat

There were a few more finds over that first week, and everything went great. It’s only my third gadget cache, so I was happy to see people enjoying the cache without any glitches.

Then the Mega hit. The cache does take a bit of time to open, and a line formed. There seemed to be at least a few people waiting their turn through most of the day. I was nervous the line may sour some people’s experience. Looking at the logs of the cache and event, no one seemed to mind, thankfully. Maybe because the cache was big enough for everyone to watch, it made it more interesting? There was a bit of pressure on each geocacher when it was their turn, since a bunch of people in line were watching.

Many photos were taken, here are a few that geocachers shared with me:

By the end of the day, over two hundred people had logged the cache, and by the end of the week, GC6JZ0Q: Don’t Shock the Goat, was a top-ten favorited cache in Massachusetts. It is still very surreal to me.

That’s how the event went. To learn more about the cache and make your own, keep reading!

Building the Container

My wife has a Cricut paper cutter for her scrapbooking hobby, so I asked to use that to cut out some stencils. The stencil had to be big enough so I could bend a wire of decent thickness/stiffness and have a geocacher be able to move an eyebolt around it, so I decided to make the stencil as big as 4 sheets of paper taped together. I realized that this size would work well on a 2×2′ square of plywood, so all configurations would be based on that size.

I also figured the cache wouldn’t have to be very deep. I played around with some 2x4s, and though that would be deep enough. The battery holder, the latching mechanism, and the cache container would all fit in a 3.5″ deep space, so I decided to stay with the 2x4s for the primary supports. Using existing lumber sizes makes the build go quicker.

The whole thing ended up being 24x24x6″ – bigger than I had originally planned, but it worked out really well. Because it was at a Mega Event, there were always people around it. Being so big, it was easy for people nearby to see how others we doing.

Creating the Circuit

So the idea was pretty simple: one wire was the wand, one was the goat outline, one to start the game, and one to finish it. The wand itself would be the 5V lead, and the others were set to be digital input pins. I would test each of the inputs by touching the wand wire to them to see if they were being used to complete the circuit. It looked something like this (power supply not shown):

It didn’t work. The goat outline, start, and finish pins on the Arduino board would go off randomly, or not at all. I had no idea what was going on. It was time to do some reading.

And then I come across pull-down and pull-up resistors. I have never heard of such a thing before. Apparently, you can’t just leave input pins unconnected, or the values “float”. I may write more about this later. In the end, I connected the input pins to ground across 10K Ω resistors. This was the winning circuit for the wand and input wires wires:

Once that was working, I knew I wanted 3 LEDs and a piezo buzzer to use as indicators of the cachers status and progress, plus a servo motor to open the cache door with. I have used all of these components before, and was able to hook them into the circuit without any problems, except for how confusing the board looked. Remember to use resistors with your LEDs – they cannot handle 5V directly. You can read more about my LED experiments here.

Here is a photo of the inside of the bottom part of the cache, along with a Fritzing diagram, which may be easier to read if you try and duplicate it. I’ve also drawn a cleaner hypothetical version of the circuit diagram (which I have not actually made), which should be much easier to read and build. You will need to change two digital pins in the code to make sure the cache will still work.

Here is a parts list for the final version, along with a rough cost in USD. I have no affiliation with the linked sellers.

Programming the Circuit

I used eight pins for this cache – that might be a new record! I also needed three Boolean (true or false) operators to keep track of where the geocacher was in the process of beating the game. These variables are all commented below. After the variables are all defined, the loop just keeps testing those variables to see if the goat outline wire has been touched, if the game has been restarted, or if it has been won.

Don't Shock the Goat Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 #include <Servo.h> /* * "Don't Shock the Goat" - mimics the "Wacky Wire" carnival game * Released under the Creative Commons Attribution 4.0 International License * https://creativecommons.org/licenses/by/4.0/ * @author Eric Kristoff http://geocaching.hyliston.net * @version 20160703 Created */ boolean started = false ; // Have they started? boolean failed = false ; // Have they touched the goat? boolean success = false ; // Have they beaten the game? Servo myservo ; // servo library variable int pos = 200 ; // servo location in degrees int speaker = 2 ; // speaker pin int green = 6 ; // green LED pin int red = 7 ; // red LED pin int blue = 8 ; // blue LED pin int servo = 3 ; // servo control pin int goat = 4 ; // the goat wire outline pin int start = 11 ; // the green start bolt pin int successful = 12 ; // the blue end bolt pin // NOTE FREQUENCIES #define C3 130.81 #define Db3 138.59 #define D3 146.83 #define Eb3 155.56 #define E3 164.81 #define F3 174.61 #define Gb3 185.00 #define G3 196.00 #define Ab3 207.65 #define LA3 220.00 #define Bb3 233.08 #define B3 246.94 #define C4 261.63 #define Db4 277.18 #define D4 293.66 #define BPM 240 //you can change this value changing all the others #define Q 60000/BPM //quarter 1/4 #define H 2*Q //half 2/4 #define T 3*Q //three quarter 3/4 #define E Q/2 //eighth 1/8 #define S Q/4 // sixteenth 1/16 #define W 4*Q // whole 4/4 // The setup function runs once when you press reset or power the board void setup ( ) { myservo . attach ( servo ) ; myservo . write ( pos ) ; // initialize pins pinMode ( speaker , OUTPUT ) ; pinMode ( green , OUTPUT ) ; pinMode ( red , OUTPUT ) ; pinMode ( blue , OUTPUT ) ; pinMode ( goat , INPUT ) ; pinMode ( start , INPUT ) ; pinMode ( success , INPUT ) ; // blink LEDs digitalWrite ( red , HIGH ) ; digitalWrite ( green , HIGH ) ; digitalWrite ( blue , HIGH ) ; delay ( 1000 ) ; digitalWrite ( red , LOW ) ; digitalWrite ( green , LOW ) ; digitalWrite ( blue , LOW ) ; } // the loop function runs over and over again forever void loop ( ) { // FAIL! touched the goat if ( digitalRead ( goat ) == HIGH && started && ! success && ! failed ) { digitalWrite ( red , HIGH ) ; // turn on red light digitalWrite ( green , LOW ) ; digitalWrite ( blue , LOW ) ; failed = true ; play ( C3 , W ) ; // buzzer noise } // (re)started if ( digitalRead ( start ) == HIGH ) { digitalWrite ( green , HIGH ) ; // turn on green light digitalWrite ( red , LOW ) ; digitalWrite ( blue , LOW ) ; failed = false ; started = true ; success = false ; } // success! if ( digitalRead ( successful ) == HIGH && ! failed && started && ! success ) { digitalWrite ( blue , HIGH ) ; digitalWrite ( red , LOW ) ; digitalWrite ( green , LOW ) ; success = true ; for ( pos = 200 ; pos > 50 ; pos -= 1 ) { // move the servo to open the cache door myservo . write ( pos ) ; delay ( 10 ) ; } // Don't Rock the Boat song play ( F3 , Q ) ; play ( Bb3 , Q ) ; play ( G3 , E ) ; play ( Bb3 , Q ) ; delay ( 200 ) ; play ( F3 , Q ) ; play ( Bb3 , Q ) ; play ( G3 , E ) ; play ( Bb3 , Q ) ; play ( C4 , Q ) ; play ( D4 , Q ) ; for ( pos = 50 ; pos <= 200 ; pos += 1 ) { // reset the servo to the starting position myservo . write ( pos ) ; delay ( 10 ) ; } } } // end loop void play ( long note , int duration ) { tone ( speaker , note , duration ) ; delay ( 1 + duration ) ; }

This cache was themed for the Berkshire Geobash Mega Event, but you could create any wire pattern or outline to meet your needs. So far, this has been my most adaptable gadget cache. Please feel free to take the circuit diagrams and code and create your own variation!