Tuesday, 2 April 2013

Directional Bristle-Bot

One of the endearing things about the basic Bristle-Bot is the 'brownian' dance they perform as they scuttle around a table-top. However, if we want to explore more interesting behaviours we need to adapt the Bristle-Bot design to give it a specific direction of motion.
The Bristle-Bot moves because of the flexing of the bristles as the oscillator vibrates. By orienting the bristles in a specific direction, they will exert a force in that direction, causing the Bristle-Bot to move off in the opposite direction.
Most toothbrushes are made of thermoplastic, that becomes soft when heated and re-hardens when cooled. We can exploit this to bend the bristles to the desired angle. You need a large clamp and a kitchen sink.


  1. Clamp the toothbrush head loosely so that the bristles bend slightly to the rear. Given the next step you might want to ensure that your clamp is liberally oiled to protect it from rusting. 
  2. Try to ensure that they bend evenly as viewed from the front. 
  3. Place into the sink and pour in boiling water until the Bristle-Bot is fully submerged. 
  4. Allow to cool. When you remove the clamp the bristles should remain in their bent position.
The assembly is also a little different to the basic design. Mounting the motor at the front reduces the amount of random motion caused by the motor being at the end of the 'stalk'.
  1. The motor assembly is constructed as before, by gluing and soldering the (bent) header pins to the motor.
  2. The battery holder is assembled as before, with a female crimp connector soldered to each terminal.
  3. Plug the motor header pin directly into one of the battery terminals.
  4. Construct a connecting cable as before and use this to connect the remaining motor pin to the other battery terminal.
  5. Attach a blob of Blu-tack to the top of the toothbrush as before and attach the complete motor/battery assembly with the motor to the front.
  6. Snap in the battery.
The precise direction can be 'trimmed' by adjusting the centre of gravity of the motor/battery assembly. It can be adjusted to make the Bristle-Bot turn to the left or the right, or to move forward in a straight(ish) line.

Sunday, 24 March 2013

Bristle-Bots at Bristle's first Mini Maker Faire

The Bristle bot comes to ‘Bristle’. The BristleBot or BrushBot is a simple Robot that can be built from everyday objects such as recycled mobile phones and cheap toothbrushes. A small eccentric motor makes the bristles vibrate, causing the robot to scutter about randomly on a smooth surface.

It was a pleasure to be able to present the concept at Bristle's first Maker Faire. I don't claim to have invented them (see the end of the article for additional sources), but I wanted to adapt the design so that it was possible for people to assemble them on the day without soldering, crimping, screwing, or use of any other kind of tool. Only push-fit connectors have the necessary simplicity.

The magical thing about Bristle-Bots is that, despite their apparent simplicity and familiarity, they just seem so alive.
The great thing about Bristle-Bots is that they work without software. Their functionality is simply a product of their evident wiring. This tangibility is key to the Bristle-Bot design; small-hands can assemble the circuit and feel the result, as the creature comes to life in their hands.

My assembly instructions are in two parts. First are the child-friendly instructions that illustrate how to assemble a Bristle-Bot from a kit of basic parts. The second set of instructions for adults are about constructing that kit, in effect, how to create the magic. I really can't emphasize enough how important it is for children (of all ages) to be able to perform the final assembly, rather than simply watch a grown-up construct it for them by-proxy.


Bristle-Bot Instructions

The basic Bristle-Bot has 5 parts:
  1. The toothbrush head with motor attached
  2. Red connector
  3. Blue connector
  4. Battery holder
  5. Battery
Take the toothbrush head with the attached motor, and attach a blob of Blu-tack.

Stick the battery holder onto the top of the toothbrush. It’ll probably come off again while you’re adding the wires below - never mind.

Take a red connector. These have push-fit connectors at each end, so no soldering is required. One end can be plugged into the battery holder. The other end can be plugged into to the one of the motor terminals. It doesn’t really matter which way round the wires go.

Take a blue connector and plug this into the other end of the battery holder. Plug the other end into the remaining motor terminal.

Insert the battery to complete the electrical circuit between the battery and the motor.

As soon as the battery snaps into place the Bristle-Bot will begin to dance.

There are lots of fun activities you can do with Bristle-Bots:

  • Bristle-Bot sumo wrestling
  • Downhill Racing
  • Bristle-Bot painting

There are lots of challenges:

  • Can you make the BristleBot move in a straight line?
  • Can you make it light sensitive?

Bristle-Bot Construction:

The Bristle-Bot requires the following parts:

Value Toothbrush9p each
Vibration motor 3v99p best price 
Break-Away header 2-pin0.5p
CR2032 battery holder59p each in packs of 10
CR2032 3v battery12.5p each in packs of 10
Female Crimp Pins for 0.1" Housings0.24p for four in packs of 100
Male Crimp Pins for 0.1" Housings0.14p a pair in packs of 100
Zip-tie1p each in pack of 100
Stranded hookup-wire4.5p (24p per metre)
TOTAL: £1.86 per Bristle-Bot approx.

Tools and materials required:
  • Soldering iron (and solder)
  • Crimping tool
  • Super-glue
  • Blu-tack

