Category Archives: MakerBot


On 3D Printing Lego Robot Accessories

This past week, the engi­neer­ing depart­ment of my com­pany (Elemental Technologies — we’re hir­ing engi­neers, by the way) had our annual off-site. This year we did some­thing a lit­tle dif­fer­ent and had a Lego com­pe­ti­tion. The pre­vi­ous week, we were given time with the Lego Mindstorms kits to get famil­iar with the com­po­nents and pro­gram­ming lan­guage. The exact nature of the com­pe­ti­tion was with­held until we hopped on the bus to the event. We had a cou­ple of days to design the hard­ware and soft­ware to race around a tape-line maze and retrieve a token at the end.

This video is from one of our trial runs on a smaller board:


The rules stated that we were only allowed to use the pieces that came in the box, but we could add any non-functional dec­o­ra­tive pieces we wanted. I think this was mainly focused on adding minifigs with steer­ing wheels and such. Given that I have a 3D printer, I took it a lit­tle more openly.

I adapted some 3D mod­els for Halloween jack-o-lantern dec­o­ra­tions for Lego-compatibility. The ones every­one seemed attracted to were the ten­ta­cles:


The other model was Lego horns which, alas, I for­got to snap a photo of before pack­ing them away, so you get a 3D ren­der:


The attach­ment that really pushed the def­i­n­i­tions of non-functional and dec­o­ra­tive was the GoPro Hero 3 cam­era mount. Because we’re a video com­pany, we have a cou­ple of loaner GoPro cam­eras. We typ­i­cally use them for community-building events such as strap­ping them to peo­ple and vehi­cles for the Hood To Coast run. In this case, I thought it would be fun to attach one to our Lego robot.

I mod­i­fied an exist­ing GoPro clip model to add in some Lego Technics mount points.


The file is avail­able on Thingiverse, but  I’m think­ing of mak­ing a few more mod­i­fi­ca­tions to it based on our expe­ri­ences.

✻ ✼ ✻

Incidentally, our team came in first place on the first race and third place on the sec­ond race. The win­ning two teams dif­fered in time by a sin­gle sec­ond. This is a Hyperlapse of our first offi­cial run:


Posted in: MakerBot Work

The “spinning beachball” effect is very bright. It looks great in person, but really overpowers and washes out the camera's sensors when filming. Trust me. It looks way better than this.

Halloween goggles

This is one in a series of Halloween elec­tron­ics posts. Read the full series:

Last Halloween I built some ani­mated light-up steampunk/mad-scientist gog­gles. I did this at the same time I did the creepy motion-activated eyes and the ambi­ent light­ing with sur­prise thun­der and light­ning. Because I was build­ing and refin­ing up until the last minute, I never got around to show­ing off and doc­u­ment­ing the project. This post, a year later, will try to fix that.

The “spinning beachball” effect is very bright. It looks great in person, but really overpowers and washes out the camera's sensors when filming. Trust me. It looks way better than this.
The “spin­ning beach­ball” effect is very bright. It looks great in per­son, but really over­pow­ers and washes out the camera’s sen­sors when film­ing. Trust me. It looks way bet­ter than this.

I have seen sim­i­lar projects posted before, but they always had full cov­ers over the lenses and came with warn­ing about not wear­ing them over your face. Light-leakage and the strobe of the LEDs can lead to headaches. Knowing that I’d only have a nar­row field of view any­way (like most masks), I wanted a design that allows for wear­ing them over the eyes for extended peri­ods of time with­out the light-leak and headaches. Between laser cut­ting, 3D print­ing, and lib­eral amounts of Sugru, I think I worked it out.

My addi­tions included:

  • Laser cut rings (54mm out­side diam­e­ter, 31.75mm inside)
  • 3D printed “blinder” tubes (31.75mm out­side diam­e­ter, 12mm tall)
  • A small push­but­ton to change ani­ma­tion modes
  • A ton of elec­tri­cal tape (later, I switch to Sugru) to seal around the edges

The whole project is a riff on the Adafruit Kaleidoscope Eyes project, with some of my own hard­ware and soft­ware cus­tomiza­tions. Unfortunately, I do not have many pic­tures of the steps dur­ing the build process. It was tedious and detail-oriented. It was mainly cut­ting and rout­ing wire and sol­der­ing things in-place, as opposed to build­ing sep­a­rately and cram­ming it all into the gog­gles after­ward. The code lives in the GitHub project as well as assorted other build files (laser cut­ter paths, 3D mod­els).

Behind the metal wire connecting the two goggle halves is a segment of heat shrink tubing acting as a channel for wires.
Behind the metal wire con­nect­ing the two gog­gle halves is a seg­ment of heat shrink tub­ing act­ing as a chan­nel for wires.

Instead of cram­ming the Trinket inside the gog­gles, which would obscure vision, I attached it to the out­side strap. This has sev­eral added ben­e­fits: it’s eas­ier to access for pro­gram­ming and it gives it that extra sci-fi touch. I also added a small but­ton on a perf board to the strap. This is used to switch ani­ma­tion modes.

2013-11-10 17.01.58

