BristleBots – Easy DIY STEM/STEAM Robots

If you don’t know who EMSL are, you’re missing out.  Evil Mad Scientist Laboratories is a small family owned DIY electronics business in the California Bay Area with a deep enduring commitment and support for open source software, open source hardware, educators, and Makers.

And they are genuinely good people.  Their blog is an incredible resource for anyone from beginners in crafts and electronics to grizzled veteran engineers.  There are free tutorials, resources, and tons of kits for every level.  I’ve purchased several of their kits and cannot recommend their products highly enough for the material quality, comprehensive (and occasionally playful) instructional materials, and support – including a robust community and forum.1

Since our family is home an awful lot these days, we’re always looking ways to keep our kids curious, engaged, and occupied.  Our next project is the EMSL “BristleBot.”2

Their write up and video tutorial will provide you with all the information you need to help build a very tiny zippy robot from things you probably have around the house. 3  There’s a lot to talk about with your kids here – from basic electrical connections, off-center motors, springiness of the bristles, to how the directions of bristles affect the robot’s travel.

A box of parts to make enough for a whole classroom might be about $50 (or less) if you could buy parts in bulk.  But, if you only need a handful of BristleBots for your household, you could taking things apart for motors, old toothbrushes for bristles, common coin cell batteries for free/nearly free, maybe adding some matchbox car or marble run tracks for BristleBot trails or a cardboard box for a battle arena.

  1. Most notably their Egg-Bot []
  2. Time capsule:  This post was published in July of 2020 []
  3. You can get these from old cell phones, cheap dollar store electric toothbrushes, or lots of places online []

An Assembled CuttleBot Body

It’s one thing to hack away in CAD software, rendering the idea of a model.  It’s another thing entirely to pull it off the print bed and pop it all together.

Last night before going to sleep I started the 2+ hour print job that became the center body piece for the CuttleBot.  When I woke up in the middle of the night, I plucked it off the build platform, started the tail section printing (a 90 minute print job), and passed out again.  This morning I printed 15 connector pins while getting ready for work.

Just before leaving for work, I yanked out the support structures using some needle nose pliers and popped it all together with the connector pins, and took some pictures to share with you, dear reader.

This was an incredibly satisfying result.  Sometimes the work spent on something like the little pins and sockets feels so removed from the design of the main object – so very far from the goals.  It feels similar to the work that goes into painting a house – you spend all this time NOT painting before you actually paint.  Moving and covering furniture and decorations, taping and masking areas off, removing cabinets and doors.  But, as long as I was able to keep my eye on the vision of the final model, laying that ground work on these components meant that I really could assemble a foot long plastic CuttleBot body in a few seconds.

Sigh.  At this point, it kinda resembles a CyberMat more than a robotic cuttle fish.

I enjoy sketching out my ideas, so here’s one in case you like looking at them.

It’s NOT a CyberMat! It’s a robotic cuttlefish!

So, what’s left to do?  A whole lot.  I need to:

  1. Design newer, thinner tentacles, so I can fit more into the CuttleBot’s head.
  2. Hollow out the robot’s head or at least create channels for wiring for LED’s inside the eyes.
  3. There needs to be some mounting areas inside the robot to secure one or two micro servo motors, a small circuit board, a battery, and possibly a few additional components.
  4. Possibly create a door allow easy access to the interior of the robot.  Once I start adding electronics, it might be great to have an on/off switch and nice to be able to connect a USB cable to it to recharge an internal battery or reprogram the behavior.
  5. Add the electronics and program them.
    1. This is probably two servos, several chained NeoPixel LED’s, a LiPo battery, an Adafruit Trinket, and possibly a LiPo charger (if I have one lying around).
    2. If I’m already working towards building a new version anyhow, I might want to drop a few dollars on an OSHPark Board to help make the power from the LiPo easier to route to the servos, LED’s, and board.

However, I don’t think I’m going to be able to finish the robot before Friday.

I think I could probably manage blinking LED eyes by Friday.

Maybe.

Companion Robots: Building Robot Friends
  1. Cephalopod Robot Friend, the story so far
  2. Cephalopod Robot Friend Progress
  3. CuttleBot Body and OpenSCAD Design Tips
  4. An Assembled CuttleBot Body
  5. Building the Monocle Top Hat Cat for #MicrobitVirtualConcert
  6. Companion Robots and Maker Faire Season!

