Pretty Small Robot

A less ambitious attempt at making a small robot.

It’s not tiny, or micro, but it is pretty small.

Fusion 360 CAD of the Pretty Small Robot. 2 Euro coin for scale.

It measures 31x45x30.5mm(LxWxH)

Tried to keep it as simple as possible. The chassis is 3d printed apart from two bearings that are also required. The general assembly philosophy adopted for this robot was “clips good, glue bad”. So everything just clips or slides into place, including the motors, battery, bearings, and PCB.

Clips as far as the eye can see
Pretty Small Robot parts

N20 motors clip into place

Then the “bearing holder” piece also clips onto the main chassis

Wheels with bearings on get attached to the bearing holder using a press fit

Wheels go on the N20 Motors

Then rubber bands go on so that each motor can drive two wheels

Then the battery slides into the battery compartment

The PCB has been designed and ordered and will be here in a few weeks so another post will follow when that arrives.

Pretty Small Robot PCB

The PCB is an ESP32-s2 which has usb dfu support so in theory when the board arrives I can just plug in straight in and flash micropython to it.

It also has an smd wifi antenna (just to the left of the car symbol) so I’ll be able to remote control things via wifi if all goes to plan.

I’ve also got a lipo charger built in so it can just drive around till it runs out of battery then plug in the USB-C to charge up and go again.

Step files, Kicad files etc are availabe at

Posted in Uncategorized | Leave a comment

┬ÁBOT v3 – project update

v3 was really really close to working.

The PCB arrived and I assembled it:

This picture was taken towards the end of the day. There are actually three steppers attached here. The one on the bottom left is different to the rest as I ran out of the threaded rod type stepper. The stepper on the top right is missing because it broke off as I was trying to remove a wheel.

These micro steppers are very easy to break. A small movement of the pins causes an internal connection break so that is something I will have to keep in mind for the next iteration. Some kind of mechanical support is neccesary, just soldering the pins on is asking for trouble. Maybe a dab of hot glue would do the trick.

I forgot to route the rx and tx between the usb-serial chip and the esp32 hence the two jumper wires. Apart from that it wasn’t too long until all of the steppers were soldered and moving:

(give the video a minute to load – this server provides many opportunities to practice patience :D)


The wheels were kind of hard to come by. After racking my brain for several minutes I settled on milk bottle caps as they are circular and have a dimple in the middle which makes it easy to drill a hole. This was the result:


The steppers did not have quite enough torque. A couple of points worth mentioning here. First thing is that the wheel diameter is quite large. By reducing that diameter down to the minimum physical requirement the torque requirement could be reduced by maybe 50% or more.

The second thing is the battery is probably double or triple the weight it needs to be. By reducing the battery weight and the wheel diameter I think this thing could propel itself.

3d printed wheels are really the way to go. Putting the wheel on before soldering is also a must because putting mechanical stress on the stepper while it is soldered is risking a pin disconnection like this:

That actually happened when I was trying to take the wheels off but it just was luck it hadn’t occured earlier.

The odd stepper out (bottom right in the pic below) got really hot. Way hotter than the other steppers and it took me a while to figure out why. The coil resistances are different. Some steppers are 40 ohms and others are 20. The threaded rod variety are all 40 ohm so they don’t get as hot.

This is a useful thing to know. The 40 ohm ones would be preferable as they stay at a reasonable temperature even with continuous operation. That being said the 20 ohm ones probably have more torque but they get too hot to touch which is not ideal.

Here are some more pics :


So v3 has been a useful test. Even getting this far is cool. For a few minutes it looked like the ESP32 was dead so to get things moving and tested was a nice jump forward.

v3 is not finished yet. The next step is to buy more steppers, 3d print some wheels and buy a new tiny lipo battery.



Posted in Ideas, PCBs, Projects, Robots | Leave a comment

┬ÁBOT v3 – An experiment in making a small robot (part 1)

This idea of making a small robot has been knocking around my head for the past few years. Here is the original design (v1) from a few years ago:





I made a mistake when programming the “fuses” on the AVR chip which meant it was effectively bricked. For some reason I never came back to this project, until now.

The tiny stepper motors are what make this project really cool. Having a robot that small with steppers means you would have some semblance of position control which means you can do cooler stuff compared to just open loop DC motors for example.

I never actually tested the micro steppers to see what kind of torque they put out. The v2 PCB was made just to connect up the steppers and see if they could move the weight of the PCB:









It was actually kind of hard to test the torque of the motors as the weight of the wires affected things but from what I could tell the motors did indeed have enough torque to get things moving.

This brings us on to the current state of the project which is version 3. The PCB should arrive tomorrow so I will report back with the results once it’s assembled. Here is the kicad 3d model output:














The PCB is the same size as version 2. It’s got an ESP32, a lipo battery jack, a micro USB connector for charging and programming (and serial data exchange with host computer), a lipo battery charge IC to charge from USB, 2 dual H bridge motor driver ICs and a TRCT5000. The whole thing runs off a small single cell lipo.

the TRCT5000 and the microUSB are missing from the 3d view. Here is a pic of the TRCT5000 for reference:






It’s an IR emitter and receiver in one package which lets you detect the reflectivity of the surface in front of it. This sensor will be facing the ground so it could be used for line following. Not that I think of it , it would have been cool to have a front facing one also for basic obstacle detection. Will keep that in mind for v4.

The ESP8266 opens up a lot of possitibilities. I intend to flash it with micropython because I love it and it’s the best thing ever invented in my opinion. From there I can connect to wifi and do remote control from a smartphone, stream IR sensor values etc. etc.

This PCB has a fair few components and some parts I haven’t used before so the chance that I’ve ballsed something up is pretty high but I’m just glad to be making stuff again and regardless of how this version turns out it is a step in the right direction.

Stay tuned for part 2. I promise to write the blog even if it catches fire or something like that.

Here is the github repo with all design files etc.


Posted in Hardware, Ideas, PCBs | Tagged , | 1 Comment

Spooky Alexa mask documentation

Spooky Alexa

This is the animatronic mask made by Keith Colton for the 2019 Dublin Maker Faire.

This post will document the assembly and the current electronics being used. All images can be clicked on to view the full resolution image.

Mechanical Assembly:

In this photo you can see the animatronic mechanism. There are three servos in total. One for the eyes, one for the mouth and one for the neck.

Back view 1

Back view 2


This is a close up look at the eye mechanism. One servo is attached to both eyes via some metal wire. The black rectangles highlight the hinge mechanism for the eyes. Each eye has two of these nut and bolt mechanisms. The purpose of these is to allow the eye to rotate while also keeping it locked in place. If you look closely you can see that the eye is actually glued on to the nut which allows it to rotate.

Eye Mechanism


Here is a top view of the eye mechanism. The mask is divided into two seperate parts. The top part has the eyes and nose and the bottom part is the lower half of the mouth. The top part is held on by matchstick type pieces of wood and hot glue as seen here. There are two matchsticks on the top and two just underneath which are hard to see in this pic.

Eye Mechanism – matchsticks and glue


Here you can see the mouth mechanism. Basically the bottom quarter of the mask was cut off and glued back on to this piece of wood to allow it to move up and down and mimick a mouth.

Mouth Mechanism


This is the neck and mouth part of the mechanism. The neck is an upside down servo. The part of the servo that normally does the rotation is actually glued to the floor and the servo body itself rotates. The mouth servo is just above this. The metal bracket is just there for support. As the eye mechanism is in front of the neck/mouth mechanism it would not be able to stay upright without this bracket.

Neck and Eye Mechanism 1

Neck and Eye Mechanism 2



Breadboard circuit

This is the breadboard circuit used to control the mask. An Amazon Echo Dot is connected to the mask. The Echo Dot has a 3.5mm aux output. This output is fed into a circuit that amplifies the signal into a 0-5V range suitable for the ADC on an Arduino. This circuit also contains an analog envelope detector circuit. The output of the envelope detector is what gets fed into the ADC of the Arduino.

Apologies if this is a bit hard to see. The reason why there is two aux ports is because if you plug an aux cable into the echo dot it stops using its internal speaker. This is a problem for use because we want the audio to get sent to the mask but we also want to be able to hear it. So you have to split the audio. You could use an audio splitter like this to do this also. One thing to keep in mind is the aux port on the echo dot is recessed so not all aux splitters will fit (which is why I ended up making my own splitter as in the diagram).

So the audio signal from the echo dot was coming out at around 0.5 volts. This gets get into a non-inverting amplifier with a gain of around 10 or 11 ish. This amplified signal then gets put through an envelope detector. The output of the envelope detector is then connected to the ADC pin on the arduino.

One other important thing to remember is the maximum pulse lengths for the servos. Basically you could break the mechanism by driving a servo too far, there is no mechanical cut off or anything like that. The image below shows the pulse lenghts for the eyes, neck and mouth. If you go outside these you risk stripping the plastic gears in the servos.


Project update:

Here is a video that I sent to Damon a few months ago with an update on the mask:


After that video I spent a few weeks trying to get head tracking working. The idea being that the mask could be placed in a room and if someone walked past the mask would look at them as they passed by.

The PCB design files, code for the ultrasonics sensor and code for converting the adc value to mouth movement is available in this GitHub repo.

Here is a video I made about the ultrasonic scanner:

In the end, I wasn’t able to use it for tracking people. The data was just too noisy and tracking a moving object was very difficult and I just couldn’t get it working.





Posted in Ideas, Projects, Robots | 3 Comments