This page remains for it’s nostalgic value. My first robot, described below, was nothing special by today’s standards nor was it particularly ahead of the curve back in it’s day. It served it’s purpose as a platform upon which to experiment with a PIC micro controller and attempt autonomous navigation. Nowadays I’m using Arduino’s and even netbooks as the brains of the robots which I build and play with, yet a lot of what I learnt from this simple platform still applies.
I started building a robot some time around 2000 (when I was still in 6th year of school), this was intended as a platform on which to add and enhance which, I’ve recently realised, is exactly what has happened. It started off life as piece of chipboard, cut to shape with two hacked JR servos (part of a 4-channel RC kit). These are connected to two Lego Technic wheels (from a large motorcycle I think). The only sensors were two sets of switches mounted front and back with a big bumper . With this I added a PIC16F84A, the brain of my robot. The PIC is an 18-pin micro-controller, basically a computer on a chip, which I program in assembly language (MPASM) although it is possible to find C, basic and other languages with which to program PICs.
The next major introduction to the robot was to improve the obstacle detection. I was using bump switches which means that the robot may all ready be in trouble before it has any time to do anything about it. I experimented with Infra Red (IR) obstacle detection, but gave up eventually as I never got anywhere. I stumbled across a website which sold ultrasonic range-finders and seeing as it was reasonably priced I bought one online (www.robotelectronics.com). The Devantech SRF04 is a neat package which does most of the work for you, simply you send a logic pulse to the unit and receive a pulse that equals the time taken for the sound pulse to travel to the object and reflect back. It is possible, knowing the speed of sound, to find out the distance. Simply, the speed of sound is divided by half the length of the pulse, giving the distance. The range-finder was mounted on a servo to enable a wide field of view.
Third phase: Palm
While looking through the internet I stumbled upon a website which described how (using the software they designed) you could easily control a robot using a palm. The software ran a basic program to control the robot through the serial port. This got me interested although the price for their software seemed a bit steep to me so I dug a little further and discovered PocketC (www.orbworks.com), a C programming language for the Palm OS, free to try for a month or so and very reasonably priced to register. I also kept an eye on eBay.co.uk and studied prices of the Palm products, when a Palm m100 with serial cable a year of regular use and hard case came on e-bay I bid for it and received a reasonable price (as most would pay a little more for better condition or better model) but this was exactly what I needed, especially as I wouldn’t need to go looking for a serial cable! The palm arrived pretty quickly and I set about downloading necessary (and unnecessary) software and applications from the internet.
It was some time before I started working on Palm/PIC communication and I put together a circuit board for the purpose but never tested it until recently when I discovered it didn’t work. I thought at first that the problem lay in the voltage levels, I had assumed that the serial port of the Palm M100 ran at TTL (bit of a silly assumption now I think about it, though I must have seen something to that effect on the net and now cannot find it) so to correct this I added a MAX232 chip to the set-up. The MAX232 chip is used to convert TTL (0 = 0v, 1 = 5v) to the RS232 standard (0 = -15v, 1 = 0v CHECK!!!) and using only 5 external components (electrolytic capacitors) which makes a very neat conversion. This set-up also didn’t work and I spent lots of time going over all my wiring but in the end some assistance from robotbuilder.co.uk, a UK robot building forum, persuaded me to switch the Serial out and Serial in connections on the PIC side, since the wiring in the Palm hot-sync cable is equivalent to null modem (i.e. it has serial out where it should be serial in and vice versa). Since getting this working I have been looking at the palm side of the project and I am still developing the software to control the robot. Currently I have a simple program with which, by use of the touch screen, I can control the robot and move it forward, backward, spin it one way and the other. The PIC tells the Palm whenever an object is detected by the SRF04 (ultrasonic range-finder). Also, I have a Devantech SP03 Text to Speech transducer which I currently have mounted on the robot, this simply receives an address from the Palm (through the PIC) which corresponds to set messages in memory (set by connecting the SP03 to a PC).
What’s to come?
Although still a primitive robotic base I believe there is still more be be learned from developing it further. Finances allowing (and I doubt they will for a while yet!) I may try several other object detection devices (IR proximity again with a little more patience), maybe experiment with turning the bot into a photovore (moves towards brightest area) or a line follower. A new base for the robot is another idea, but I have yet to come up with a good reason to change, the Lego wheels are doing their job well although they need to be adjusted occasionally (the wheels have a tendency to rub against the wooden base, caused by sliding along the axle.)
I have also recently bought two Sharp GP2D12 sensors from someone on Robotbuilder.co.uk and will hopefully be experimenting with them. This will of course be a while down the line as exams are soon to begin and can’t afford to mess them up (again).
I started work on hacking an old RC car to use its original PCB together with a PIC and a 4-channel radio controller to make a more interesting RC vehicle. The idea to begin with will be experimenting with Pulse Width Modulation (PWM) to control the speed of the motor analoguely (is that a real word?) from the radio control, using the PIC as the converter. What I’ll use the spare channels for I haven’t decided yet.