I'm using vibrators for the iPhone 3, as these were the cheapest available. Cut the handle from the toothbrush, leaving about a 1cm stalk to which we can attach the motor. Super-glue the motor to the stalk. The glue only has to hold during construction as the assembly will be reinforced with a zip-tie cable later.
Soldering leads directly to the motor terminals is a bad idea (I tried it). After a little bit of flexing the terminals snap right off and the motor is useless. Attaching header pins provides a sturdier anchor for the leads.
We're going to prepare the header pins by gripping the short end of both pins and bending them to a right angle. This will angle the pins downwards to meet the motor terminals.
The next step is to glue the header pins atop the motor so that the pins bending downwards just about meet the motor terminals. Using a soldering iron, solder the motor terminals to the header pins.
Secure the motor assembly to the toothbrush using a zip-tie, and trim the tail.
Solder a couple of female crimp pins to the battery holder to provide a push-fit connector. Ensure that they face in opposite directions so that the connecting wires will be balanced.
Finally, make up a pair of connecting cables with appropriate connectors at each end. I made up lengths of approximately 9cm. We need a female crimp pin to attach to the motor Terminals, and a male crimp pin to attach to the battery holder. Use stranded wire for flexibility.
Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Thursday, 14 February 2013

LoveBot


I received this wonderful Valentine's card today from my beautiful wife who, bizarrely, tolerates my android dreams.

Wednesday, 23 January 2013

PicoGrasp

PicoGrasp

Digging around in the attic looking for Christmas decorations, I was distracted by the contents of an old  box of electronics 'junk'. It contained a robot arm I'd bought as a teenager. Looking at the accompanying copy of 'Practical Electronics', I realized that it was exactly 30 years ago that I'd assembled it. The PE MicroGrasp part 1 appeared in the December 1982 issue of Practical Electronics; with part 2 appearing in January 1983. To mark it's 30th Anniversary, I decided over Christmas to revive the old robot using, not the 1980's ZX81, but it's modern counterpart, the Raspberry Pi.



The 2013 reconstruction of the 80's magazine cover shows the RPi and the interface board. I just want to point out that although the RPi is controlling the robot, it is not - and never will - play the stylophone as pictured, though I do have some other musical experiments on my to-do list.

The original control board is designed as a memory-mapped peripheral of the ZX81, so it needed an interface that could emulate the old Z80 data & address buses, and timing signals. I wanted a project to try out the GPIO of the Raspberry Pi, so for obvious reasons I'm calling the interface board the PicoGrasp. I've uploaded the original documentation here. There's a wealth of information about the MicroGrasp and other 80's robots over at BeebControl.

If you zoom into the picture on the right, you can just make out the AdaFruit Pi Cobbler connecting the RPi to the breadboard, and a couple of 8-channel Bi-directional Logic Level Converters.

Also featured at:



Creative Commons License
This work (apart from the original cover of Practical Electronics) is licensed under a Creative Commons Attribution 3.0 Unported License.

Saturday, 19 January 2013

SnowBot Dalek

SnowBot Dalek


Taking time out from building real bots to build a SnowBot - well a Dalek to be more exact, which is really a cybernetic organism.


Note the following design elements:
  • Standard sink plunger arm
  • Kenwood kMix gun, ideal for for blowing up soufflĂ©.
  • Shot-glass dome-lights
  • Cat-toy and tinfoil eyestalk
  • Each hemisphere individually moulded using a small finger bowl.
  • Arm and gun mounts moulded using a sandwich box.
  • Pose (subliminally) inspired by 'The Tardis Book' by David Whitaker and Terry Nation.
Also featured on:



3D Photocopy

Given the imminent existential crisis that face all snow-kind, this became an opportunity to experiment with 3D modelling. I don't use the word 'photocopy' without reason. I used an iPhone/iPad app called 123D Catch to combine a series of photographs of the Snow-Dalek to build a 3D model. I then used Autodesk 123D Sculpt to trim the model, removing the surrounding context, before using the fabrication option and Shapeways to generate an STL (stereo-lithography) file for printing. Finally, after prepping print-ready g-code with BfB Axon, the Snow-Dalek (right) was rendered in ABS plastic on a 3DTouch printer.


UnoBot Behaviour


UnoBot Behaviour

The complete LineHugger code for the UnoBot is available for download here.

Saturday, 20 October 2012

UnoBot lego® build

UnoBot lego® build

You will need 2 Electric Technic Mini-Motors (part No. 43362), together with 24 tooth crown gears. See this presentation for a good description of the different gears in Lego® Mindstorms RIS 2.0.

Attach RCX-NXT converter cables and clamp into place with two 2x4 plates.

The motors are held in on each side by two rail assemblies. Each assembly requires one 2x10 plate, two 2x2 plates, two 1x2 plates, and two 1x2 plates with 'door' rail.

For the next stage you also need two Technic 1x16 Bricks with 15 Pin Holes.

Assemble the robot chassis comprising the two motors and the rail assemblies mounted on the Technic bricks.

To assemble the body you will need four Technic Pins with Friction Ridges and four 1x7 Technic Beams. Insert the pins at each corner of the chassis facing outwards.
Attach the four beams to the chassis.