The gog­gles are great. They are com­fort­able and high qual­ity. The thick glass lenses are retained by a metal ring and spring clips, mak­ing them easy to pop out, mea­sure, and replace. It was easy to find acrylic of a sim­i­lar thick­ness. I laser cut some rings — a 54mm out­side diam­e­ter to match the lenses and a 31.75mm inside diam­e­ter to match the inside diam­e­ter of the neopixel rings.

Measuring for new lenses.
Measuring for new lenses.

With the acrylic in place and the NewPixel rings crammed in as far as they could go, I mea­sured the dis­tance I’d need for the “blinder” tubes. I’d need a light-proof chan­nel that allows me to peer through the cen­ter of the NeoPixel and acrylic ring. I ended up with plugs that are 12mm tall (includ­ing the height of the retain­ing lip around the acrylic ring. You can find my 3D STL file on Github, which is kind of cool because you can spin it around in your browser. The OpenSCAD source code is there, too.

Drafting the inner light-blocking tube.
Drafting the inner light-blocking tube.
Diffuser ring and blinder-tube in place.
Diffuser ring and blinder-tube in place. If you look closely, you can see the elec­tri­cal tape that made the orig­i­nal light seal.

Between exact mea­sure­ments and 3D print tol­er­ance, it was a fairly decent fric­tion fit. I used a few drops of hot glue to bet­ter bridge the tube-to-NeoPixel junc­tion, just in case. There was still quite a lot of light leak­age, though. Because the rub­ber of the gog­gles is not per­fectly cir­cu­lar, there was some gap­ping there that light came through. There was also a lit­tle bit of gap­ping between the tube and the NeoPixel ring. Unexpectedly, the cir­cuit board itself had a few via holes that let light through. My first round of seal­ing, from Halloween last year, was with elec­tri­cal tape. I cut strips and sealed around the NeoPixel-to-goggle junc­tions as well as the NeoPixel-to-tube junc­tions. The vias got cov­ered as a byprod­uct of all the tape I used. It used what I had on hand and it mostly worked. The tape doesn’t stick all that well to the ABS plas­tic of the tube, so would occa­sion­ally peel back and obscure vision for a bit. I’d have to poke my fin­gers into the eye holes (ew, gross!) and flat­ten it out. Since then, I’ve embraced the cool­ness of Sugru. I ripped out all the tape and plas­tered the whole thing in Sugru.

This pic­ture, from after I’d ripped out the tape, shows the dif­fer­ence in light leak between Sugru (left) and noth­ing at all (right):

Light leakage: after Sugru (left) and before (right).
Light leak­age: after Sugru (left) and before (right). On the unfin­ished side, you can see some of the routed wires as well as hot glue.

Because there was zero light leak­age, every time I switched ani­ma­tion modes, I’d have to hold my other hand in front of my face. The light that bathed my hand and reflected back to my eyes told me what color and motion was actively dis­played.

I hope this blog post gives you some insight and inspi­ra­tion on your own project. It wasn’t intended as a step-by-step how-to, given how cus­tom it is. I’m not even sure I could find equiv­a­lent gog­gles again. My design files and source code are linked in the above arti­cle and on GitHub. Feel free to down­load, edit, and tweak them to suit your own needs.

Posted in: MakerBot Projects


3D Printed Medieval Barbie Armor

I don’t have kids, don’t want kids, but I do have a cer­tain fas­ci­na­tion with toys. It prob­a­bly stems back to the ’80s when the toy sup­ple­ment to the Sears cat­a­log arrived each year, con­ve­niently timed to show up a few months before Christmas. I would comb through every page of that thing — well, every page that was not for girls or babies — think­ing and dream­ing and mem­o­riz­ing all the specs. All the kids looked so happy play­ing with their new Transformers and the Star Wars fig­ures and vehi­cles. I wanted all of them. I ear­marked the pages con­tain­ing the taller-than-a-kid Space Warp mar­ble track, and espe­cially the Omnibot 2000. (Neither of which I ever received.) But my favorite toys were always related to build­ing and learn­ing.

As an adult I do not buy very many toys (and by exten­sion, gad­gets), but I always have to stop at the sci­ence museum gift shop. I keep up to date on the lat­est giz­mos. It is no coin­ci­dence that most stuff com­ing out of my 3D printer tends to be toys, trin­kets, puz­zles, and geo­met­ric odd­i­ties.

Certain toys jump out at me more than oth­ers. Since becom­ing aware of STE[A]M (Science, Technology, Engineering, [Art,] and Math), I now pay spe­cial atten­tion to toys that try to break girls out of the pink aisle at Toys-Я-Us. Last year that was Goldie Blox, which com­bines sto­ry­telling with engi­neer­ing. Just this week it is Faire Play: Barbie-Compatible 3D Printed Medieval Armor from an inter­net friend, Zheng3, on Kickstarter. I have men­tioned him a few other times on this blog. Notably, he devel­oped Seej, the 3D print­able table­top bat­tle game that reminds me of another favorite 80s game, Crossbows and Catapults. My own small con­tri­bu­tion to the game was a mod­u­lar penny cat­a­pult I designed two years ago.

Zheng3’s Kickstarter project is to design 3D print­able medieval armor for Barbie dolls. I see this as being a great tran­si­tion to help girls ease their doll play from “let’s go shop­ping,” “let’s cook din­ner,” or even “some day Prince Charming will come” to a much more active and kick-ass “let’s fight that nasty dragon and save the vil­lage.” In addi­tion to the straight-up cos­tume play, I would hope the 3D-printed aspect might be an extra inspi­ra­tion. Maybe the kids have direct access to a 3D printer — be it a parent’s, at a friend’s house, or the Cube printer at the local Office Depot — and see the armor being printed, hope­fully lead­ing to curios­ity into how the 3D printer works. Or maybe they’re inspired to see they can mod­ify toys in their own cus­tom ways, whether it is by invent­ing their own 3D mod­els or more low-tech, like mold­ing in Fimo clay.

barbie_armor barbie_athena


He’s already devel­oped and released The Athena Makeover Kit (pic­tured on the right), which includes spear, shield, and winged boots. The thing I find kind of inter­est­ing is how strangely mis­shapen and bloated the boots look. Go ahead — click through to the Thingiverse page and select the boot model thumb­nail image. Careful eyes will see that Barbie’s feet are pre-molded for high-heel shoes. The out­stretched foot is not very com­pat­i­ble with boots, so the boots had to adapt, had to become more bulky at the ankle.

So whether you have kids who play with Barbies or whether you just like the spirit of the project, I’d encour­age you to con­tribute a few dol­lars to his kick­starter:

Posted in: MakerBot


Introducing the Trinket Platter [Update]

Adafruit sells this great lit­tle micro­proces­sor called the Trinket. That last link is to the 5v one, but there is also a 3.3v vari­ant. They are a great lit­tle devel­op­ment board, based around the Atmel ATtiny, for when a full Arduino is just too much pro­cess­ing power and too much cost.

There is an upcom­ing project that I am work­ing on that is per­fect for a Trinket. It will be on my desk, con­nected to an AC adapter and a few remote com­po­nents such as LEDs and but­tons. I am not com­fort­able with hav­ing a bare Trinket just dan­gling and slid­ing around the desk. A full enclo­sure feels like overkill. I thought I would, instead, go with a mount­ing plate. The Trinket and power jack can mount directly to the plate; the wires and con­nec­tions can zip-tie to the plate as a strain-relief.

I took a few mea­sure­ments and set about to design­ing a 3D model to print.


I ended up with the fol­low­ing design, which I’m call­ing the Trinket Platter. The Trinket con­nects to the base with M2 screws. The DC power jack panel-mounts to the ver­ti­cal sur­face. You can zip-tie wires to oval hole. Because the 90-degree angle between the two sur­faces is a stress point, I designed that cor­ner with its own form of strain relief. The out­side edges have quarter-circles. The inside cor­ner edge is rounded, not sharp.



After print­ing and ini­tial test mount­ing, I ended up with this:



The 3D file, the OpenSCAD source file, and more detailed instruc­tions can be found on the trinket-platter GitHub page. You’ll see more of this lit­tle guy in the com­ing month.

Update: Apparently I only set up the GitHub project page with­out also upload­ing the STL to Thingiverse when I pub­lished this arti­cle. You can now find it on Thingiverse.

Posted in: MakerBot Projects


Octocat MRI

When work­ing with 3D print­ers, you start with an object file. The object is a solid chunk of 3D geom­e­try. To get that out to the printer, it needs to be “sliced” into lay­ers. This is sim­i­lar to a laser printer. There, you start with a PDF or PostScript that defines a cir­cle here and a wavy line over there, but a stage of the print­ing process ulti­mately needs to con­vert those math­e­matic shapes to a grid of tiny dots.

It’s a bit more com­plex with a 3D printer. There are solid outer shells. There’s an airy inte­rior grid. There are over­hangs and clo­sures that need spe­cial han­dling. All of these things (and more!) are options that you can twid­dle.

Interesting enough, there’s a piece of Mac soft­ware called Pleasant3D that lets you visu­al­ize the lay­er­ing. This lets you see how tweak­ing indi­vid­ual options will affect the 3D print with­out hav­ing to go through with the print. Because these are visu­al­iza­tions of slices of the 3D model, inside and out, there are some strong par­al­lels with Magnetic Resonance Imaging. Couple that with the ani­mated gif kick I’ve been on recently and you end up with this pseudo-MRI of the Octocat:

Octocat MRI

I made this by first load­ing the *.gcode file into Pleasant3D. I then took screen­shots of each layer, being care­ful to not move the win­dow. I next used a small script to apply the ImageMagick con­vert com­mand to each screen­shot: crop them to just the con­tent of the Pleasant3D win­dow and resize. Those then pass through gif­si­cle to build out the ani­mated gif.

Posted in: MakerBot


Son of RatRacer: Mouse Car

After the ini­tial fail­ure described in yesterday’s blog post about the RatRacer, I thought I would scale down the prob­lem a bit. I fig­ured it would be eas­ier to iter­ate through design tweaks when big parts took 20 min­utes to print ver­sus 120 min­utes per part. If I ended up with a sound design for the mouse­trap car, then I could scale it up to the mul­ti­vari­able prob­lem of both design­ing for the rat trap car and work­ing through print issues.

While at the hard­ware store for some­thing unre­lated, I picked up a 4-pack of lit­tle mouse­traps for $2 on impulse.

Fortunately, the OpenSCAD mod­els I designed for the RatRacer were para­me­ter­ized. After tak­ing some ini­tial mea­sure­ments with my trusty calipers, the axle and wheel were triv­ial to scale down to mouse­trap size. They took about a minute each, includ­ing ren­der time. The end caps took a bit more work. Those needed a much larger redesign, as the axles in the RatRacer are small com­pared to the thick­ness of the rat trap, but the axles on the Mouse Car are thicker than the mouse trap. Although the design is a bit dif­fer­ent, the con­cept is exactly the same.


The fin­ished car itself looks pretty snazzy and only took one revi­sion (to increase the axle length slightly).



Like the RatRacer, you pull back the bar, wind the string around the axle, set it on the ground, and let go. Unfortunately, even the less-powerful mouse­trap spring is still too pow­er­ful. It pulls too hard, yanks the string too hard, the wheels spin out, and when they finally gain trac­tion, there’s only enough power to move a foot or two.

A friend had sug­gested adding an exten­sion to the snappy part. That would increase the lin­ear momen­tum for the same angu­lar momen­tum, which if it were rigid would make things worse, but if the exten­sion was a bit more flex­i­ble, that could bet­ter meter out the pull. That may be a future addi­tion.

For now, the Mouse Car in its cur­rent form is avail­able on Thingiverse. Its big brother, the RatRacer is also avail­able.


Posted in: MakerBot Projects


On designing and building the Rat Racer

As you might have guessed from the pre­vi­ous post about attic rats, I had a few left­over rat traps. And what does one do with left­over traps? I sup­posed you could do some­thing cool with ping pong balls, but I did not have nearly enough traps or ping pong balls.

I have a vague child­hood mem­ory of peo­ple mak­ing “cars” from mouse traps. I do not think I ever saw one in per­son, but I some­how know the design. I imag­ine it graced the pages of Boys Life at some point. As I remem­ber it, the basic design is this: four eye­let screws, screwed into the mouse trap base to hold the axles in place. Two pen­cils or wooden dow­els, used as axles. Four wheels, maybe cut from wood? A piece of string or wire. You would remove the “trap” mech­a­nism from the mouse­trap — the “cheese plat­form” and retain­ing bar — leav­ing you with just the snappy part on a piece of wood. That becomes the spring-loaded mech­a­nism, like a badass pow­er­ful wind-up car. Tie one end of the string to that, pull the snappy part over and hold it in place, wrap the other end of the string around the axle, put it on the floor, and let go. The snappy part pulls the string, spins the axle, and makes the wheels go.

What I have are rat traps, which are a bit more hefty, snappy, and dan­ger­ous to the fin­gers than lit­tle mouse traps, but I thought I would give it a try. I live in the 21st cen­tury and have a Replicator in my lab. I didn’t feel like mess­ing around with pen­cils, screws, and saws. Also, I felt my Thingiverse account was get­ting a bit stale and needed a new upload. I set out to design 3D-printed rat trap attach­ments that pro­vided the required ele­ments.

I took my calipers to a cou­ple of Victor brand rat traps to get a gen­eral sense of size. They are made of wood, so have minor incon­sis­ten­cies between them. I then designed end caps, axles, and wheels.


The design appeared to be sound, but the print­ing was iffy. What I ended up with, well, the web­site Hack-a-Day has a weekly fea­ture called Fail of the Week. It chron­i­cles great ideas that are brought to near-completion, but that just don’t work. There is then the hope that some­one in the com­ments (or oth­er­wise) can either learn from it or pick up the idea and improve it. To build a bet­ter mouse­trap, as it were.

My Replicator has some ther­mal prob­lems with large or long prints. Different regions of the lay­ers cool at dif­fer­ent rates, caus­ing some warp­ing. With cen­tral prints, every­thing is good, but prints with far-reaching foot­prints end up curl­ing and warp­ing. The end caps looked and fit great. The axle was warped and the wheel was seri­ously warped. I aborted.







At some point I might try is Zheng’s ABSynthe print­ing method. Up to this point, I have been a MakerBot purist and stuck with the stock parts and meth­ods. I hap­pened to have a few mouse­traps on hand thanks to an impulse buy after the warped print­ing. I thought I might refine the design with the smaller traps. The parts are smaller and eas­ier to print ver­sus work­ing with the rat trap’s larger, slower to print, and more prone to error parts. Another fac­tor in this deci­sion was that I was dubi­ous of the rat trap’s spring. I thought it might have too much torque. It’s a pretty nasty spring. The smaller mouse­traps also have a lot of power, but I felt they might be more work­able than the rat trap.

This, then, leads to the Rat Racer’s younger brother, the Mouse Car.


The Rat Racer parts in their cur­rent form can be down­loaded from Thingiverse.

To be con­tin­ued…

Posted in: MakerBot Projects

2013-10-13 14.34.47

Attic rats lead to custom-printed vent covers

We have (or rather, had) rats in the attic en la casa de Enigma. Before deal­ing with them directly, I thought it impor­tant to iden­tify and fix the ingress and egress points. There’s no point to set­ting up rat traps if wave upon wave of rats keep arriv­ing.

I found three can­di­dates. One was a break in the wall near the exte­rior base­ment door. I am fairly cer­tain that was where they were get­ting into the house. The next spot, an inter­est­ing one indeed, was the seam between the wall and the floor behind the kitchen stove. There is no strip of base­board there, so it’s just raw wood floor meet­ing raw plaster-and-lathe wall with about a half-inch gap between. I believe they used this for the occa­sional jaunt into the kitchen to pil­fer cat food and cat toys. Yes, they stole cat toys. We have a few toys that are essen­tially culi­nary rab­bit fur wrapped around a hard plas­tic body. The cats go crazy for these. Apparently the rats do, too. I found a cou­ple of them wedged between the wall and floor in a way that no sim­ple cat soc­cer game could achieve. Oh, and the faces were chewed off, also in a way unachiev­able by cats.

attic vent holes
attic vent holes

The third pos­si­ble ingress point were a series of vent holes, under the eves, in the back of the house. At some point in his­tory, they all had wire mesh screens, but sev­eral of those were no longer present. I can­not say with any cer­tainty that rats were dan­gling from the gut­ters and using these to get in, but I can say that some­thing dis­turbed the attic insu­la­tion. At least one hole was clear pas­sage into the attic. From another, wisps of pink fluffy cotton-candy-like insu­la­tion had undoubt­edly been pulled. My gut reac­tion is to blame nest­ing birds — but whether birds or rats, I’d rather not have crea­tures steal­ing my insu­la­tion.

The obvi­ous thing to do is replace the wire mesh screens, but that would be chal­leng­ing. As I said, the mesh is on the inside of the holes. Those holes are on the sec­ond story of the house, past the upstairs liv­ing quar­ters, past the stor­age areas, past the crawl­space, at a point where the roofline meets the joists, with just inches of clear­ance. Getting back there would be dif­fi­cult. Having enough clear­ance for a ham­mer or sta­ple gun? That was unlikely to be the case.

So. Attach the screens from the out­side. But with­out look­ing crappy. The “I’m a cheap land­lord” solu­tion would be to cut square of wire mesh and staple-gun them over the holes. Screw appear­ance. But I didn’t want that. I wanted a solu­tion with a lit­tle more style. Maybe cut some fancy trim in the miter box to build up lit­tle square ridges to cover the mesh edges — sim­i­lar to what you’d do with a wooden screen door. That would look bet­ter, but I’d still have weird squares of mesh around each round hole, which I thought would look bad. This got me think­ing about the heat reg­is­ters within the house.


I could design some­thing sim­i­lar, pro­to­type it in plas­tic, maybe have it pro­fes­sion­ally printed or laser cut in a nice look­ing stain­less metal, and have the same vic­to­rian flair on the out­side of the house as I do on the inside. After a lit­tle bit of copy­ing, doo­dling, and trac­ing, I had a viable vent cover. (I highly rec­om­mend the books “Florid Victorian Ornament” and “Treasury of Ironwork Designs”)

grill2-render Screen Shot 2013-10-12 at 12.24.14 PM

61A6S7kXf+L._SX258_SH20_BO1,204,203,200_ 516z15gcYaL._SY344_SH20_BO1,204,203,200_

I printed out a sam­ple and tested it out.

2013-10-13 12.54.40-2


2013-10-13 14.34.47


Looks good! (Though this one is a lit­tle off-center due to the awk­ward angle — behind a prickly bush, above a win­dow — I had to install from.) It turns out metal is a lit­tle cost-prohibitive, but the plas­tic looks fine and should hold up well.

2013-10-13 14.58.37


2013-10-13 14.58.26


2013-10-13 14.34.35

Since installing them, I’ve noticed a few more cotton-candy-like threads of insu­la­tion pulled through the grills, but I at least have a guar­an­tee that the open­ings are now too small for ani­mals to pass.

You can find the 3D model and design files over on Thingiverse as “dec­o­ra­tive round vent cover.”

Posted in: MakerBot Projects


Using the Chubby Tricorder

This is the final part in a series of three, describ­ing the hard­ware behind the puz­zle gad­get I designed for Curtis’ birth­day puz­zle game. If you arrived at this page from else­where, you may want to start at Part 1.

The story so far: a secret sur­prise puz­zle game, a hard­ware gad­get that was designed and built, but needed more than proof-of-concept code, loom­ing dead­lines, oh yeah, and there’s that wire­less data com­mu­ni­ca­tions mod­ule we just barely touched upon.

Do you remem­ber, way back in Part 1, when I said I would build the hard­ware and write the soft­ware, but I did not also want to be on the line for writ­ing a puz­zle? While all of this design­ing and build­ing was going on, Jeff and Donna of Los Jefes were on the case. Donna wrote an amaz­ing puz­zle (or, rather, set of mini-puzzles) and Jeff was, I kid you not, retro­fitting a tri­corder! We knew pretty early on that because this is an inter­ac­tive device, it could have mul­ti­ple answers or mul­ti­ple stages lead­ing to a final answer. For instance, in my proof-of-concept hard­ware, dif­fer­ent answers printed dif­fer­ent mes­sages.

Jeff inde­pen­dently had the plan to retro­fit a toy tri­corder with a color screen and micro­proces­sor. He also found some RF mod­ules — a trans­mit­ter and cor­re­spond­ing receiver — on SparkFun and put together the idea that the tri­corder and puz­zle box could wire­lessly talk to each other. The puz­zle box could have dif­fer­ent states and trans­mit out a bea­con to indi­cate what state it is in. The tri­corder could then pick up on that bea­con and use that infor­ma­tion to show dif­fer­ent scan results. Beautiful!


Except he was in Seattle and I’m here in Portland, and we prob­a­bly wouldn’t get the chance to per­form any sort of inte­gra­tion test­ing until the night before. Yeay…?

Running with this device pair­ing, Donna came up with a great set of five mini-puzzles. I have to admit that a cou­ple of them stumped me and the playtesters (“YAR!”)… though typ­i­cally just one digit out of a four or six digit num­ber. (Brute forc­ing, for the win!) Much like the other puz­zles in this par­tic­u­lar game, the trivia and dif­fi­culty level were tuned specif­i­cally to Curtis, so some things that would be obvi­ous for him caused us to strug­gle in test­ing.

Without get­ting too spoil­ery (though I don’t know how you’d play unless you decided to build your own copy of the puz­zle gad­get — which you are free, and encour­aged, to do given that all the design files are Creative Commons licensed and all the parts are openly avail­able), the tri­corder cycles pic­tures and num­bers that act as a primer for pic­tures cycling on the puz­zle box. There are five stages of this, not exactly with increas­ing dif­fi­culty, but with dif­fer­ent mech­a­nisms for each stage.

Five stages, four images per = twenty images. I wasn’t using a fancy dis­play with inte­grated SD card sys­tem. That used too many pins. The key­pad alone ate up seven pins. The printer ate a cou­ple pins. The screen ate half a dozen. The wire­less mod­ule another. I had 32K to fit the code, the text strings, the libraries for talk­ing to the printer and screen, and those images. Miraculously, I got every­thing to fit in mem­ory: 32,234 bytes out of 32,256. Just 22 bytes to spare.

It looked like every­thing was ready to go: my snazzy puz­zle box, Jeff’s mind-blowing tri­corder, Donna’s amaz­ing puz­zles. But I worry. I’m an Eagle Scout. I like to be pre­pared with backup plans. We had no way to test the two devices together until the eleventh hour and I wasn’t totally com­fort­able with that.

The first thing I did was to build my own fake tri­corder. Jeff built his own fake puz­zle box. My tri­corder wasn’t fancy enough to dis­play pic­tures, but it could show me the bea­con code it is cur­rently receiv­ing. With each of us with our fake “other device,” we could at least do some amount of inde­pen­dent inte­gra­tion test­ing.


This actu­ally revealed a tim­ing quirk in my puz­zle box. In our agreed-upon pro­to­col, I trans­mit a sin­gle byte code at 400bps every 50 mil­lisec­onds. Through a bit of trial and error, Jeff found that the 50ms gives just the right amount of time for the receiver to lock on to the eye-pattern of the transmitter’s bea­con. My event loop that cycles images and waits for input has a 10ms delay at the bot­tom. I retrans­mit­ted every five cycles of that loop, but for­got to take into account the delays inside of library code — for exam­ple, scan­ning the key­pad or refresh­ing the dis­play. I tuned the bea­con retrans­mit counter to bet­ter account for this vari­able delay.

But still, my test­bed tri­corder had some prob­lems. Often, it would get the right bea­con code. Occasionally, it would slip in to a mode where it either got out of sync or there was sur­round­ing RF inter­fer­ence. At those times, it only got garbage with an occa­sional bea­con code, but not enough in a row to be con­sid­ered a solid hit. I found sig­nal to be much more clean on the edge of the puz­zle box with the RF mod­ule retain­ing clip, so I drafted a Starfleet mes­sage point­ing to “weak­ened shield­ing” on that edge:

Probe Shielding

But more impor­tantly: how the heck were we going to playtest the puz­zle with­out the tri­corder??? Enter the Emergency Backup Tricorder. I threw together a quick webapp, opti­mized for the iPhone, to take the place of the tri­corder. Obviously, it could not auto-detect the puz­zle box’s bea­con code. You had to man­u­ally select which mini-puzzle stage you were play­ing, but it oth­er­wise con­veyed the same infor­ma­tion. It worked well in the playtest, and the red­shirts escort­ing Curtis around had a Starfleet com­mu­ni­ca­tion flyer, point­ing to the Emergency Backup Tricorder, ready in case of an RF emer­gency:

Backup Tricorder


The playtest was suc­cess­ful, aside from a print­ing hic­cup. I had always assumed that the Arduino was built for 5V input. The CPU it is based around oper­ates at 5V. When pow­er­ing and pro­gram­ming the board via a USB cable, it is sup­plied with 5V.  But it turns out the volt­age reg­u­la­tor on the Arduino board is really more happy with 6 or 7 volts. You can usu­ally get by with 5, but the ther­mal printer gob­bles up power when it prints. My orig­i­nal test­ing was with a 5V 2A power sup­ply, which seemed to work on my work­bench. The dif­fer­ence being I also had the Arduino board plugged in to my lap­top via USB, to quickly and fre­quently upload new code. This alter­nate power path kept the CPU alive dur­ing heavy print­ing. With just the 5V sup­ply, the printer would occa­sion­ally starve the main board’s volt­age reg­u­la­tor, caus­ing it to reboot. I fixed this by bump­ing up to a 9V 2A sup­ply. That’s more than enough power and cur­rent. When the puzzle’s loca­tion switched from indoors (a paint­ball stu­dio) to out­doors (a park with no nearby power out­lets), I did two things. First, I threw together a 6V exter­nal power sup­ply made with D bat­ter­ies. This worked for me at home, but failed dur­ing the playtest. Second, I mod­i­fied the print code slightly to go a lit­tle eas­ier on the ther­mal printer, adding pauses between lines of heavy text. This seemed to then work (but may or may not have again failed on actual game day).

From what I under­stand, the game day itself went well (though, again, may have had a return of the print error). I was at HQ all day, lis­ten­ing for updates, black­ing out win­dows for Artemis, and assorted other ran­dom tasks.

If I were to do this again, I would prob­a­bly  ditch the printer. It added bulk, cost, and a lot of unpre­dictabil­ity to the power require­ments. I think I would have been bet­ter served by switch­ing to a larger, pos­si­bly color, screen. On a longer time­line, I might have toyed with dif­fer­ent mech­a­nisms of secur­ing a piece of paper or other object inside of a lock­ing panel. Most geo­caches are wooden boxes. Not only is the tex­ture pleas­ing on your hands, but you have plenty of wiggle-room with regard to plac­ing hinges, latches, sole­noids, and ser­vos. You just pick a spot and use a wood screw. I have not seen a reverse-geocache made of acrylic, so don’t know if a hinged-door design or a drawer would work bet­ter within the prop­er­ties of the plas­tic. My guess would be a drawer, latched into place with a sole­noid (or a servo and cut power to it when not in use, so it is not con­stantly try­ing to main­tain its posi­tion).

Despite the snags, I had a lot of fun design­ing and build­ing this puz­zle box. Curtis now owns it and can do what he wants with it. I know he has toyed around with home automa­tion (cf. cat food robot). The Arduino is really easy to write code for, espe­cially when you have a func­tion­ing plat­form with but­tons and a screen. The USB pro­gram­ming port is exposed right through the side of the case, the com­plete pro­duc­tion source code is on Github as well as var­i­ous board bring-up test apps, and the box is fairly easy to open up in the event that one would want to, say, swap out the printer for some other device on those same pins. Or it can stay a com­mu­ni­ca­tions probe indef­i­nitely. I’m fine with that, too.

Happy birth­day, Curtis!

Posted in: Dear Diary Gadgets MakerBot Puzzle Games


Designing the Chubby Tricorder

This is Part 2 in a series of three describ­ing the hard­ware behind the puz­zle gad­get I designed for Curtis’ birth­day puz­zle game. If you arrived at this page from else­where, you may want to start at Part 1.

The story so far: a secret sur­prise puz­zle game, a gad­get that had to “con­tain” a piece of paper upon open­ing, the deci­sion to make that gad­get elec­tronic with screen and key­pad and to make that paper printed on demand by a ther­mal printer. Would it work???

Fortunately, I had almost all the parts on hand. I keep around a cou­ple of extra scratch Arduinos. You never know when a project idea will strike and it is great to be able to jump on it and start pro­to­typ­ing. I also had some OLED screens and matrix key­pads around for some other projects I had not yet got­ten to. The only thing I was miss­ing was the ther­mal printer. Ordered!

The ther­mal printer arrived the fol­low­ing week­end. As a proof-of-concept, before invest­ing too much time and money into the project, I threw together a sim­ple cir­cuit and sim­ple piece of test code. I knew that each part worked well on its own. On paper, I knew there were (just barely) enough pins for all parts to be con­nected to the Arduino. I wasn’t sure if all the parts libraries played well with each other and whether they’d like the par­tic­u­lar pins I remapped them onto.


In this pro­to­type, the screen prompts for a code and, based on the code, could print some­thing out or dis­play an error. I had answers for 42, 411, 911, and 867‑5309. It worked beau­ti­fully. I shared the fol­low­ing video with the rest of the team:

Hardware Test

That con­firmed the pieces worked together in har­mony. The rest was code and pre­sen­ta­tion. Next up was the enclo­sure. I knew I wanted it black acrylic. The size was a series of trade-offs. My ulti­mate desire was to make it hand­held. That was at odds with the size of the ther­mal printer and the behind-panel depth of the power but­ton I wanted to use. I also wanted enough space inside so that I could get to the parts with­out feel­ing like I was work­ing on a ship in a bot­tle. It took a few rough sketches to get a gen­eral place­ment that felt right, with regard to both the inter­nal vol­ume and the exter­nal place­ment. The printer had to be “up top” so it printed right-side up. Although I mulled over swap­ping their posi­tions, I decided the screen had to be above the key­pad. The power jack and but­ton had to be some­where and I wanted the Arduino’s USB port exposed for ease of pro­gram­ming.


I finally set­tled on one par­tic­u­lar arrange­ment. This sketch isn’t to scale — the over­hang­ing edges are exag­ger­ated — but it con­veyed a rough idea of how both the inter­nal and exter­nal pieces fit together.


With this in mind, I set forth to design the enclo­sure. But first: where would I build it? For me, loca­tion dic­tates mate­ri­als and mea­sure­ments. My choices were ADX or Ponoko. ADX is local, but they don’t have a mate­ri­als library. I can get acrylic a few blocks away from TAP Plastics, but TAP only sells acrylic with fractions-of-inch thick­nesses. I could get 1/8″, but the shape library I’ve built up over the years is pri­mar­ily 3mm, which is close, but not close enough. I couldn’t eas­ily reuse a lot of my shapes. ADX also requires a bit more babysit­ting. I have to make an appoint­ment, get the plas­tic, bring it in, and stand by as they go over my print files. It’s fun, but I can only make it to TAP on Saturdays and ADX on week­ends. If I had model files on a Monday or Tuesday night, it would take a good chunk of my time on the fol­low­ing Saturday to get them cut. With Ponoko, I could upload the files imme­di­ately. Their online scan­ner can per­form the sanity-checks that the ADX folks do by hand. You can pay a few more dol­lars to bump your job to the front of the queue, and because they’re on the left coast, ship­ping is fairly quick. I could upload the design on a Sunday or Monday and have the cut acrylic in hand on Friday, free­ing up a big chunk of the week­end. On a longer timescale, I would have gone with ADX and used it to build up my 1/8” acrylic library of cuts, but I opted to pay a bit more for the con­ve­nience and speed of Ponoko to reduce the over­all project risk.

I started with an ini­tial draft in paper of just four of the six sides. This was to get the ini­tial parts cor­rect as well as ensure the cutouts for screen, key­pad, printer, but­ton, and power jack were cor­rect. A few X-Acto cuts later, I had ver­i­fi­ca­tion. Revision B built up the sides and revi­sion C cor­rected a few dumb copy/past errors with slot and tab align­ment. I uploaded the files, paid the $29 (plus queue-jumping fee plus ship­ping), and got to wait a week.

paper-screen paper-keypad



I focused back on the code for that week until the acrylic pan­els arrived. Consequently, I added a new com­po­nent to the design, as well: a wire­less com­mu­ni­ca­tions mod­ule, but more on that in the next post. The pan­els arrived look­ing beau­ti­ful:


But they did have a prob­lem. The pre­vi­ous laser project I worked on was in wood, which has dif­fer­ent strengths than acrylic. I’d for­got­ten that I really hadn’t left much space on the printer edge for each of the four the bolt-retaining slots. In fact, they were so thin that one of them broke when I peeled off the pro­tec­tive adhe­sive paper.


No prob­lem, actu­ally. When all you have is a ham­mer, every­thing looks like a nail – but when what you have is a 3D printer, every­thing looks like a shim or a bracket or some other sim­i­lar prob­lem wait­ing to be solved. I used OpenSCAD to design the fol­low­ing bracket (and the three other ways to mir­ror it in the X and Y direc­tions):


Printing was a piece of cake.

Br5_IMG_4721 Br5_IMG_4719

A quick depth mea­sure­ment, add some super­glue and all was well. Note: when glu­ing things to acrylic, you’ll want to sand­pa­per the sur­face a bit. It gives the adhe­sive a bit more to stick to.

Br5_IMG_4720 Br5_IMG_4736

And while we’re talk­ing about brack­ets and adhe­sive: I also designed and printed a bracket for the wire­less mod­ule. All of the other com­po­nents in the sys­tem were dis­crete parts that get fit­ted into holes in the case. They are then wired into header blocks that plug into the Arduino’s board. The wire­less mod­ule was the out­lier. I did not have a cus­tom cir­cuit board to mount it into and I did not want it rat­tling around inside the case. I designed, printed, and attached a bracket to the inside of one of the case’s pan­els that lets you clip in the wire­less mod­ule.

RF_Module_Bracket bracket-printing bracket-fitting bracket-attach

Everything looked good. At least on the out­side. The inside was func­tional, but a rats nest of wires. “Quick! Cut the green wire!” “Yeah, but which green wire?!”


It was time to but­ton up the case. If you’re build­ing this kind of case, it is highly advis­able to have some reverse-tweezers to hold things for you. Don’t drop the last nut inside the case!




But how well did it work? Proceed to Part 3!

Posted in: Dear Diary Gadgets MakerBot Puzzle Games