Introduction: Create an Electronic Puzzle Box
In 2013, 24 teams of advanced puzzle enthusiasts met in Washington DC for a three day puzzle hunt known as "The Famine Game." http://www.thefaminegame.com
Teams spent the weekend rushing to various DC locations where they would find puzzle to be solved. Each puzzle had as its answer a phrase that could be entered into an app to find out the location of the next puzzle.
I had the honor to collaborate on the design of and implement one of the 70+ puzzles during this event. A puzzle known as XBOX.
Players arriving at the xbox station were presented with a wooden cube made of laser cut plywood. On the top of the cube was a toggle switch, a numeric display, and a recessed button. On various sides were screws and holes with sensors. On all six sides were blocks of cryptographic text burned into the wood. Puzzlers were handed a cube with no further instructions. Figuring out how to get the next code phrase out the box was part of the puzzle.
This instructable will describe how to recreate this device. People wishing to solve the puzzle themselves (if they can get their hands on one) should read no further, nor should they watch this video, which shows the solution.
Read on to learn what you will need to make this puzzle...
Step 1: Required Materials
The electronics in this puzzle are based on a custom circuit board that emulates an arduino. I made this board to save on cost and to get exactly the features I needed without paying for any I didn't. If you are just making one of these devices the cost savings will be minimal or even negative, and the complexity is considerably greater. So a perfectly acceptable option would be to just use an arduino for much of the electronics. Throughout this guide I will point out the differences between these two approaches. There are a few options you will have do decide between, so you should read all of this guide before ordering any parts; to better understand what choices to make.
You will need the following tools:
- Soldering iron
- Dremel or other tool to cut and shape the enclosure if needed
- Diagonal cutters
- Hot glue gun (if gluing the enclosure together)
- Vice or Helping Hands to hold the board while soldering (optional, but recommended)
- Multimeter (for testing the circuit before applying live power)
- Access to a laser cutter for creating the box sides
- Shears or strong scissors to cut apart custom board
Common components needed for both arduino and original version (prices in $US):
|1||Mouser||Tilt switch *||-- 1 X $1.12= $1.12|
|1||Mouser||Temperature sensor||-- 1 X $0.34= $0.34|
|2||Mouser||10K ohm resistor ***||-- 2 X $0.16= $0.32|
|1||Mouser||100 ohm resistor||-- 1 X $0.16= $0.16|
|2||Mouser||mini button **||-- 2 X $0.25= $0.50|
|1||Mouser||Phototransistor ***||-- 1 X $0.47= $0.47|
|1||Mouser||Buzzer *||-- 1 X $2.33= $2.33|
|1||Mouser||Magnetic reed switch****||-- 1 X $0.59= $0.59|
|1||Mouser||4 AA battery holder*****||-- 1 X $1.22= $1.22|
|1||Mouser||red 7 segment display||-- 1 X $1.09= $1.09|
* untested replacement for obsolete part used in the original.
** only one needed for arduino version.
*** Board has support for two light sensors, only one was used in final puzzle. Add one more if you want both light sensors.
**** This is a very fragile part, you might want to order extras.
***** This can be replaced by a 9 volt battery clip.
Additional items for Arduino version:
An arduino :)
Electronics for original version:
|1||Mouser||16Mhz crystal||-- 1 X $0.36= $0.36|
|1||Mouser||ATMEGA 328 OR...*||-- 1 X $3.35= $3.35|
|1||Adafruit||... ATMEGA 328|
|-- 1 X $5.95= $5.95|
|1||Mouser||2x14 socket||-- 1 X $0.65= $0.65|
|1||Mouser||2x3 pin header**||-- 1 X $0.23= $0.23|
|1||Mouser||LDO Voltage regulator||-- 1 X $0.52= $0.52|
|2||Mouser||18pF ceramic capacitor||-- 2 X $0.08= $0.16|
|1||Mouser||0.1uF capacitor||-- 1 X $0.08= $0.08|
|1||Mouser||1x6 pin header***||-- 1 X $0.47= $0.47|
|2||Mouser||1uF capacitor||-- 2 X $0.06= $0.18|
* one or the other. Order the version with a bootloader to simplify programming substantially.
** optional, only needed if using AVR programmer.
*** Optional, only if programming via FTDI cable.
- Solder and soldering iron.
- 22AWG hookup Wire (multiple colors will make it easier)
- The attached zip file which includes all the files needed.
- Wood for enclosure (see next step)
- 4 #4 3/4" wood screws to hold on the bottom of the box.
- 9 #4 1/2" machine screws with nuts to attach various components. One of them should be different in some visible way. In the original puzzle they were all flat head screws except for one Philips head.
- 4 #4 1/8" nylon spacers to hold the board away from the box.
- a SPDT (single pole, double throw) mini-toggle switch for the power switch power. I get mine from ebay.
- The custom circuit board if not using an arduino. See later steps for instructions on getting the board.
For testing and hacking and depending on how you will program the chip on the custom board:
- AVR programmer (like the USBtiny)
- or another arduino
- or an FTDI converter and a preprogrammed atmega328P with a bootloader already on it
Up next, how to make the enclosure...
Step 2: Creating the Enclosure
The original puzzle cube was made out of laser cut plywood. The laser cutter allowed for creating a box that was easy to assemble and also engraved the clues on the faces of the cube.
Replacing the box with something else is the easiest way to customize this puzzle. An existing box could be modified to hold the electronics. The cube could be cut out of plexiglass or other materials. The ciphertext could be replaced with easier or harder clues. The clues on each of the sides could be replaced with entirely different clues, as long as they matched the sensor associated with that side.
Attached to this step is the SVG file used to drive the laser cutter. If you don't have access to a laser cutter, you could use a service like ponoko, making appropriate changes to the SVG file to conform with their template.
The lines in the SVG file show the laser where to cut, using color to indicate different settings. The black lines are the outlines, and thus should be cut all the way through. The blue lines are also to be cut all the way through. The red lines are text that should be engraved. So to convert it for use with ponoko for example, you would change the black and blue lines to blue (cut), and leave the red lines alone (engrave).
The wood I used was some cheap 3/16ths inch (advertised as 7/32, really a bit less than 5mm at .1875 inches) plywood that I cut up into 12 X 16 inch sections. Each one of those sections was enough for two cubes.
Knowing the width of the wood is key, because the depth of the teeth on the sides must match the width of the wood. If it doesn't, the teeth will stick out too far or not enough.
If you are using wood that is anything other than 5mm, you will need to replace the black outlines with newly generated ones. I used this tabbed box maker plugin to inkscape to generate the outlines, but there are also numerous online tools to do the same thing. The original cube had 3.3 inch sides on the INSIDE but of course the dimensions of your cube just need to be big enough to fit your electronics, and small enough to be cut on the laser cutter. The settings used with the plugin to create the original cube were "3.3x3.3x3.3 inside, .38 tabs, .1875 thickness, .005 kerf, .003 clearance."
Putting the laser cut cubes together is trivial, and a little hot glue laid upon the edges of the panels keeps them from falling apart. The bottom panel is screwed on using wood screws in the guide holes cut by the laser.
Now it's time to consider how to program the microchip...
Step 3: Programming the Device
This puzzle is built around an ATMEGA328 microcontroller, the same chip that powers the arduino which the device emulates. The microcontroller must be programmed to monitor various inputs connected to sensors, and output to the buzzer and display. The sketch (program) that does this is in the zip file provided in the "needed materials" step, in a folder called "arduino".
There are several options for programming the device. Some of them require a partially assembled device, so the actual programming might happen at a later step; but in the interest of presenting a clear choice, they will be listed here, in order of complexity.
No matter which approach you use, the programming step provides another opportunity to customize the puzzle. Near the top of the sketch are variables that define to which pins the various sensors are connected. If you wanted to change the sensors to (for example) add another light sensor, this is where you would do it.
In the section labeled "tune-able values" you will find the two variables you will most likely want to change. The word that has to be entered ("char message"), and the phase that the device will display once the puzzle is solved ("char codeword"). Change these to any lower case word or phrase. The codeword can have no spaces. When choosing either word, bear in mind that some of the letters don't look very good when forced onto a 7 segment display. I would stay away from W and X for example.
char message = "the red ring of death"; // message and codeword must be all lower case or numbers. <br>int maxwrong = 300; // number of times they can guess wrong without resetting char codeword = "forceful"; // 6 15 18 3 5 6 21 12 - 4+2 8+4+2+1 16+2 1+2 4+1 4+2 16+4+1 8+4 - f=m+w o=l+m+w+t r=c+w c=t+w e=m+t f=m+w u=c+m+t l=l+m
Once you have made any changes, you are ready to program the device using one of these methods.
Build the device around an arduino
By far the easiest choice is to simply use an arduino as the base of the device instead of the custom circuit board. I highly recommend this path which will simplify a lot of things. To program it you just need to download the sketch. Instructions on getting started with arduinos can be found here. If the descriptions of any of the other options make you nervous, go with this option.
The only downside to this approach is that you will have to figure out how to mount the externally facing parts, as described in the next step. This is not an insignificant downside, so if you are more comfortable programming AVR chips than figuring out how to wire things, read on.
Program on an arduino, and swap chips
The next easiest approach, and the one that would be easiest with the custom board, would be to program an arduino the sketch, pry the ATMEGA 328 chip out, and put it in the socket on the board. The downside to this is that you will need another ATMEGA chip pre-programmed with the arduino bootloader to put into the donor arduino or else it will become useless. If you don't buy a chip with the bootloader pre-programmed on it, you can put the bootloader on yourself (before any swap) using some of the components that will eventually go on the board, and these instructions or these more comprehensive ones.
Program the the chip in the custom circuit using an FTDI serial converter
If you have an FTDI USB to serial converter, AND a pre-programmed boot loader (see above), you can use a 1x6 pin connector soldered to the appropriate place on the board. The header goes in the holes labeled "JP4 FTDI". Then you can plug your FTDI adapter into that header and program it just like an arduino. For this to work, you will have to have soldered all the non-sensor components to the board, having created a barebones arduino. This is the method I used if I needed to make any changes after I assembled the device. It absolutely will not work unless the chip has a bootloader already on it. This is actually easier than swapping chips, but does require you to possess an additional tool. There is a way to use another arduino as an FTDI programmer, but it requires removing the chip from that other arduino.
Program the chip in the custom circuit using the ISP pins
In addition to the serial programmer port, the board also as an ISP (In System Programmer) connection. This can be used to program the chip directly without a bootloader. However, it requires a special programmer (USBtinyISP) or an arduino set up to emulate one. Since some of the pins used in ISP programming are also used by the sensors, this will not work once all the sensors are connected. So if you finish the device and need to make a change, you will have to fall back on one of the other methods. The arduino IDE has a "programmer" setting that includes the USBtinyISP or "arduino as ISP" options, so once the ISP port is connected you can program the device normally. You can also put on a bootloader with it.
When I created 30 of these devices, I used a partially completed board with a ZIF socket for easy swapping to pre-program all 30 chips before soldering them into the boards. Then I used the FTDI method to make any needed changes later..
Now it's time to make another decision...
Step 4: Electronics - Optionally Using an Arduino Instead of the Original Board
As mentioned in previous steps, programming and sourcing of parts can be tremendously simplified by using an arduino instead of the custom circuit board. The board is itself an arduino clone, customized to allow placement of some of the extra components directly on it. This arduino clone is missing some of the parts that make programming an arduino simple, thus complicating the programming process.
However, the custom board does greatly simply mounting the display and the button to the top of the box, and provides little daughter boards to mount two of the sensors. Without it, you will have to find alternative methods to solve these problems find a place to mount the buzzer and the tilt sensor. So there is a trade off between wiring complexity and soldering complexity.
As shown in the pictures above, the 7 segment display and the button are mounted on the bottom of the custom board. The buzzer and the tilt sensor are mounted on the top. They will all have to find a new home in an arduino version, and you will have to run a lot more wires for the display.
I have not built a complete arduino version, early prototypes using an arduino never left the breadboard, but here are some suggestions.
Given the stress applied to the button, the simplest way to mount it would be to put the button and the display on a piece of perf board and treat that perf board like the custom board to mount on the top panel. It's possible the spacing might be different than the custom board, so do this before cutting the top panel in case you need to make adjustments. Or, perhaps use and entirely different (and more photogenic) button wired separately. In theory you could use something other (like glue) to mount this perf board, but one of the four screws that holds the custom board in is actually part of the puzzle, so you will probably want to use screws and bolts with the perf board as well.
The tilt sensor and the buzzer can go anywhere, though the buzzer will be louder if you can attach it firmly to the box (like on the perf board), and the tilt sensor must be placed so it properly closes when the box is upside down.
The light sensor and the temperature sensor stick out of little holes in the box. You probably want to use perf board to mount these as well.
The magnet sensor (reed switch) should be glued to one side, just like with the custom electronics version.
These orphaned components should be wired to the arduino as follows (this info is in the sketch as well):
Secret screw (one of the four holding the display on top) - GND (ground)
Magnetic reed sensor - GND and Analog 3 (This appears as digital 17 in the sketch)
Not secret screw on the side - 13
Button - GND and 12
Tilt sensor - GND and 11
Buzzer - GND and 10
Temperature pin 1 - +5v
Temperature pin 2 - Analog 2
Temperature pin 3 - GND
Light sensor cathode (- side, the short lead) - to A1 and also through a 10Kohm resistor to GND
Light sensor anode (+ side, the long lead) - +5 volts
The display needs to be wired as follows:
ardino pin,segment,display pin<br> 2,a,7 3,b,6 4,c,4 5,d,2 6,e,1 7,f,9 8,g,10 9,dp,5 gnd,gnd,3 & 8
So, for example, pin 7 on the display goes to pin 2 on the arduino, and lights up segment a.
The last thing to consider is the battery pack. If you have a battery pack with an arduino power jack you can just plug it in. It will accept 6-12 volts. Alternately you can plug the positive lead into the "VIN" pin and the negative lead to GND. The VIN pin does NOT have polarity protection so be careful. Plugging batteries in backward may fry your arduino. Similarly, do NOT plug into the +5V pin unless you have a battery pack that is already regulated to just 5 volts. See this guide for more on battery powered arduinos.
Figure out how to mount all these pieces and you are almost done! You can skip ahead to the "final assembly" step.
Otherwise, let's discuss a custom board...
Step 5: Electronics - Getting the Board Printed
Unless you are going to create the boards yourself (which is entirely beyond the scope of this guide), you will need to have the board printed. Unfortunately, there is no economical way to have a single board printed, so you are going to end up with extras. Use them as coasters or make puzzles for your friends.
The first step of getting the boards printed is to generate a gerber file. A gerber file is a zip file with images that describe each of the layers that make up the PCB (printed circuit board). Included in the zip file in the "required materials" step is the gerber file I used to have the boards printed at seeedstudio.com. This file should be all you need, particularly if you are using seeed studio, but if you want to use eaglecad to generate your own, see this sparkfun tutorial.
Normally I would recommend using oshpark.com for small quantity PCB orders. The boards are high quality with gold traces and best of all are a beautiful purple. You get three boards for $5 per square inch. But this board is an awkward size and includes an extra daughterboard for an unused second light sensor, so it's cheaper to order from seeedstudio's fusion service. It will fit in their 100cmX100cm offering, currently $9.99 for 10 copies of the board.
After get get the board, you will need to cut it apart. On one edge of the board are three daugherboards for mounting sensors on. One for the temperature sensor and two for light sensors. Only one of the light sensors was used in the final puzzle, so the extra one is not needed.
You can cut the boards with a strong pair of shears, or tin snips. I found I could even use regular scissors, but the fiberglass is pretty tough on them, so I don't recommend it.
Once you have cut the board up, you are ready to begin soldering...
Step 6: Electronics - Creating Power Circuit and a Barebones Arduino
The first thing you should do when soldering the components on is to install and test the power circuit. All of these components should be sticking out of the top of the board, where the majority of the silkscreened labels are. If you do not have experience soldering electronics, I recommend checking out the free "soldering is easy" comic book.
- Solder the LDO voltage regulator into the spot labeled IC2. The silkscreen outline on the board shows how the pins should be oriented. Do not mix it up the the temperature sensor, which has a similar shape. This device converts voltage in the range from 6 to 12 volts down to 5.
- Solder in the two 1uf capacitors capacitors near the voltage regulator, into the spots labeled C3 and C4. These capacitors help the voltage regulator work smoothly.
- Solder the diode to the spot spot labeled D1. Make sure that the band on the diode lines up with the band printed on the silkscreen. This diode protects the circuit if you accidentally connect the batteries backward.
- Solder the wires from the battery pack onto JP1. Make sure the positive wire goes to the hole with a "+" next to it, the one closest to the screw hole. You can leave this off until later to make it easier to solder subsequent steps, but you will need to figure out how to temporarily connect these for testing. Or just desolder them after testing. In any case you will have to disconnect the + lead at some time in the future while wiring in the power switch.
- Trim off all the leads from the back of the board. (I won't call this step out in the future)
At this point the power circuit is complete. To make sure, put batteries in your battery pack or otherwise apply power. Using your multimeter, check to see if there is 5 volts between ground and the power line. A good place to find the power line is the leftmost pad of JP5 ("Aux power"). Other places to check are the leftmost pads of the JP2 and JP3 (light sensors), the right most pad (pin 1) of JP8 (temperature sensor), and pin 2 of the ISP socket. Ground can be found at the negative connection of the battery, at the first two pins of JP4 (FTDI socket), pin 6 of the ISP socket, pin 3 of JP8 (temperature again), and JP7 (the secret screw). Check lots of combinations to assure yourself that there is power where it should be, and isn't power where there should not be.
Once the power situation is squared away, it's time to put the rest of the components that make this an arduino on the board. Make sure you take the batteries out or disconnect the battery pack before proceeding.
- Solder a 10K (brown black orange) resistor to R1. This is used with the reset button to reset the device.
- Solder one of the micro-switches (buttons) to S6. This is the reset button.
- (optional) If you will be programming via the ISP header, solder the 2x3 pin header to ISP.
- (optional) If you are programming via FTDI cable, solder the 1x6 pin header to JP4. Even if you are planning to program the chips this way, you can leave the header off. To reprogram the puzzles I just put one side the pin headers in my FTDI adapter, and plug the other side into JP4, applying a little lateral pressure to maintain contact during the programming process. But it is easier if the pins are soldered in.
- Solder the socket into the two rows of 14 holes. Make sure the notch is lined up with the notch on the silkscreen. This socket is where the ATMEGA micro-controller will go.
- Solder the 16mh crystal into Q1. This crystal provides a time signal to the micro-controller.
- Solder the two 18pf capacitors to C1 and C2. These capacitors work with the crystal to regulate the microcontroller.
- Insert the micro-controller into the socket you added in step 5. Make sure you align to notch on the chip with the notch on the socket and the board. If all three are not at the same end, you did something wrong.
You now should have an arduino clone, ready to be programmed.
If you are using the ISP method, you must program the chip now, before adding the sensors. If you don't, you will only be able to program the device while holding it awkwardly upside down over your head, since the tilt sensor uses one of the pins the programmer needs.
When you are ready, it's time to fill up the rest of the board...
Step 7: Electronics - Populating the Board
The rest of the components that go on the board are the custom parts that do not make up a standard arduino.
- Solder a 10K ohm resistor (brown black orange) to R4. Ignore R3 for now, it is for an optional second light sensor that was not used in the final puzzle. This resistor is needed by the light sensor.
- Solder the 100 ohm resistor (brown black brown) to R2. This resistor protects the display from burning out.
- Solder the buzzer to the two holes inside the large circle labeled SG1, making sure the positive lead goes into the one marked with "+". This buzzer is used to play simple tunes and provide other feedback.
- Solder the tilt sensor into the hole labeled "tilt". This component is slightly tricky. After you have soldered the central post on the back of the board, you have to connect the body of the sensor to the ring on the top of the board via a blob of solder. But if you leave the iron on too long it can damage the sensor. If it doesn't work the first time, make sure you allow the sensor to cool down before trying again. This sensor acts as the input for the bottom side of the cube, triggered when the cube is turned upside down.
- Flip the board over for the final two components, the display and the input button. You will be placing them on the bottom of the board, and soldering them where the leads stick out on the top.
- Solder the display into the bottom, lining it up to match the image on the silkscreen. This display is used to provide feedback to the puzzle solver.
- Also on the bottom, solder on the final on-board component, the micro-switch at S1. This button is used to enter guesses.
The board is now finished. Take a break, because the soldering now shifts to more fiddly wiring...
Step 8: Electronics - Wiring the Sensors
For each of the remaining four sensors (the tilt sensor is already on the board), you will need to cut enough wire to a) reach from the sides of the cube to the board and b) give you enough room to assemble the sides while c) not being so long that the wires are unmanageable. About 4.5 to 5 inches. You will need eight of these, and possibly another two slightly longer lengths of wire (7-8 inches) for the power switch if the battery leads are not long enough. If you have multiple colors it will simplify the wiring. I suggest at least four. Red for battery power, black for ground, orange for sensor power, and some other color for the temperature sensor signal, but use any color scheme that makes sense to you.
You will be wiring each of the sensors to the board via these wires, in preparation for mounting them to the four sides.
- Solder the temperature sensor onto the temperature sensor daughterboard. Use the silkscreen to orient it properly.
- Solder three wires to JP12 (on the daughterboard), using different colors if you have them. Pin 1 is sensor power, pin 2 is the signal, and pin 3 is ground.
- Solder the other end of the wires to JP8, matching the pin numbers up.
There is support for two light sensors, and daughterboards for two. If you want to wire up a second light sensor, you will need to solder in another 10K resistor at R3.
- Solder the light sensor to T1 on the daughter board. The short lead (the cathode) goes into the hole labeled "C", the long lead (the anode) goes into the hole labeled "long".
- Solder two wires into JP10 on the daughter board. If you are color coding the wires, use your ground color for the cathode and your sensor power color for the anode.
- Solder the other end of the wires to JP3 on the board, matching the cathode wire to the C on the board.
Short sensor (screw)
The third sensor is just a pin that checks for a short circuit. When JP13 is connected to ground via a wire, the condition is detected. JP7 is a hidden connection to one of the screws holding the board on, and is connected to ground.
- Solder a wire to JP13 on the board.
- Strip at least half an inch off of the other end of the wire to wrap around a screw in the next step.
The magnetic reed sensor is a fairly delicate glass part that will eventually be glued to the side of the box, so extra care must be taken during these steps.
- Solder two wires to the two ends of the sensor about half way. The way I did this was to stand a breadboard on its side with the reed sensor sticking out horizontally. Then I made small hooks in the end of the wires and hung them off of the sensor, pinching the hooks around the leads. Finally, I soldered the wires to the reed switch.
- Solder the two wires to JP9. The order does not matter, so there is no need to color code these wires.
Soldering is almost done, just the power switch to go. But that's easier after the board is mounted...
Step 9: Final Assembly
Once you have all the sensors hanging off of the off of the board, it's time to assemble the cube. The sides need to be glued together and since it is very difficult to mount the sensors once the cube is finished, it's best to do each side one at a time. This means a fast acting glue is the most convenient.
For this purpose, I used a hot glue gun. Here is a terrible, terrible hint you should ignore, and a couple of follow ups:
- If you wet your finger, you can guide and shape the hot glue before it sets.
- If you are doing a lot of gluing and forget to wet your finger just one time, you will burn it very badly, and lose sensitivity in the tip for weeks.
- If you burn your finger on hot glue and reflexively stick it and the molten glue stuck to your finger in your mouth, you will also burn your tongue.
Mount the power switch
- Screw the mini-toggle switch into the round hole on the top panel.
- Fasten the nut that came with the switch around the shaft.
- Solder a wire to one pole of the switch.
- Solder the other end of that wire to the + pad of the "battery in" jumper (JP1).
- Solder the red wire from the battery pack to the other side of the switch. If the leads from your battery pack are not long enough, you may need to extend it with another wire. If you do so, be sure to wrap the exposed joint in heat shrink tubing or (not recommended) electrical tape.
- Solder the black wire from the battery pack (extending if needed) to the - pad of the battery in jumper (JP1).
- With batteries in, flip the switch and confirm that the device powers up.
- Turn the power back off, and remove the battery(s).
Mount the board on the top panel
- Place the four machine screws in the top panel, so they are sticking out of the back side. I did this by putting the screws in the panel, held a book against it, and then flipped everything over so the screws were facing up. Make sure that the one different "secret" screw for the is in the correct place. This is on the bottom left when looking at the front of the panel, bottom right when viewed from behind.
- Place the nylon spacers over the screws.
- Position the board so it slots onto the screws and the display and button go in their respective holes.
- Fasten the nuts on the four machine screws.
At this point you should have the bottom panel securely mounted with sensors sticking up on their wires, ready to be attached to the four side panels.
Mount the reed switch to the magnet panel
- Position the magnet panel (the one with no holes at all) in the "north" position, laying flat meshing against the top edge of the top panel with the text side down on the table. Make sure that the text will be facing the right way (upside down from this perspective) once the cube if flipped over. Remember, you are looking at the bottom of what will become the cube at this point.
- Carefully glue the reed switch to the center of the panel. Hold it in place until the glue sets/dries. This is where using hot glue is the most useful. I used an ice cube to speed up the setting process.
- Lay a thin bead of glue down where the teeth of the two panels intersect. This will insure that when you rotate the panel up, each tooth will have glue in each groove.
- Rotate the panel up so it is 90 degrees to the top panel, with the teeth meshed. Press tightly to insure a good fit.
- Run a thicker bead of glue along the inside edge. This first side must be strongly fastened to prevent it moving during the next steps.
Mount the light sensor to its panel
- Position the light panel (the one with the smaller hole in the center flanked by two screw holes) to the right to the top panel. This will be the left or west face when the cube is flipped over. The top of the text should be aligned towards the edge connecting with the top panel.
- Position the light sensor in the hole, and fasten with two screws and nuts.
- Repeat the gluing procedure that you used on the magnet panel, but this time also putting a small bead of glue on each of the teeth that will mesh with the magnet panel. Work quickly if using a fast set glue.
- Rotate the panel up so it forms the right side of the cube. Press tightly into the two side it connects with.
- Run a bead of glue along the two connected sides. This will become more and more difficult as the cube comes together.
Mount the temperature sensor into its panel
- Position the temperature sensor panel (the one with the larger hole in the center flanked by two screw holes) to the left of the top panel.
- Position the sensor in the hole on the panel and fasten with two screws and nuts.
- Repeat the gluing and rotating procedures. You should end up with an open box with one side missing.
Mount the electric sensor screw
- Place the panel with a single hole in the center along the remaining edge of the top panel.
- Insert a machine screw in the hole, sticking up.
- Make a hook out of the end of the single remaining wire attached to JP13.
- Wrap the hook around the screw, and then fasten a nut to it, pinching the wire in place.
- Run a thin bead along the place where the teeth mesh as you did with the other three sides.
- Put a small bead of glue on each of the teeth on either side.
- Rotate the panel up and slot with all three glued sides.
Mount the bottom panel
- Glue the battery pack to remaining panel. Be generous with the glue, to be sure it is securely fastened. The batteries are the heaviest part of the device, and the most likely to come loose and rattle about.
- Place last panel onto the bottom of the box. DO NOT GLUE IT.
- Using the small holes on the edges of the panel, secure it with wood screws.
That's it, you are done! Read on to learn about some extra features of the board...
Step 10: Notes on Additional/hidden Features
As you solder components on the board, you may notice that there are a few pads that are unused. While most of the arduino pins are used in this puzzle, there are a few that are not. To facilitate possible hacking, the unused ones appear in various places on the board. In addition, an early design of the puzzle had two light sensors, so there is a space for two sensors.
The extra bits are:
- JP5 - labeled AUX power; if you short out this jumper, the FTDI port can provide power to the device, useful when programming. Don't apply battery power and AUX power at the same time. Do not attempt to use this to provide power.
- JP2 - The unused light sensor. R3 corresponds with this and ground. The other end of the pad connects to Analog I/O pin 0
- JP6 - The two pads here correspond to Analog I/O pins 4 and 5
- JP14- The two pads here correspond to Digital I/O pins 0 and 1
Step 11: Final Notes
This puzzle is copyright Todd Etter and Marcus Porter.
The design, code, and this guide are all licensed under the creative commons license. Permission is granted to use these plans to create or remix this puzzle for personal use.
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
We have a be nice policy.
Please be positive and constructive.