CuttleBot Body and OpenSCAD Design Tips

I really like 3D printing – but really dislike post-processing.  This means I’ll make extra efforts to design things that can just be plucked off the build platform and hand assembled without tools.  With my limited build volume, this also means larger objects need to be printed in sections.

I’m very proud of a particular design method in the CuttleBot.  I designed the organic and non-angular design of the CuttleBot body by using the “hull” function and several carefully deformed and positioned spheres.  However, it would be very difficult to hollow out the interior – since it would mean designing another entire structure to be subtracted out.  Instead of creating the outside shape I wanted and using difference to hollow the interior, I designed the interior shape and used that to create the exterior with the “minkowski” function.

Here’s an OpenSCAD code example:

difference()
    {
    //  Traces sphere around exterior of cube
    minkowski()
        {
        //  Main object
        cube(50, center=true);
        //  Object to trace around main object
        sphere(r=5);
        }
    //  Removing center of object
    cube(50, center=true);
    // Arbitrarily large cutout
    cube(10000, center=false);
    }
Minkowski sample

Minkowski sample

Although, now that I think about it, there’s probably an even cooler way to do this!  Since the above code needs to refer to the “target” object twice, that code can be simplified by using the “children” function.  The below code creates an identical shape.

hollowObject(5) cube(50, center=true);

module hollowObject(thickness)
    {
    difference()
        {
        minkowski()
            {
            children();
            sphere(r=thickness);
            }
        children();
        //  Arbitrarily large cutout
        cube(10000, center=false);
        }
    }

The great thing about a modeling process like this is it allows  you to maintain an even thickness all the way around the model.  This would be increasingly difficult as the complexity of the underlying model increases.

Lastly, to return to the model, after hollowing out the interior of the CuttleBot, I added areas for the pins to connect the sections together.  The body of the robot is in three sections – the head, the mid-body, and the tail sections.

There’s still more to do on the model.  Ideally, I’d create a way to open the robot without having to completely take it apart each time.  A hinged door would work fine.  Also, I should probably add an area where one or more micro servos could be zip-tied or otherwise secured in place.  Also, I’ll need to modify the robot’s head later on to allow for multiple (smaller) tentacles and channels for adding wiring for LED’s to the eyes.

There’s also the whole “adding electronics” thing.  You know, to make this less a puppet and more a robot.

Companion Robots: Building Robot Friends
  1. Cephalopod Robot Friend, the story so far
  2. Cephalopod Robot Friend Progress
  3. CuttleBot Body and OpenSCAD Design Tips
  4. An Assembled CuttleBot Body
  5. Building the Monocle Top Hat Cat for #MicrobitVirtualConcert
  6. Companion Robots and Maker Faire Season!

Cephalopod Robot Friend Progress

Well, it’s here!  Today is the start of #CephalopodWeek on ScienceFriday!  There’s a little progress to report on my, tentatively named, CuttleBot.  I’ll post a picture first, then get to describing the progress so far.

Assembled CuttleBot head, side view

In the prior post I listed some of my sources of inspiration.  Another such source is the work of Sean Charlesworth and his awesome Octopod, Gowanus Monster, and newly published Scuttleship.   ((If you like his work, be sure and check out his Etsy shop!))

Since I need special connectors for the articulated/articulating tentacles and I wasn’t able to edit the files in OpenSCAD, I wasn’t able to use Sean’s STL files.  However, I really like the aesthetic of his designs1 and how they really evoke the form of an octopus or cuttlefish.  Here’s a mock up I used to help me visualize what a full-scale Scuttlefish head might look like with the tentacles I designed.

Scuttlefish with placeholders for tentacles

Scuttlefish with placeholders for tentacles

Unfortunately, the Scuttlefish head and body parts are just a tad too large for my small printer’s build volume.  However, even if I were using a larger printer, I would still not want such a large robot as I’m hoping for this to be a shoulder-mounted companion.

Thus, I began work creating an OpenSCAD cephalopod cuttlefish head inspired by Sean’s work.

Now that I had a design, I set the printer to work over night.  This design is mostly to see if the various parts for the tentacles would work with this head.  Since I want to put some LED’s in the eyes and possibly the mouth, I’ll need to hollow it out later.

