Good afternoon, fillies and gentlecolts!
After my successes yesterday with getting the Raspberry Pi to control the servos, I’ve decided to do a bit of a run-down on just what the RoboPony is, and what I hope it will do.
The RoboPony is exactly what it sounds like – A robot pony. A walking, talking, robot pony. Well, hopefully walking. It’ll have articulated legs and head, but I’ll be honest – I’m not 100% certain that I will be able to make it walk. However! As with everything else we make here, the code will be open source – If I can’t make it walk, I’m sure someone will. And the design should be easy enough that even the non-technical people should be able to update the code fairly easily.
I had the concept of the RoboPony a few months ago, but mostly as a “Wouldn’t it be cool to do this?” idea. At that time, I was thinking of using an Arduino and an Emic2 text-to-speech card. At the time, that was easier for me to code and a bit cheaper to work with than, say, a Raspberry Pi.
Then, in November, the Raspberry Pi Zero came out. That literally changed everything. Instead of a $50 Emic board plus whatever Arduino board I would have to create, along with the servo control and sensors, I’d be able to use an off-the-shelf (And free!) text-to-speech program on a $5 computer, along with a companion board that would have all of the additional things anyway. The Raspberry Pi can run Python, which is the only programming language I can claim any sort of proficiency with (Even then, though, I’m not a stellar programmer. I can get Python and Arduino programs to work, but it’s not exactly graceful).
I then began figuring out just what I could do with a Robot Pony. I’ve settled on a few things for it:
- PCA9685 I2C PWM/Servo Controller. This allows me to control the 10 servos for the RoboPony, along with the RGB LEDs for the pony’s eyes.
- MCP 3008 Analog-to-Digital Converter. This connects to the IR Rangefinder mounted in the RoboPony’s head, and also allows for monitoring the battery voltage levels.
- ADXL345 I2C Acceleromoter. Because of the components involved, this will be the Adafruit Board – A few of those components are a bit difficult to solder by hand, and I don’t have the tools to do anything but solder by hand. It’s also an I2C device that has a nice Python tutorial, which should let me get it working fairly easily.
- DHT11 Temperature and Humidity sensor. While it’s not I2C, SPI, or any other “Standard” protocol, the DHT11 is fairly easy to interact with using a Raspberry Pi.
- DS1307 Real-Time Clock. Being another I2C device made this a lot easier to integrate with the other components.
- Two 5-volt regulators – One for the servos, and one for the Pi + everything else. While powering a Pi through the GPIO pins has its issues, these issues can be fixed by a properly designed device. Separating the power to the servos also allows for them to be as noisy as they want to be without causing any issues to the rest of the board. Both regulators are powered by six AA batteries providing anywhere from 6-9v, depending on the type and charge state of the batteries.
There are a bunch of neat things that this is capable of doing. The RoboPony will monitor its battery voltage, and shut itself down if it is too low. It will also be able to tell if it’s been picked up, moved, or fallen over thanks to the accelerometer. It will know the time, the temperature, and the humidity, and will also know when something moves in front of it – or, provided I can get it to move itself, if it’ll run into something.
And, best of all, since it can talk via the Text to Speech program, the RoboPony can say things about all of this. So far, I plan on having it state the time, temperature, and humidity every 15 minutes (Hour, 15 past, half past, 45 past), greet things that approach, yell at things that get too close or stay too close, say something when it’s picked up and/or falls over, and warnings when battery voltage gets too low.
The voice is also software controlled, meaning it can be tweaked to some degree to provide different RoboPony units with different voices. This also extends to what the RoboPony says – These are simple text files that can be easily modified and changed to make the RoboPony speak different things.
It’s been, so far, an extremely fun project and I’m definitely enjoying working on it. My biggest concern right now is that the Raspberry Pi Zero is super popular – They’re out of stock pretty much everywhere. This means that I might have to use a different Raspberry Pi unit, which is significantly more expensive – Between $25-$40 per unit instead of $5. With this in mind, and the fact that the board isn’t complete yet (While writing this, I discovered that one of the voltage regulators was only rated for 6v in. Which simply won’t work), I can’t give an exact price for individual RoboPony units, but I expect it’ll be between $150 and $200. They’re cheaper in bulk, yes, but that’s also a lot more expensive for me to purchase the parts, and a lot more time consuming for me to make. We’ll see how it goes!
And to end off this post, I’ll be giving you an image of the RoboPony Base Board. This is what’ll attach to the Raspberry Pi – There’ll be another board in the head, with the eye LEDs, the speaker, and the distance sensor, along with an audio-out jack if you want to use your RoboPony as, say, a music player.