December 22, 2012
This is the new blog for my MASTER robot. Given the suggestion about linking blog posts to robots, I thought I would start a build log and make a few notes about each part as I went along. I am already keeping the odd note about things so I dont forget them, but this way they are easily accessible and harder to lose (kind of like free cloud storage, but only for robot stuff)
21/12/12: Attempted to install Linux TinyCore onto my laptop, in order to run an OS specifically for my robot. I figured that I could just install the robot related stuff, and It would be nice and easy to understand because there wouldnt be a million packages to deal with. I successfully partitioned the hard drive, (at the 3rd attempt), and installed TinyCore off of a memory stick. Unfortunately, this is where i ran into problems. I accidentally told tiny core to make itself bootable, and install it's own bootloader. This then corrupted (I'm not sure how) the existing grub bootloader, so that neither of them worked. (As far as I can make out, I accidentally installed GRUB legacy, and made it find GRUB 2. It appears that this won't work, and when the computer tried to make it work, something broke. This caused nothing to boot. I then spent about 18 hours (I actually broke it 2 days ago, only fixed it today) (yes that's 18 hours of working, over 2 days) attempting to return it to it's original state. I then promptly learned from my mistake, and failed to make a system backup (couldnt find a blank CD), before beginning attempt 2.
Attempt 2 at installing Tiny Core: Tiny core is installed again, minus the "install bootloader" and "make bootable options". This means that I now have to configure GRUB manually to find tiny core and add it to the menu. I found several totally contradictory tutorials online, at which point I found out the GRUB legacy and GRUB 2 have totally differend configuration methods. (At this point I also discovered that if you aren't connected to the internet, it's hard to install packages). I finally managed to add an entry to the GRUB menu, which should in theory boot TinyCore. Result - Error message. Back to the drawing board (and enlist the help of a friend).
At this point I got bored of my laptop not working, so I started work on hardware. I 'borrowed' a cake tin, and cut 2 holes in the bottom with the aid of a power drill, a chisel, a hammer, a file, and a complete lack of engineering finesse. I then glued some motors (relics from an airfix HMS Hood conversion to RC) with gearboxes into the chassis, and added mechano bearings to hold the wheels on. I then wired up the motors, (with the 'twist 2 wires together and hope it works' method). The next stage is to put tape around the connections (I am using multi-core wire to connect the motors, so I twisted it onto single core to plug into the breadboard. When I build the stripboard, I'll untwist it and solder the multicore strait to the breadboard) and test it.
22/12/12: Purchased a lot of electronics for my robot: 10Ah USB battery pack to power the Pi. 6V Lead Acid battery to run motors/arduino. Lots of wire, stripboard, and other day to day componants. Total cost was somewhat higher than predicted but it's all OK in the end (i hope). Battery pack for Pi is on charge (24 hours), the 6V battery pack was pre-charged, so I put it strait to use driving around the desk (and running over the keyboard).
Pi now has the correct OS running, but with a few problems: a) SSH doesnt work (server installed, but not working). b) Keyboard layout wrong. (Dvorak Keyboard, Qwerty keymap on the pi), leading to typing by instinct and 'where i think the key should be' as opposed to where my eyes say it is. Somewhat disconcerting and very annoying. Works OK for normal typing (can correct mistakes), but passwords are a nightmare, especially long ones.
Have found a cable to hook up the GPIO to a breadboard, and build bajdi's I2C logic level converter, http://letsmakerobots.com/node/34444, which I hope to test tommorow. I dont have a breakout board, so I am currently hooking a wire into the end of the cable, doubling it back on itself, and using electrical tape to hope the whole lot in place. Eventually I'll get the correct cable (currently using one with too many pins) and do it properly. Give it a year or two.
I also had a slight hardware problem. One of my wheels refused to turn, and on furthur investigation, it appeared that the superglue used to hold the wheels on had run somewhat and had glued the axel into the bearing. Oops. I removed the wheel (very glad of my home made quick (ish) release system now) and used the 'brute force and lack of mechanical sympathy' method to shift it with a knife and pliers. Not to be recommended, but it worked. After reasembly, the robot began trundling round (as described above)
Tommorow's plan: get Pi working via SSH, and write the face tracking script (already have most from an online tutorial). Get the robot to follow a face infront of it (should be fairly easy - touch wood). Maybe then get the radio's working.
Finally, a request: I have seen various things saying that hotplugging USB items into a Pi causes them to reboot. I have not tested this (apparently it breaks the Pi). I am going to make an extention lead for the USB, so that you can plug things on the outside of the robot's body, without opening it up. Does anyone think that putting a 1 ohm resistor in place of the V+ and 0V wires in the extention lead will solve the problem? As I understand it, it is caused by a capacitor discharging too fast, so it should be solved by resistors (T = RC, so increasing R makes the capacitor discharge slower)