The body frame is a simple box structure. The top of the frame requires four more Technic Pins, and two more Technic 1x16 Bricks with 15 Pin Holes. We also need two 1x2 plates to act as spacers.

Add the 1x2 plates on the underside of each 1x16 brick. A single 2x8 plate is used as a brace to hold the motors in position on the rails. Add the plate to the top of the motors.

Insert the outward facing pins at each end of the 1x16 bricks then attach to form the body frame.

Flip the body frame over so we can see the underside of the motors where we will attach the wheel axles.

The axle shafts require four 2x2 'Specialty' plates with Pin Hole Both Sides, two per side. A pair of 1x8 Technic Bricks with 7 Pin Holes provide additional strength to the motor assembly.

Attach the four axle shaft plates to the outside and the 1x8 Technic bricks to the inside.

For the wheels we need four axles 8 studs long, four 40 Tooth Technic Gears, two White Wheels (49.6x28VR) with Axle Hole and Black Tyres (49.6x28VR), two large yellow wheel centres (split Axle hole) and 17x43 tyres, and lastly eight Technic bushes.

Place a bush on one end of the axle, then add the wheels (with tyres fitted), followed by the gears. The larger white wheels will be the rear wheels with the smaller yellow wheels at the front. Note that the bush fits flush with the large wheel and protrudes on the smaller wheel.

Insert the four axles through the axle shafts and attach a bush to the end to secure in position.

Flip the frame back over, onto it's wheels. The head will be attached to the frame at the end with the smaller wheels. This will be attached by two 1x4 Technic Bricks (Three Pin Holes) and two Technic Pins.

Insert the pins into the 1x4 Technic bricks, facing outwards. To the rear of the frame we will need two 2x10 plates that will form a floor for the battery compartment, and a 1x10 plate to form a spar at the top of the frame.

Attach the 'neck', inserting the pins in the third hole down.

The robot 'head' will contain the three sensors. We focus first on the two touch sensors, connected to the Arduino by a pair of RCX-NXT converter cables. Four yellow Technic Beam 3x3.8x7 Bent Lift-arms act as 'whiskers' that activate the touch sensors.
Assemble the five parts at the top of the figure to form the base.

Place a 2x6 plate with 3 pin holes on the middle of the 2x10 plate. Attach the two 2x6 plates at each end facing backwards. Add the 2x2-2x2 bracket on top in the middle, again facing to the rear. Add the 2x2 brick atop the bracket and top-off with a 2x2 plate. Clip the connector to each sensor with the switch facing forwards and the cables running out to each side.
Attach a Technic Connector with Perpendicular Axle Joiner to each end of the 8 stud long Technic Axle. This will become the front bumper.
To form the top of the 'head' place two 2x6 plates with 3 pins holes next to each other - end to end. Clip them together by adding another 2x6 plate with 3 pin holes across the middle.
To create each 'whisker' take one 3 stud long Technic Axle and insert through the short end of the yellow Technic Beam 3x3.8x7 Bent Lift-arm. Then press a Technic cam onto the same axle. The axle should pass through the wider end of the cam with the short end facing parallel to the long arm of the 'whisker'. Leave the same length of axle protruding from each side of the assembly.
Construct two vertical bumpers by sliding a pair of bushes to the middle of each 10 stud long Technic axle.
Place the bottom end of the 'whisker' axles into the pin holes in either side of the base. Attach the top to clip the axles in position.

Slot the vertical bars (with the two bushes) loosely through the long slot in the 'whiskers' with the cams, then fix into place by sliding on the bumper. Insert the 6 stud long axles into the end of the long arm of the remaining 'whiskers'. Slide each one over the vertical bumper, in alignment with the lower 'whisker', and adjoin using the axles at the long end.

Attach the lego® light sensor (facing down) to the 2x2 bracket (protruding downwards by one stud).

The light sensor has a fixed cable so we must attach the RCX-NXT converter cable to the RCX connector.

Attach the head by engaging it first at the bottom, then swinging down the hinged 1x4 bricks to clamp it into position. Attach the light sensor RCX connector / RCX/NXT cable connector combination to the base of the robot in the middle, near the front.

This image shows both the Arduino Uno and the AdaFruit prototyping shield with the motor control circuit and NXT sockets.

The Arduino has two mounting holes that more or less align with the holes in a 2x8 plate with 7 holes. Fix the Arduino to the plate with two small nuts and bolts (be careful not to over-tighten and flex the plate). Connect the two 2x4 bricks together to form a column, and attach to the underside of the plate. This column engages with the body at the point where the light sensor connects to the RCX-NXT converter cable.

Attach the RCX-NXT converter cables to the prototyping shield. I have the front two sockets running to the left and right touch sensors, the next pair running to the left and right motors, and the final socket running to the light sensor.

The battery assembly includes the 11.1V battery, an XT60 to 2.1mm DC plug cable to supply power to the Arduino, and the LiPo battery low-voltage alarm to which a 1x2 plate has been glued. The battery sits in the rear compartment.


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.

LEGO®is a trademark of the LEGO Group of companies which does not sponsor, authorize or endorse this site.