The print took a little over an hour for the head.

How about a video of it working?

I’m very happy with the progress so far.  If I can shrink down the tentacle mechanisms, I can add more tentacles for more interesting emoting and animations.  The video just shows the results of me yanking the fishing line running through the CuttleBot’s head.

Here’s a few more sketches of how I am planning on putting it all together.

I might add some fabric frills / fins, instead of printed ones.  I was also contemplating letting the top “shell” of the CuttleBot be formed from 3D printed spines with a fabric or thin plastic sheeting covering.  This might help reduce weight or allow for internal lights to shine through the body.

Companion Robots: Building Robot Friends
  1. Cephalopod Robot Friend, the story so far
  2. Cephalopod Robot Friend Progress
  3. CuttleBot Body and OpenSCAD Design Tips
  4. An Assembled CuttleBot Body
  5. Building the Monocle Top Hat Cat for #MicrobitVirtualConcert
  6. Companion Robots and Maker Faire Season!
  1. Cephalopod Steampunk?! []

Cephalopod Robot Friend, the story so far

Quick lead in:  I am trying to build a cephalopod robot shoulder friend.

I was disappointed that I only learned of Glow Ascii‘s owl robot companion, Archimedes, after Maker Faire Bay Area 2018.  Over the year, leading up to Maker Faire Bay Area 2019, I followed Odd_Jayy‘s spider/bowler Anansi robot companion with similar rapt interest.

Still high off Maker Faire 20191 , I was also excited by the prospect of #CephalopodWeek on NPR’s ScienceFriday.  Between cuttlefish, squid, and various octopuses (especially the “Opisthoteuthis Adorabilis“), there are a LOT of awesome little friends to consider making.

While trying to avoid work, I posted a sketches to Twitter.

Last week I started designing a few parts, drawing from some experience designing printable prosthetics for the E-nable project a few years ago.  I was trying to build it out of what I had on hand, which did not include elastic cord.  I thought a zip tie might provide enough “spring” and “give” to work.

I admit, this was a total mess.  I suppose it is only fitting I use this meme featuring Dr. Zoidberg.

Thanks Dr. Z

Thanks Dr. Z

Thanks to some kind encouragement from Odd_Jayy, I kept moving forward.  Rather than focusing on the end of the tentacle, I got to work on the basics of the mechanics – channels for the elastic cord and fishing line, wedges cut into the faces so the tentacle could articulate.

The tabs on these parts were too thin and tended to break when I assembled them.  However, the next version worked really well.

These worked a lot better, so I started cranking out parts.

https://www.youtube.com/watch?v=QLUkgY5XDNg

https://www.youtube.com/watch?v=H–MmB1uzrA

The nice thing about these tentacles is that they look somewhat lifelike without actually requiring much in the way of electronics.  As long as I can design a body/housing and put a servo inside, that one servo could possibly pull on 8 different sets of fishing line to articulate all the tentacles at the same time.  And, since it’s just fishing line, there’s no special routing of brake cables necessary.

The tentacles are somewhat larger than I would like, so that means where they connect to the body needs to be similarly large.  There’s definitely room for improving the tentacle segments.  I’ve already designed two different “ends” for the tentacles, so they’re rounded instead of exposed connectors, fishing line, and elastic cord.  Also, to make the curling tentacle look better, I should angle the the top and bottom of each segment.  Another improvement would be to rotate the articulation angle for different segments to give the tentacle a more organic look when moving.

However, if I don’t get working on the body of the robot, it’s not going to ever get done.  Given the size of the tentacles, I’d need to have them all on one side, lest the little robot take over my entire shoulder.  Here are some “Cuttle-Bot” sketches along with a robot body design.  If you look at the design, you’ll notice the connectors are rotated to different angles.  This is so that the tentacles would each spring back together towards each other – and then splay outwards when articulated.

However, this last design takes FOREVER2 to render in OpenSCAD.  This is at least partially due to design and code inefficiencies, but also due to the number of spherical parts, facets, and “hull” operations needed to make these parts work.

I think I may want to try shrinking the tentacles slightly so I can build a smaller-bodied robot.  Either way, I have to get cracking on at least some kind of housing/body and mounting motors/electronics before I can keep moving forward.

