Here is yet another autonomous little robot that rolls around avoiding walls, this one was also made for a hackathon much like the venerable wheelchair robot. The difference here is that insistence that code be developed on an SBC slowed development to the point that many features had to be dropped. The point of this robot is to venture into unknown territory and send back sensor readings (distance, temperature, humidity, light level, barometric pressure) so you don’t have to go in blind. The need for autonomy come from us not having a camera with which we could drive the robot. The goals as best as I can remember:
The only things that got implemented out of these were the first two. I put a lot of effort into making the only touchscreen we had (a SainSmart 2.8 inch TFT LCD) work as a UI for telemetry and control but was no able to make it work. I still cannot even after buying the adapter for the arduino mega. Usually I’m able to get around shitty documentation by digging through the code of the libraries, but this one beat me.
The large number of sensors… We had a BH1750 Digital Light Sensor, never got it to work. We had a BMP180 Barometric Pressure/Temperature/Altitude Sensor, didn’t have time to make it work. An HC-SR04 ultrasonic sensor, also never made it do anything. A DHT22, the simplest sensor we could have installed… nope. So, we had absolutely no sensor readings but it had a bunch of stuff plugged in so it looked impressive.
The actual navigation was done using a LIDAR Lite, which is a really cool i2c lidar sensor. This was borrowed from a FIRST team and unfortunately no longer resides with the robot. I thought about getting another one, but it’s just too expensive to put on a robot that I actually have no use for. The chassis was the absolute biggest, most expensive RC car that walmart had to offer.. a New Bright 1:10 Radio Control Ford Raptor Truck, Black/Green. No, I wasn’t much impressed either. For a chassis this had loose ball joints, an anemic little lithium battery pack, and a motor that was rather poorly geared for torque. But if the chassis was perfect then we’d have no fun accounting for it later. The motor control comes from a Sparkfun Ludus Protoshield (which I got in a ding/dent deal and is not labeled like that on mine). The control is just two-bit direction and a pwm line for speed.
Being in the IEEE lab at MTU we had the advantage of a 3d printer. They may have taken away the band saw and drill press because someone took off the safety switches and didn’t either restore them or hide them well enough, but we could still make small plastic parts over the course of several hours. We made a bracket to hold the LIDAR to the servo and cut up a chunk of an old computer case to affix the servo to the chassis. Now we had a chassis with enough sensor to let it move. You may notice this is the exact same setup as the wheelchair robot with the exception that it’s smaller and much lower power. When you have a hammer and all that… It should not surprise you that the same person wrote the code for that as this one.
The wireless part was going to be a whole custom interface between two esp8266s to allow for touch-screen control and telemetry… Well, when it came right down to it I flashed the wonderful ESP-Bridge firmware to an esp8266 and clamped that onto the serial port of the arduino uno. That worked for a very short while and then stopped. I then replaced the esp8266, put a voltage divider on the rx pin, flashed it again and then it kept working… oops. This theoretically gave manual control and some sensor data, but in fact it just gave updates from within the code. That meant a constant stream of almost nonsense that looked pretty impressive to the lay-person.
The duck sounds were actually going to be quacks made by a speak-n-spell I found at goodwill, but hacking that never actually happened. That may be an upcoming post, because using one of those for a speech synth has always been a plan of mine.
The battery was the same one that came with the RC car, a 500mah 9.6v lithium pack with charger. Really anemic for this use but it worked for the little while we needed it to. I upgraded that with a later revision. The bus power is provided by a little 3A adjustable dc-dc regulator from ebay that got set to 5V and had the POT glued down. This is much better than the linear regulator that would just dump 50% of the power from our tiny battery as heat.
The code is here
The pictures are here
the hackathon post is here