A common problem when playing with Arduino is deciding how to secure the circuit board to the rest of your project. Use this laser cuttable mounting plate to attach an Arduino to your LEGO Technic or Bitbeam creations.
I manually cut the mounting plate in the above photo at home with my jewelers drill press and jigsaw. Here's a fun little technique when you don't have a laser cutter nearby: Print out the design on sticker paper. Then attach the sticker to the wood. Finally, use your drill and saw to cut out the final design.
When I get back to TechShop I'll do a proper laser cut, and post more photos.
Here's the completed assembly connected to other beams:
Sorry for all the "ums". I'm really going to try to remove those from my vocabulary. Here's a some good advice on how to remove "ums" from your speech.
[The conference video doesn't cut away from me while I narrate the two robot demo videos. But all is not lost! You can enjoy the two demo links here and here. Oh, and the slides, here.]
Weeks before the conference, I announced that I would unveil the bitbeam robot in my talk. Not satisfied with a mere Worldwide Premiere, I decided BitbeamBot deserved a Galactic Premiere. I used this as motivation to actually finish building the robot. I call this "Embarrassment Driven Development -- make a big public promise to deliver on a deadline or risk embarrassment. Let me tell you, EDD works. Just a few hours before my conference talk, I was still furiously testing circuits and writing code, trying to get it all to work. But I pulled it off. I got the demo working, recorded a quick video of it working on my desk, then sprinted over to the conference to give my talk.
The talk went well. A good time was had by all. Okay, so the next day, I was scheduled to talk with Tim O'Brien from O'Reilly about Selenium. Still fired up by the success at JenkinsConf, I convinced Tim to let me talk about my robot. (He really had no choice, though. I was talkin' robots with or without him.)
bitPad is an inexpensive and easy to build iPad stand made with Bitbeam. Although it's very simple, it shows you some of the fun things you can do with Bitbeam.
When I started the Bitbeam project in July, I didn't focus on how to make money from it. It was more of an art project that had to get out of my head and into the real world. However, people keep asking me when I'm going to start selling kits. I'm pretty busy these days with my awesome startup, but I think it might be fun to make a few Bitbeam kits, get 'em out in the world, and start growing the Bitbeam community. So, if you're interested in buying a bitPad kit, please provide your email address in the form below. Kits are $6. Shipping for up to 4 kits is $5 to anywhere in the USA. (It would make an excellent stocking stuffer!) I'll probably keep the first batch limited to about 25 kits. So act now! :-)
Ta-done! (Almost.) My bitbeam-based CNC machine (aka "bitbeambot") is now mechanics-complete. The physical structure is done, and now it's time to focus on the electronics and software.
The galactic premiere and live demo of the bitbeambot playing Angry Birds on an iPhone will be this Sunday, October 2 at the Jenkins User Conference in San Francisco. Hope to see you there!
I just submitted (5 minutes before the deadline! Phew!) my entry to the Open Hardware scholarship contest. Here's the description I included in the contest entry:
Project Description: Bitbeam is an experiment to combine my two favorite prototyping tools: balsa/basswood and Lego. The idea is to miniaturize grid beam and make it Lego Technic compatible. As with Lego, you can build anything with bitbeam. My first bitbeam project is to build a CNC machine, but with a twist. My background is in software testing, so I'm building a machine out of bitbeam that can test applications on actual mobile hardware, using the Selenium automation API.
Comments welcome!
[Update: Voting is over. Results are at OHSummit. Bitbeam didn't win. :-( But thank you to all who voted! :-) ]
Time for an update of the goings-on in the Bitbeam Basement.
Last week, I purchased some stepper motors from Jameco (Part #: 155460). I went with bipolar instead of unipolar based on what I read on the RepRap wiki page about steppers -- bipolar steppers are used in newer RepRap machine designs. I figured what's good for RepRap would be good for me, since I didn't have an opinion either way.
Next step was to wire up the motor. Here's a trick: if you're searching for concise, correct, easy-to-read instructions on how to create a simple circuit, always append the word "Arduino" to your Google search. It's similar to searching for Linux related things -- for the best docs, append the word "Ubuntu" to your search -- beginner friendly technology projects always have the best docs! It also helps to actually use Arduino and Ubuntu, too! The Arduino bipolar stepper circuit shows how to use an L293D or SN754410NE chip (commonly called "H-bridge") to drive the stepper. Very cool! I knew those were handy for DC motors, but didn't realize they could be used for steppers, too. I happened to have lots of H-bridges around for another project. If you want to pick up some yourself, again Jameco is your friend. (Part #: 1341966)
After wiring-up, I launched the Arduino IDE and opened the stepper example. (Menu path: File->Examples->stepper->stepper_oneRevolution). The built-in library of ready-to-use real world example code is another reason why the Arduino project is so wonderful work with. Thanks also goes to Tom Igoe, who wrote the original version of the code and docs that made their way into the Arduino IDE and website.
With the code ready, and the basic H-bridge good to go, there was one more task to confirm-- did I connect the stepper motor's 4 wires to the H-bridge in the right sequence? Only after I created the above video, did I realize the online data sheet (PDF) shows the correct wiring diagram. I went the brute force way, and just re-arranged the 4 wires while the circuit was running on the Arduino until the axle was rotating properly in both directions. If you get the wiring sequence wrong, the stepper's axle will mostly just jitter in place, rotating erratically. I had a sense that if I got the wiring wrong on the first try, nothing bad would happen (e.g. I wouldn't likely kill the motor or the H-bridge chip), so I didn't feel too guilty just plugging it in and seeing what happens. It's a fine line knowing when to do precisely the right thing the first time, and when to just say "Oh, forget it. Let's turn it on, and see what happens."
The almost awesome part about these specific steppers is that the mounting holes are 31 mm apart from each other. Since bitbeam holes are 8 mm apart, a length of 5 BUs (Bitbeam Units) is 32 mm, which might work with these motors. I took a chance that the motors would mount as-is directly to a bitbeam. With a little bit of wiggle, it works. That's why I said "almost awesome". A stepper with mounting holes 32 mm would be perfect, but 31 is close enough. Lastly, I bought some machine screws from Small Parts to mount the motors to the bitbeams. (Part #: B000NHVPW2) (M3, 10mm long, Zinc Plated Steel Machine Screw, Pan Head, Phillips Drive.)
That's it for now. The next post will show the stepper motor connected up (screwed up?) with some bitbeams driving the X-stage of an eventual Bitbeam CNC machine.
By default, OpenSCAD's built-in circle and cylinder functions are fine. However, for small circles or cylinders with a radius of less than 3mm, the result doesn't look much like a circle at all. This is how a newbie would code this in OpenSCAD.
// Typical small circle
circle(r=2.4);
And here's the result - an octagon!?
The solution is to create a circle with a large radius, then scale it down to the size I want. My trick is to use a radius 10 times larger than I need, then use the scale function to reduce it to 10% of its original size.
// High-precision small circle
scale([.1,.1])
circle(r=24);
And the new, better, non-octagon-y result:
Why does this matter? Bitbeam requires a Lego Technic compatible through-hole radius of 2.4 mm. If I used the default octagon-producing output, and sent it to the laser cutter, round axles, dowels, or bolts would not have fit in the hole. My first remedy was to draw a circle in Inkscape, export to DXF, then use OpenSCAD's linear_extrude function to import my circle and render. DXF-to-OpenSCAD is usually awesome and is featured prominently on the OpenSCAD home page. However, I've thankfully realized it's total overkill for my simple small-radius circle. Trying to figure out how to create a circle in Inkscape in an OpenSCAD-compatible way was surprisingly complicated and tedius. Credit goes, though, to Nudel for posting an excellent and detailed Inkscape to OpenSCAD dxf tutorial. I will definely use that tutorial in the future for more sophisicated designs.