Companion Robots: Building Robot Friends
  1. Cephalopod Robot Friend, the story so far
  2. Cephalopod Robot Friend Progress
  3. CuttleBot Body and OpenSCAD Design Tips
  4. An Assembled CuttleBot Body
  5. Building the Monocle Top Hat Cat for #MicrobitVirtualConcert
  6. Companion Robots and Maker Faire Season!
  1. LONG LIVE MAKER FAIRE! []
  2. Well, a little over 5 minutes []

DIYFaire.com: Hello Maker World!

There were dark rumors going into Maker Faire Bay Area 2019 which imparted a cloud over the event.  On June 8, 2019 I was still reeling from the news Make and Maker Faire were closing, so I bought a domain and created a website (DIYFaire.com, now lapsed) with the idea that come January of 2020 perhaps I might find a way to get together again with far flung friends on the same weekend.

The website is gone, but Archive.org remembers and the WordPress installation may yet exist.  Although I write this preamble on 7/12/2023, the day I will remember I’d heard Maker Faire was coming back, I’d like to preserve that post on 6/8/2019 here on my main blog:

Make: and Maker Faire may be gone. I hope they’re not. I hope Dale and the Make crew figure out a way to rise up. People made things, just for the sake of making them long before Make they’ll continue to do so. Knowing people will continue to make doesn’t really salve my sense of loss. I feel like we’ve lost too much, mourned too much, and it still feels so raw.

 

At the same time I’m not going to miss Makers, because I don’t have to. Makers are not going anywhere. I am going to miss the opportunity to meet up with Makers and far flung friends at least once a year at Maker Faire.

 

Fortunately, the end of Make and Maker Faire are not the end of the friendships sparked and forged there.

 

Here’s my promise to you, right now. On the weekend of May 16-17, 2020 I’m going to travel out to San Mateo. I’m going to stay out there for the weekend. And, I’m going to bring some stuff I’ve made or been working on.

 

I don’t have any idea what “DIYFaire.com” is going to be. If nothing else, it’s a place holder.

 

It’s a “save the date.”

 

If I don’t see you sooner, dear friend, let’s start making something together right now. Let’s make a plan to hang out, share things, and continue our friendship. You’ll forgive me for ending with someone else’s words.

 

“And if you’ve come this far, maybe you’re willing to come a little further. You remember the name of the town, don’t you?”

Maker Faire Application: Vacuum Forming Workshop

DIY Vacuum Formed Arc Reactors

DIY Vacuum Formed Arc Reactors

I’ve been making some notes as I work on my vacuum former and the proposed workshop for this year’s Bay Area Maker Faire.  Here’s some ideas and thoughts, in no particular order.12

  • Workshop Proposal
    • I’ve demonstrated my bucket vacuum former at my daughter’s school a few times – and it is always a huge hit.  The vacuum formed result looks like so much more than the product of very cheap and accessible materials.  Two years ago I put on a presentation at Maker Faire about how to build a vacuum former – and this year I want to try something even more ambitious.  Here’s the slideshow from 2017.

    • I want to do an entire workshop on how to build and operate a vacuum former – and then let people try to vacuum form their own objects.  One of my favorite things to vacuum form is an “Arc Reactor” and then augment it with an RGB flashing LED and a coin cell battery.  However, I think people would also enjoy making goggles and phone cases.  It takes about 30 seconds to heat up the plastic and just seconds to actually vacuum form a shape and let it cool down.

