The GoonieBox came about because I wanted to create a unique piece of furniture for my home that my guests could interact with. But I wanted it to be something that I wouldn’t have to explain how it worked. Instead, I wanted mysterious scriptures scribed all over the sculpture to intrigue my guests. I found my inspiration in an epic puzzle game “The Room” by Fire Proof Games.
Here's the end result:
If you have never played it, head over to Google Play or the App Store and download all three games. They are jaw dropping in graphics, mind bending in puzzles, and infinitely unique in game play. Here is the puzzle that inspired it all:
Can you imagine walking into a room and seeing this intricate piece of furniture sitting there with unassuming elegance? Immediately upon playing the game I thought, “I must build one!” It wouldn’t be till years later that I came up with a design worthy of this puzzle.
|Part Description||Digi-Key Part #||Notes|
|.1 Center Crimp kit|
|Hook Up Wire|
|Wire Crimping Tool|
|Wood Laser Cutting Services|
|(615102) 16T Aluminum Hub Sprocket(0.250 in)||Parts available via www.ServoCity.com|
|(615106) 24T Aluminum Hub Sprocket(0.250 in)|
|(615114) 32T Aluminum Hub Sprocket(0.250 in)|
|(636120) 3.5 inch ID x 1/8 inch Smooth Belt|
|(636122) 4 inch ID x 1/8 inch Smooth Belt|
|(636124) 4.5 inch ID x 1/8 inch Smooth Belt|
|(545364) Swivel Hub|
|(636212) 5 inch x 1/4 inch Smooth Belt|
|(636214) 5.5 inch x 1/4 inch Smooth Belt|
|(636216) 6 inch x 1/4 inch Smooth Belt|
|(615134) 2 inch Smooth Hub Pulley|
|(615130) 1 inch Smooth Hub Pulley|
|(585442) 3.00 inch Aluminum Channel|
|(545340) 1/2 inch Tube Clamping Hub|
|(545364) Swivel Hub|
|(535138) 1/2 inch Ball Bearing Quad Pillow Block|
|(638228) 26 RPM Planetary Gearmotor w/Encoder|
|(615318) 12T 32P (3mm bore) Gearmotor Pinion Gear|
|(635254) 4 inch length x 1/2 inch dia. Aluminum Tubing|
|(635256) 6 inch length x 1/2 inch dia. Aluminum Tubing|
Click the link below to download the full project source code and firmware. GadgetFreak_GoonieBoxCodeAsWordDoc copy.zip_.doc
After finding my muse, my next step was to render my concept and test out my mechanicals in 3D. To do this, I use Autodesk Inventor to bring my concept to life virtually. If you are new to 3D modeling, I highly recommend this series of books. It a no non-sense, get down and dirty start modeling on page 1 kind of book.
I recommend using color when modeling. Don’t use one solid color for everything. If you do, it becomes impossible to differentiate the various pieces. Inventor also allows you to specify wood, metal, glass and even stone. Or just about any other material you can imagine.
If screws and nails aren’t your thing and you prefer a clean look, create an interlocking pattern for adjoining wooden pieces. It will give rigidity and an awesome look. I wanted to insure that GoonieBox survives when the universe implodes, so I used Gorilla Glue.
Avoid wacky measurements such as 6.1945”, use 6”. This might seem silly, but it makes modeling everything so much simpler.
I like Baltic birch, it laser cuts impeccably well and has a really nice char once complete. It’s light, strong and has awesome wood grains. I used 1/4” stock for areas like the main outer walls and draws. Any thinner and it's flimsy and cheap feeling. Any thicker and you may need to start a GoFundMe campaign to build it.
For other areas which need less rigidity or are hidden I’ll use 1/8” stock. You just have to keep in mind that since it’s so thin it warps very easily. Inventables has a really nice selection of materials to choose from. Everything from exotic woods to metals. I obtained materials for GoonieBox from a company called Woodcraft.
I like to 3D print all my ideas which I think may or may not work. However, I only print the most risky items. 3D printing is great, but it’s a slow beast. I have an original Makerbot Replicator 1. Without it, I’m not sure my interactive furniture piece would have actually happened. I learned a lot of what worked and what didn’t for pennies on the dollar. I was able to iterate my ideas in hours instead of weeks/months.
Use the lowest resolution with the least amount of fill possible to reduce print time. Remember, the goal is to test your idea, not build your interactive furniture out of it. (Or maybe it is?)
Use PLA instead of ABS, there is a misnomer that it’s not as strong and that it’s brittle. Not true! I’ve printed gears and put them under tremendous torque and it never failed. Oh and it’s non-toxic and won’t make your house smell like a tar factory.
Build in pieces, then assemble. WHAT? It’s a 3D printer, why can’t I just do it all at once. Well, you can but your build time will go through the roof. Print your individual piece and glue it together with a glue gun like this.
Print scaled-down versions of your model. As long as everything is printed to the same scale, it will all work the same. I had to do this with the dial for GoonieBox. It was far larger than my machine so I made it at 75% scale. Oh and yes, all parts were printed separately and assembled later.
Avoid 3D printing where cardboard will do just fine. It’s tempting to build a masterpiece out of plastic. I started to get sucked into that black hole myself. But if it’s something that doesn’t require precision but just needs a rough estimate, grab yourself a box. I recommend Amazon boxes; they are strong and thick. Check out the full scale mockup of the hourglass in GoonieBox, on the right, made from plastic and an Amazon box.
For laser cutting services, I recommend a company called Pololu. I’ve done a bunch of work with them. Here is one example I worked with them on, it’s something I call “Obris-The Amazing Kinetic Sculpture”. They are absolutely awesome. Speak with Arthur Rodriguez, he is the laser cutting guru there.
Ok, What About the Electronics?
This is where the rubber meets the road. I usually start this stage right after I finish the 3D modeling phase. Things will change and that’s ok, but you need a sense of what parts you will need, how much I/O etc.
I like to make a top level diagram of my hardware. Once I have that, I can figure out power requirements, how big of an enclosure I’ll need, will I need a fan to dissipate heat from my regulator etc.
Make a Top Level Diagram
Here is how to do it. Start with the Arduino in the center and attach all of your peripherals to it. You might also want to add part numbers at this stage. Here is what GoonieBox looks like. I used Microsoft Visio to create the block diagram.
Make a List and Check it Twice!
I have a master list which contains all of my hardware mappings and also what I would like my Interactive Furniture to do. I use separate tabs for hardware and firmware all in one Excel sheet.
Start by identifying how many inputs/outputs you need.
Break down your I/O further by functionality -- e.g. SPI bus, UART, Generic inputs/outputs. To make life easy, all chip manufacturers provide a pin out of each I/O. Arduino makes it even easier as they provide a handy chart of the Arduino specific I/O. You can find it here. I usually copy and paste it into an Excel spreadsheet and put a description of what each pin will be and what it will do.
e.g. Arduino Pin 1- (Input) Monitors the enter button for being pushed.
When button one is pressed six times, door one will open via servo number six.
When its 9, 12, 3, 6 o’clock, the grandfather chime shall sound.
So on and so forth until all features are written out
Tips and Tricks - Special Tools and Components
Warning! I am about to shamelessly plug myself here, because it’s it’s going to really reduce your development time. It’s something I call Dr.Duino. It serves multiple functions, it’s one of those tools you never knew you needed till you have it.
While you wait for your hardware to arrive you can start coding immediately. Just pop the Dr.Duino shield on top of your Arduino and you will have access to all the common elements you need without a bread boarding mess.
It has switches, potentiometers, LED’s and a buzzer. It also has accessible grounds and power points for test probes. Top it all off with an external reset button which will not get covered by the shield above.
For example, here is how I used it. Let’s say you have switches in your design, with the Dr.Duino you can immediately work out your debounce code, and switch logic. Etc. This is how I developed GoonieBox and it reduced my development time by months!
It is a true hardware debugging tool. Since Arduino is a stackable system you are likely to have multiple levels to your project. While Arduino is awesome, what’s not awesome is trying to isolate if you have a firmware or hardware problem. This is where Dr.Duino really shines. Let’s say you are trying to blink a light in your hardware every second. You’ve written the code and it looks okay, but it’s not working. Well, just put the Dr.Duino in between the shields and reroute the signal via a jumper to the LED on the Dr.Duino board itself. If it does blink you have firmware problem, if it doesn’t you have a hardware problem. It’s that easy.
Schmart Board, this is another great tool/shield which you didn’t know you needed. This shield has lots of really great features, extra grounds, labeled I/O pins. It’s a must have and inexpensive.
I love test cables like this they are infinitely useful.
If you need mechanical components, I used a company called Servo City. They carry all sorts of mechanical parts which are perfect for the hobbyist. Things like high torque small motors, continuous rotation servos, motor controllers, etc.
Most importantly however, they have something they call Actobotics. Basically they are metal channels which mate with all their motors/servos etc via a unique bolt pattern. They were pivotal in GoonieBox. They also offer educators discounts.
My Parts Are Here, My Parts Are Here
Finally, after all that effort, it’s time for the good part, the build!
It can be absolutely overwhelming when building interactive furniture. Given that it’s a large structure, the amount of detail work is gargantuan. So I once again turn to my master list and prioritize all the features I want to implement. For GoonieBox it went something like this:
Build and glue the outside of the box together.
Test the hour glass and spinning mechanism.
Make the dial assembly and test motor control.
As you build, things will inevitably go wrong. However, your 3D modeling should have caught most of the mechanical stuff. The things you will likely encounter is physics in the real world.
Autodesk Inventor is awesome, but it doesn’t exactly account for things like, you know, gravity…It was so easy to get lulled into, “Oh yeah, that will magically stand on its own.”
Here's a video of the build:
Well, that’s is. From concept to the build and lots of neat tips in between, that is how I do it. I hope this helps you get your Interactive Furniture up and running. I’d love to see what you make so please contact me through my website, I’ll put it up on my blog.
[All images courtesy Guido Bonelli Jr.]