I've decided to go all in with building a robot in order to learn microcontroller programing and general 'making' techniques. I have an actual goal that I am still working on flushing out and this robot will be a test bed for all the technology and such that I need to understand in order to realize that goal. I don't know how long it will take for everything to come together but I will keep a log of it all here.
I call this project Robot 1.
Step one: build it and get it moving. CHECK!
Step two: controlling movement; making movement reliable and measurable.
Later steps include:
Communication between a computer/laptop and the arduino
Adding a cam on a gimbal, and streaming that video
Range sensor on same gimbal
Additional Low-res cams on-board surrounding the robot, also streaming their video.
Adding a Raspberry Pi to this mix will likely be needed to do the video streaming and maybe the communication as well.
Finding a 'target' in the gimbal cam's video
So far Robot1 has required the following:
Arduino Uno R3
I am using a genuine Arduino Uno. I've done a few other things with the Uno and I'm realy pleased with it's size and capabilities. The Arduino I purchased came in an experimenter's pack, I purchased from Amazon so the price I paid for it was around $50 but was a lot more than just the Uno. Currently a name-brand Uno is available for about $30 from various retailers and is a great first Arduino from everything I've seen so far.
Basic robot body
The base platform for the project is a kit I purchased from Bang Electronics through Newegg. The front of the body was badly bent where there is a lot of plastic removed for the wheel indents and some cut-outs for wireing to pass through as well as cut-outs for pulse-code wheel movement encoders. It was bent at almost a 25deg angle, making placement of the gimbal cam once I get to that stage unworkable.
I tried to use a heat-gun to fix this by softening the plastic enough to flatten it but when it was almost completely flat it snapped. It is currently glued using Loctite G02 glue and this is holding very well, but I don't know that it's going to hold the cam and collision sensors I want to install. I've emailed the vendor for a replacement, hopefully I will get one. The rest of the kit is fine, and the 'tires' on the wheels are actually a somewhat grippy rubber. Other than the bent chassis this was a great $13 kit.
Other than the bent chassic, which the vendor could not forsee, the kit had no explanation of the kind of work that would need to go into researching, developing, and finally creating the pulse-code modulation sensors for the whees. Some mention of this in a PDF or on a website of theirs would have been handy...I'd have purchased all the parts at one time and been sure I had the ones the holes in the chassis were cut for.
A Relay Shield for the Arduino
I wanted to use a a motor shield but the Radio Shack near me didn't have one and I really wanted to get to the building! This relay shield has 4 relays connected to 4 SPDT switches. The crazy way this shield needs to be used required a crap-ton more wires than a motor shield which makes the robot look more ameteurish than it needed to...but it worked. And even after I get a motor shield I will still have this shield for other projects where the 4 SPDT switches might well come in handy. It was like $10 so I can't complain either. It does work and very well for the time being.
The only thing is one of the relays seem to be reversed. I install all the negative leads to the left of the connectors and the positive on the right, leaving the actual input or output for the center. By manipulating which polarity goes to which motor lead I can engage the motors in forward or reverse. So if all switches are 'on' or all are 'off', there should be no circuit made and all the motors should be 'parked'...however this is not the case. The code I have below this text shows an inconsistency in polarity for forward and backward, this 'reversal' on the board is why.
This could also be simply because I have the motor leads reversed though. The next time I assemble the thing I will have to do some testing to figure out what is going on exactly.
Next up in purchases for the robot will be the parts for the pulse-code modulators to read distance travelled accurately. I'm not sure how I will be coding this but I look forward to figuring it out.
After that will likely come a Raspberry Pi purchase, the Pi camera, and the parts for a gimbal to mount it.
ROBOT 1 components so far: 9/6/2014
This is the code I used to make sure the motors worked.
* Robot Test Code *
* ----------------- *
* 3/9/2014 *
* ----------------- *
* Using a SLD01101P *
int motorControl1 = 7; // Using the shield, digital pin 7 becomes
int motorControl2 = 6; // mapped to the SPDT switch COM1. pin 6 gets
int motorControl3 = 5; // mapped to COM2, pin 5 to COM3, and pin 4
int motorControl4 = 4; // to COM4. I chose to call these by their
// COM mapping numbered for the pins used.// The naming convension I used for the mobility calls should be
// fairly easy to understand.
digitalWrite(motorControl1,LOW); // Move all switches to OFF
digitalWrite(motorControl2,LOW); // effectively this moves all
digitalWrite(motorControl3,LOW); // power to wheel motors to (-)
digitalWrite(motorControl4,LOW); // DC power, so no movement.
moveLeftForward(); // I am concerned how much further forward the
moveRightForward(); // first wheel to start will get over time.
void moveBackward() // It may be a trivial amount, but maybe not
moveRightBackward(); // There will be no way to know until I get
moveLeftBackward(); // the pulse-code modulator sensors involved
pinMode(motorControl1, OUTPUT); // Declare the pins as ouput
pinMode(motorControl2, OUTPUT); //
pinMode(motorControl3, OUTPUT); //
pinMode(motorControl4, OUTPUT); //
Price $100 w/o PSU
Case: Prodigy (6 colors)
http://www.newegg.com/Product/Product.aspx?Item=N82E16811345016 - Black $70
http://www.newegg.com/Product/Product.aspx?Item=N82E16811345017 - White $80
http://www.newegg.com/Product/Product.aspx?Item=N82E16811345021 - Orange $90
http://www.newegg.com/Product/Product.aspx?Item=N82E16811345027 - Blue $90
http://www.newegg.com/Product/Product.aspx?Item=N82E16811345020 - Red $90
http://www.newegg.com/Product/Product.aspx?Item=9SIA4CP1GG0444 - Green $190
Case: Element Qi w 200W Black SGCC
Price: $65 w/PSU
Case: CSAZ-103 Black SECC
Price: $55 w/o PSU (Std ATX)
Core i3-4330 Haswell Dual Core 3.5GHz
RipJaw Series 8GB RAM
Black Series WD1003FZEX 1TB
DVD Burner DRW-24B1ST
Case: ? + PSU?
Total w/o case: $488
Among word processors and text editors, some are better for doing certain kinds of writing tasks than others. Full office word processors are very complete and robust in the features offered in order to format text into tables, using font styles/colors/sizes, etc. There are text editors that are great at providing speedy text updates and syntax highlighting for coding in various languages, and some even in multiple languages at the same time. Finally there is a category of text editor does very little for the user, by design, and this is a welcome thing. This article is about one such application called Focus Writer.Read more...
We are connecting this website to the Google+ page created for that purpose.
Another link will be made later on in a permanent button in a site update beind developed now.
What is the state of GNU/Linux web development tools? Specifically of course, what tools are as direct a replacment of Dreamweaver as possible. It is currently Jan 5, of 2013 and I am writing this using Ubuntu 13.04 as my operating system. I will catalogue the applications available within the default Ubuntu repository as well as those available from secure locations outside.
As of writing this I am currently using Ubuntu 13.04, and the software center has a number of tools easily available via the software center under the Developer Tools section, in the Web Development category. But of those tools only Bluefish is Open Source, designed for the GNOME/Unity desktop, and is a full featured editor.Read more...