https://www.youtube.com/watch?v=9Prj04gPeLw

  • New Developments
    • Several months ago, just before Thanksgiving, our stovetop stopped working.  Yeah.  I know.  Talk about timing, right?  While we scrambled to get a new cooktop ordered, delivered, and installed, we also purchased an inexpensive hot plate from Amazon.  I had originally used an old hand-me-down large toaster oven to heat up the plastic, but wondered … is there a better way?  That toaster oven is huge and takes a long time to heat up.  This weekend I was delighted to learn the hot plate heats up very quickly, gets hot enough to soften the plastic, and works as a fantastic and compact replacement for the toaster oven.
      • There are a few caveats to using the hot plate.
        • The heat was more localized, causing the center of the plastic to become thinner and saggier.  When the plastic plates were heated in the toaster oven, they tended to heat more evenly.  Perhaps if I tried a lower heat setting or held the plastic plate higher, this might be mitigated.
        • It’s hard to get a sense of the plastic without actually watching it get soft and wobbly.  This is especially true when the plate is inside the toaster oven – there’s only room enough for one or two people to see what’s going on.  However, with the hot plate, there’s no enclosure3 to obscure an audience view.
        • I was somewhat paranoid about letting the plastic droop down onto the heating element.  I’m pretty sure it would smelled horrible, made a huge mess, been nearly impossible to clean, and made the hot plate unsuitable for any other purposes.  I may try to locate a cheap hot plate from a second hand / thrift store / goodwill to take to Maker Faire.  Though, now I’m also wondering if it might be possible to repurpose an old coffee maker, grill, griddle, or panini press, into the heater for this project.  Maybe if I covered the heating element in aluminum foil first, that would protect the surface?
      • The power switch of the vacuum head / bucket head is conveniently placed right on top for normal operation.  For unusual operations such as this, where the vacuum is upside down, it is decidedly inconvenient.  I used a power strip with a switch which made it much easier to operate the vacuum.  I think I may invest in a dedicated foot switch extension cord for this project.  It’s a very cheap upgrade that would make it a lot easier to do.
    • I also have a prior post discussing some additional ideas on how to improve this process.
  • Accessories / Things to Bring to Maker Faire.  There are SO many little parts to a project – forget any one little thing and you’re going to be making a last minute trip to the hardware store.4 Here’s a few lists of things I will need:
    • Parts
      • Bucket
      • Vacuum head
      • Hot plate
      • Power strip or foot switch extension cord
      • One or two wire coat hangers
      • 6x Small to medium binder clips
      • Wooden dowel (1x 6″ riser, 3x 8″ legs)
      • 3D printed parts (1x plug, 2x riser caps, 3x leg holders, 3x feet)
      • Hot glue
    • Building Tools
      • Drill (for drilling holes)
      • Ruler and / or paper grid
      • Chisels
      • Hacksaw (cutting the wooden dowels)
      • Hot glue gun
      • Sharpie
    • Presentation Tools
      • Heat gun
      • Scissors (cutting plastic plates)
      • Old socks (DIY oven mitts)
    • Materials
      • Examples of plastic plates in various stages of the process
      • Examples of items made, also in various stages of production
    • Consumables
      • Plastic plates
      • Tape (clear packing tape works well)
      • Fishing line
      • Elastic cord
      • Pens (metallic permanent markers)
      • LED’s
      • Batteries
      • Maybe stickers to give away?
Bucket Vacuum Former
  1. How to Make a Vacuum Former
  2. How to Use a Vacuum Former
  3. Vacuum Former – Things to Form
  4. Vacuum Former – Ideas to Improve Vacuum Former
  5. Maker Faire 2017 How to Make a Vacuum Former Presentation Slides
  6. Vacuum Forming an Arc Reactor
  7. Maker Faire Application: Vacuum Forming Workshop
  1. As always, as much to inform you, dear reader, as to order my own thinking and jot things down before I forget them []
  2. DOCUMENT!!! []
  3. And, now that I think of it, it may be the enclosure which causes more even heating… []
  4. Not that this is a bad thing.  But, I’d rather have to go because I want to do go []

PCB Design with KiCAD

It is pretty incredible that you can find a written or1 video tutorial on virtually any topic to learn anything.  Today, I’m particularly thankful to Shawn Hymel, Sparkfun, and Digi-Key for putting together their Intro to KiCAD video series on printed circuit board design.

This series took me from knowing nothing at all about PCB layout and design to ordering my very first board through OSHPark.  My first design isn’t anything amazing – it was basically a breakout board for an ATTiny85 to make it easier to build small projects. 

My first ATTiny hacked tap light was a mess.  I soldered wires directly to the microcontroller making it a real pain to update. ((I ask you – is this the work of a sane man?)) I soon realized my mistake and soldered an 8-pin socket in its place so I could reprogram the chip easily.

This is the alternative to a custom PCB – a rat’s nest of wires soldered to a chip

Mercifully, Shawn’s tutorial series got me up and running very quickly.  This post is not meant to be a tutorial for KiCAD, but more like a “lab notebook” for the workflow to create a board.  If you haven’t built a board yet, go check out Shawn’s series and follow along in KiCAD.  If you are a novice like me, you might find these notes helpful:

