Cyduino (Arduino based Cybot)
I recently recieved lots of Cybot parts from my friend who collected the parts of eBay, no longer wanting them he kindly gave them to me, my plan was to convert it to an Arduino based robot.
If you are not aware what a Cybot looks like here is a picture I took before the dismantling process:
The Cybot had some good features; line following, IR remote control, speech recognition and even the ability to find its IR ball and shoot goals into an IR goal.
The Cybot was not the only robot in the box, it also came with Cybots companion, Tom:
Toms constuction was more difficult to pull apart as there is no real differentiation between seperate parts, they all link in together, meaning there are no real big parts.
The box also came with two IR remote controls which I will definetly be using in future robot projects, mainly due to their awesome look:
After I rumaged through everything, determining what things where, I began the dismantling process. As the robots were built as part of a weekly magazine any big chips were split into smaller chips connected by header pins, this made it easier to determine what chips did what and also made the dismantling process much easier. Here is a nice pic of the mess I made:
In the background you can see the electric screwdriver my Dad received for Christmas, I borrow it reguraly :)
I pulled it all apart because I wanted to understand exactly how all of the bits and pieces worked together, I recognized most components but some were very strange and required a google search.
My plan was to first understand how the motor driver worked so that I could connect it straight up to the digital pins on the Arduino. Luckily there are one or two sites left with documentation on the parts of the Cybot. To emulate the Arduino signals to the motor driver board I got a 4.8V battery pack and would place the leads into the driver board testing to see what happened, doing this found what pins made the motors spin in what direction. I decided that I didn't like having the castor wheel at the front of the robot so I reversed its direction and wired it to the Arduino accordingly, however the castor wheel doesn't work very well.
After I wrote some test code I tested the motor driver board and was amazed that it worked. The thing I especially like about the motor driver board is that is transistor based, making it very easy to integrate with the Arduino. There is a battery pack at the back of the robot with 12V of power supplied from AA batteries, 6V goes to the motor driver board and the transistors allow the connection to be made, very cool. One thing that was mentioned was that if both the forward and backward motor driver pins were high at the same time it would fry the board, so I took extra care to ensure that this wouldn't happen by always calling digitalWrite(LOW) for all the pins before I would use them again.
The first thing I wanted to add back the the Cybot was the gift of sight, in this case, ultrasonic eyes in the from of HC-SR04's. I used these instead of the ones that came with the bot because I have heaps of them now and I know how to use them, with some futher investigation I might use the ones that came with the kit.
My original plan was the mount the acrylic to the base of the robot and bend the acylic to form a square mount. I started mounting the acrylic to the base but wasn't fond of the bending idea:
While the robot was like this I mounted an US sensor and programmed an edge avoider bot, Ill put a vid up later of it. Here you can also the the acrylic mount I made to attach the Arduino to the base, those I love those spacers.
After scrapping that idea I decided to attach them another way. Talking with my Dad he suggested using a square bracket and mounting the acylic to that and then to the base, I liked this idea and began to take measurements. After making some plans I cut, drilled and mounted the acrylic to some aluminium square brackets:
All that was left to do was to drill the holes for the eyes to fit through and wire up the US sensors up to the Arduino. The Arduino is powered from a seperate battery pack I double sided taped to the base of the bot, using breadboard jumper wires and the VIN pin on the Arduino, the Arduino is powered from 6V.
The programming revolves around boolean statements. Each sensor has a boolean statement for whether something is to close, if something is closer than a set amount the variable is true, else false. The robot will move depending on the mix of boolean values. If front close == false && right close == false && left close == true, turn slightly to the right. It takes a bit to program all possible combinations but it gives a very nice movement. If there is something in front of the bot but not on the sides it will just turn right, this was done just to make it easier.
So here is the bot so far:
I fiddled around with some IR, photoresistors, line following and have redone the obstacle avoidance code.
There are now two photoresistors on either side of the bot mounted via hotglue to the left and right acryic panels. These are used to accomplish both light seeking/avoiding behaviour.
An IR reciever has been mounted on the breadboard. The Arduino now listens for IR commands and depending on the number pressed the mode will change, six modes in total.
The Ultrasonic obstacle avoidance has been completely reprogrammed, still using boolen functions but much better motor movement.
The line follower has been wired up to accomplish, well atleast try to, follow a line.
I have also tried to make it dance but that needs a lot more work.
If you would like a more indepth description of what I have done please watch the supplied video, as I am much better at talking than typing, I think its attention deficiency or something.