As always, things are racing along here in the Pleasure Dome (my office). In the case of my animatronic robot head project, for example, I’m delighted to tell you that I now have my head in my hands, and that’s not something you expect to hear yourself say every day.
On the off chance that all of this is new to you, and just to ensure we are all tap-dancing to the same drumbeat (I know whereof I speak, because my dear old dad used to be a dancer on the variety hall stage prior to WWII), let’s briefly summarize the state of play thus far.
This all started when my chum Steve Manley, who is based in the UK, and yours truly, who hangs his hat in the USA, decided to build some displays we dubbed Steve and Max’s Awesome Displays.
As discussed in Part 1 of this mini-mega-series, I initially used two of these displays to implement the “eyes” on a pseudo robot head. I was quite pleased with the way this looked until a friend suggested that things would be more interesting if the eyes could pan from side-to-side and tilt up and down. And the interest level would rise even higher if the entire head could also pan-and-tilt.=
Also in Part 1, we introduced the JH-D400X-R4 joystick. These little rascals, which are available on eBay for around $16, purport to be 4-axis devices. In reality, one of these “axes” is a pushbutton on top, while the other three axes, each of which drives a 10 kΩ potentiometer, respond to different types of movement: pushing left and right, pushing forward and pulling backward, and twisting/rotating clockwise and anticlockwise.
One usage scenario is to use two of these joysticks to control the head by hand, if you see what I mean. For example, we could use one of the joysticks to control the movements associated with the head, while the other joystick controlled the movements of the eyes. In this case, both of the eyes would move identically. Alternatively, with a single press of a pushbutton on top of one of the joysticks, we could leave the head in its current position and use the joysticks to control each eye independently.
The reason I said “one usage scenario” in the previous paragraph is that I also plan on equipping my animatronic head with a bunch of sensors. In the fullness of time, I want it to be able to respond to sound and movement; also, to be able to recognize and respond to faces, and to identify and respond to facial expressions and hand gestures, but all of that is in the future.
In Part 2, I explained how I started to build my prototype by purchasing two pre-assembled, servo-controlled Pan-and-Tilt Mechanisms from Adafruit. Meanwhile, Steve fired up his 3D design software and 3D printer and created an implementation the like of which I’ve never seen before, as demonstrated in this video.
I’m almost ashamed to show you the comparison between our two solutions, but since Steve has done so much of the work, I think it’s only fair. The image below reflects the early days of my prototype.
The two gray platforms are spray-painted wood. The platform in the background holds the two pan-and-tilt servos mechanisms that I was going to use to control my eyes. The platform in the foreground carries the two joysticks and a small board with three toggle switches and a 6-channel LS19 switch debounce IC from LogiSwitch (see also How to Keep a Flipped Switch from Bouncing Like a Golf Ball Dropped from the Roof).
The block of wood in the middle is a temporary staging post for power distribution, a Teensy 3.6 microcontroller unit (MCU), and one of Adafruit’s Servo Driver boards, which uses an I2C bus to allow you to control up to 16 servos.
To be honest, I was quite pleased with the way things were progressing until I saw what Steve had done. Let’s start with his control console, the case for which he created using his 3D printer.
As always, I’m amazed by the quality of Steve’s creations and the tidiness of his wiring. The big red board is a general-purpose control unit that we originally created for use with our 10-character 21-segment Victorian displays. We can also see the underside of the two joysticks, between which are two I2C analog multiplexer boards that are used to read the state of the potentiometers (we’ll return to these boards in a future column).
But the real masterpiece is the animatronic head that Steve created. As demonstrated in this video, this bodacious beauty boasts four small servos (two for each eye) and three larger servos to control the main head.
As soon as I saw this in action, I realized that it was way beyond anything I could create myself in the limited time I have available to me. Fortunately, Steve is a prince amongst men, because once he had everything working, he very kindly created a second unit, which he shipped to your humble narrator. This little rascal (the animatronic head, not Steve) arrived a couple of days ago as I pen these words, which explains why I commenced this column by stating that I have my head in my hands, as it were.
Of course, we are still in the early days of this project. Now comes the part where we start playing with the software, but that will be a story for a future column. In the meantime, as always, I welcome your comments, questions, and suggestions.