Eeschema

  • If you launch Eeschema separately from KiCAD, you can save different versions of a schematic.  Keeping old versions of design files is hugely helpful to me and if you launch KiCAD directly, the option to save different file names and versions is not available!
  • The keyboard shortcuts in Eeschema are great.  With just a few, it’s possible to really get around quickly.
    • “Shift-A” and left click to place parts 
    • “M” to move parts
    • “R” to rotate parts
  • It is necessary to add “PWR_FLAG” to both the power and ground lines.
  • Double check your connections work by clicking on the bug icon. 
  • Assign the parts you intend to use to match up with the symbols using the “Assign PCB footprints” icon.
  • Save your work and “Generate netlist” to have something the Pcbnew will be able to work with.

Pcbnew

  • First configure the Design Rules by going to Setup -> Design Rules.  Shawn pulled these KiCAD Design Rules from the OSHPark.com website.  KiCAD has apparently changed a little since the version used on the OSHPark website, but the settings are easy enough to identify and change.
    • Net Classes Editor
      • Clearance: 0.01.  Track Width: 0.01.  Via Dia: 0.03.  Via Drill: 0.015.  uVia Dia: 0.03.  uVia Drill: 0.015.  Diff Pair Width: default.  Diff Pair Gap: default.
      Global Design Rules
      • Minimum track width: 0.006.  Minimum via diameter: 0.027.  Minimum via drill: 0.013Custom Track Widths: Track 1: 0.03
  • Read netlist” to bring your design over from Eeschema.
  • Placing parts and drawing lines gets a lot easier when you fine tune the Grid.  I started with 5.00 mils at first, then smaller figures to place smaller parts and features.
  • Once the parts are arranged in Pcbnew, connect the ground and power lines using 30 mil traces and everything else using 10 mil traces.
  • Create the outline for the board cutout by clicking on “Edge.Cuts” and drawing with the “Add graphic lines” tool.  Starting with my second board, I began cutting the corners off, so that they were a little nicer to hold and 
  • Label things on the “F.SilkS” and “B.SilkS” layers using the “Add text”‘ button.  Since my boards are so small, I wanted the text to be a fair bit smaller than the default settings.  I edited the text settings by going to Setup -> Text and Drawings.  
    • Copper text thickness:  0.007.  Text height:  0.035.  Text width:  0.035.
  • Create a copper pour with Place -> Zone, then choose “F.Cu”2 and “GND”.3 and draw a box around your board.  Then repeat for the “B.Cu” and “GND.”

Again, I’m a total newbie at circuit design.  If I got something wildly wrong, please let me know.  :)

  1. More frequently these days []
  2. Front copper []
  3. Ground, natch []

Rocklin Mini Maker Faire 2018

15 Second Drawings
15 Second Drawings

My daughter, TinkerGirl, and I are going to be demonstrating our 15 second drawings at the Rocklin Mini Maker Faire this Saturday.  We’re pretty stoked about this since it will be our first time as Makers at this Mini Maker Faire.  We’ll be the ones wandering around with a DIY dry erase board.

If you’re wondering what the heck “15 second drawings” even means… it’s just what it sounds like.  Both of us will each draw whatever you want in 15 seconds.  Whatever you want, no matter how complicated or absurd, drawing before your eyes in just 15 seconds.

Or, we can teach you how to draw anything in 15 seconds.  Or compete against us or perhaps challenge a friend (or enemy?!) to a 15 second drawing.

You want to learn more?!

Regex: Back reference and Self reference in Regular Expressions

This is going to be a very short and niche post.

Sometimes I have to use regular expression or “regex” searches to parse a bunch of text, but I can’t remember how to use the search function to find a particular sequence of character and then reuse those found characters in the text I’m trying to replace it with.  In Notepad++, this would be done as follows:

  • Search string:   (7//*[0-9]*[0-9])\r\n
    • This will find all entries with “7/3” or “7/14” or similar digits with a line return afterwards
  • Replace string:  \1/2018;
    • This will replace those entries with “7/3/2018;” and “7/14/2018;”, respectively

The trick here is that the first set of search information is collected together within a set of parenthesis, which are then referenced back by the “\1”.  If you forget the parenthesis, the “\1” term won’t “know” what it’s supposed to be repeating.

Like I said, very niche.