Tuesday, December 30, 2008

Implementing RF Modules Tutorial

I finally wrote a tutorial on using those pesky RF link modules. When I first started out using the RF modules there were only two tutorials available and they weren't so clear. After a month of struggling with the RF , I managed to get it to work. I had some spare time on my hands so I wrote up a giant tutorial on using the RF modules - its filled with code, schematics, and helpful tips.
Link : http://narobo.com/articles/rfmodules.html

Thursday, December 11, 2008

The Roboduino is finally on sale!!!

Its $40 for a kit and $55 for an assembled version

More info and sales information here:


Features / Specs:
* 100% Compatible with Arduino software.
* Power buses along side pwm and analog pins easily accept standard servo and sensor connectors.
* Powered can be supplied from USB, barrel plug or 3-pin male header. You'll need a suitable power supply when driving multiple servos.
* dedicated UART 3-pin male header
* 6 PWM outputs with neighboring unregulated power pins
* 6 analog pins
* 14 digital pins
* Reverse polarity protection for board circuitry (not for unregulated power pins)
* Optional I2C pull-up resistor locations

Wednesday, November 26, 2008

Looking for Beta Testers for the Roboduino

I'm currently looking for some beta testers for the Roboduino
Roboduino Specs: http://erobots.blogspot.com/2008/11/new-robot-product-roboduino.html

Beta testers get a special discount on the Roboduino - $30 for the Roboduino kit ( thats 25% off of the retail price) and $50 for assembled board
(no discounts on an assembled Roboduino)

Beta testers are expected to use the Roboduino on robots or some electronics. Testers are expected to take pictures of what they used it on and also must report all malfunctions, any errors, etc.

If you are interested please contact me through email : airman00 at gmail.com . Include how you plan to use the Roboduino, any robotics/electronics experience you have , and if you want the kit version or the assembled version. Space is limited and I will be picking the beta testers I think are best for the job.


EDIT: No more spots left for beta testers. It all got filled up in a couple of hours.
Expect the Roboduino to be on sale in late December

Monday, November 24, 2008

First Roboduino Assembled!

The first Roboduino has been assembled and brought to life!!!

I tested out everything there - UART, PWM, status LEDs, etc. and all is working perfectly!!!

Thursday, November 20, 2008

First Batch of Roboduino PCBs !

Heres a quick preview of the Roboduino PCB . More updates after its assembled and tested.

Sunday, November 2, 2008

New Robot Product - the Roboduino

I've seen people use the Arduino on the robot and saw what kind of hassle they had. Servos and sensors were a pain to plug in and everything seemed to need a shield. I decided to go ahead and make my own microcontroller board - basically a modified Arduino that is geared for robotics. This microcontroller is entirely plug and play. No more stupid shields needed to plug in a servo. Each pin has its own power bus, so it couldn't be simpler.

I've teamed up with Scott from CuriousInventor.com(soon to be the sole supplier of the Roboduino ). Prototype boards should be ready in about 2 weeks and I'll make some demo videos of the first Roboduinos. Expect the first Roboduinos to be on the market in less than 6 months.

Heres an overview of it:

  • Both power jack and 3 pin connector for Power input
  • Male header pins that have GND and regulated power ( unless otherwise specified)
  • UART dedicated pins
  • I2C pin headers
  • Reset button
  • USB bootloader interface
  • ISP pins
  • 6 PWM pins with unregulated power
  • 6 analog pins
  • 14 digital pins
  • 1 LED dedicated digital pin
  • Power bus of male headers for 5V,Gnd,and 9V
  • Polarity Protection

Sunday, October 19, 2008

Line Following Robot With Vision

I will be building a line following robot for a competition and I'll use a CMUcam to do vision processing.

Heres some basic pseudo code for line following with vision:
Locate Middle Mass of Line
Turn scan servo till CMUcam is aligned with middle mass
Have chassis align with CMUcam "head"
Go Forward if Middle mass is aligned with CMUcam

The line following robot with vision uses a CMUcam , four 150:1 Micro Metal Gearmotor HP motors , Axon microcontroller, 6V NiMH battery pack, and one panning servo for the camera. Chassis is HDPE (spray painted blue) and is two decker - deck supported by four hex spacers.

I haven't decided yet if I am going to make a step-by-step tutorial or just documentation. Also I'll be making a tutorial on interfacing the CMUcam to the Axon.

More updates to follow.

Update for Giant Bipedal Robot

I was recently contacted by a team of computer science seniors to help them out with their senior project. They wanted ideas and some guidance with their project. I suggested to make a bipedal robot and they decided to make a BRAT biped robot solve a maze. I agreed to help as long as they sent me a copy of their code and final report when they were done. This is great for the Giant Biped project because now I don't have to spend so much time playing around with the algorithms and have time to spend on other projects. And since we have the same setup ( same robot, same sensors, same microcontroller) their code will work right away on my robot. Once I get the small scale working perfectly I can use the data gathered from that and just scale up.

Updates after a while

OK its been almost 2 months since my last post. I've taken upon myself a lot of new projects and I'll be detailing them in my following posts.

Saturday, August 30, 2008

Friday, August 29, 2008

Bluetooth Controlled Lights

Today I finally finished my wireless colored lights that are controlled with bluetooth. I used the BlueSMIRF Gold on one of the Axon's UART lines and wrote up a program that "listens" on the BlueSMIRFs Rx line ( the line where the incoming serial data is) for the key presses. There are four colors of LEDs and each is controlled by the first letter of the color ( the code for white is "w" ). I used ZTerm on MacOSX as the terminal emulator . It has extremely long range as well - I can control the lights from the second floor when the lights are in the basement.

Here is the code used:

// *************** Bluetooth Lights ****************
#define blue_on PORT_ON(PORTC,0)
#define yellow_on PORT_ON(PORTC,1)
#define red_on PORT_ON(PORTC,2)
#define white_on PORT_ON(PORTC,3)
void all_off(void)
} // end routine
// *************END BLUETOOTH Setup******************

Code (example show is for blue only , just change the letter and color for the others):

char cByte = uart0GetByte(); // get byte from UART0 on the axon
if (cByte == 'b') // if character received is b then
all_off(); // turn all LEDs off
blue_on; // turn only blue LED on

Tuesday, August 26, 2008

Update for Servo Position Calculator

I fixed some bugs and also added option buttons on the side of the servo wheel so that you can just click for the following angles = -90 , -45, 0 , 45, 90 .

For manual control just enter the value in the proper text box and press Calculate to get the other values.

Here is the download link for the newest version:

Monday, August 25, 2008

BRAT Bipedal Robot Update

I played around with the BRAT biped robot and the Axon and I finally got it to walk. The gait is not perfect yet but its a start. The servo position calculator program the I made really helped me out. The entire program was made in C and the timing for the servo is cycles based. The Axon is a really powerful microcontroller board and its extremely easy to use.

More updates to come within the next week when I perfect the gait and add on an accelerometer.

Heres a video of it walking:

Servo Position Calculator

I've been working on my biped for about a week now and it was getting annoying to figure out the amount of cycles needed each time. So I developed a servo position calculator that calculates the angle, cycles delay,milliseconds delay, and microseconds delay for a servo when given at least one variable. It even visually displays the turn of the servo onscreen.

Note: this version is for 16mhz only

Download it from here:

Saturday, August 23, 2008

Updates in Robotics Projects

Heres a quick list of what I am currently working on and what to expect from me in the next couple of weeks.

1. I'll be writing a tutorial for interfacing the CMUcam with John Palmisano's Axon microcontroller board (available at SocietyofRobots.com)
2. Brandt Daniels and I are gonna team up and write a tutorial on interfacing the BlueSMIRF gold to an AVR based microcontroller board
3. I'll be documenting my small scale BRAT biped robot. I was shocked to see that not one person posted up any documentation on using that biped robot with any microcontroller board besides the included Atom Bot Board which uses BASIC. I'll be documenting how to use the BRAT biped with the Axon microcontroller which uses C.
Heres a pic of my biped robot with the Axon microcontroller board mounted on.

Sunday, August 17, 2008

New Parts

I just ordered a whole lot of new parts I have been aching to get ever since I started doing work in robotics. I bought a BlueSmirf Gold Module, an RF link Module , 3 axis accelerometer , digital compass, USB to RS232 Adapter, RS-232 to IDC adapter, some high power LEDS, and a BRAT bipedal robot kit.

Can't wait until I get to play with all these parts.

Also, if any readers have any cool projects they've built lately , send me an email and I'll post a link to your project from my site.


Thursday, August 14, 2008

New Project: Giant Biped Robot

My latest personal project is a giant biped robot for me to ride on. This is probably the most ambitious project I have ever undertaken and I expect it to be done by next year. The biped robot will be a dynamic balancer and will be 5 to 6ft tall , plus another few feet taller with me sitting on it.

It will be loosely based off the BRAT robot biped . By loosely based I mean it will have the same joints and will use motors not pneumatics. More updates to come

Contest Prizes

Its been a while since I've last updated this blog - way too busy with designing projects.

Anyway my robot butler robot tutorial was a finalist in the Instructables Contest and was also a finalist in the Trossen Robotics Contest. Basically I won T-shirts and a Gift Certificate.

I'll keep on entering Chives into more robot contests that turn up in the future.

Friday, July 11, 2008

Mailing list

I've added a mailing list feature to my website . Every week I will send out a robotics bulleting . It will include updates to my website ,a robotics related article, a list of cool robots that people built, and some links to interesting robotics related websites that I found.

To join this mailing list sign up with the forum on the upper right side of this blog.


Video of Chives , My Butler Robot Version 2



My Butler Robot: The Software

The software that Chives runs off was created in Visual Basic 6 and makes heavy use of Microsoft Vista's Speech Recognition Tool.

The minimum laptop requirements for the butler robot are as follows:
1. Runs any version of Windows Vista
2. At least 512 MB RAM
3. Two USB ports
4. Wifi Adapter ( Built-in or USB)
5. Speakers (Built-in or USB)

You will need to install/ setup the following programs and drivers:
1. Microsoft Visual Basic 6 ( if you want to edit and run the butler robot's program)
or if you want to only run the butler robot's install this runtime filesoftwareinstall this runtime file
2. Setup Microsoft Vista Speech Recognition
3. CCRP Timer Object
4. Phidgets 21 Installer Package
5. Free Voip Calling from Robot
6. RoboRealm

Verify Connections
After installing everything verify that the Phidgets Interface Kit Outputs are connected to their appropriate components. If something is wrong then just make the proper connections.

Output(0) = Relay for Left Motor to turn forward
Output(1)= Relay for left motor to turn in reverse
Output(2) = Relay for right motor to turn forward
Output(3) = Relay for right motor to turn in reverse

Output(6) = Left arm motor
Output(7) = Right arm motor

Output(9)= Bottle Cap Opener motor
Output(10)= Bottle tilter

Output(15) = Gripper Motor

Downloading the Code
The code can be downloaded from this page . Just download it and unzip.
This is version 1 of the code. Look on my blog ( eRobots.BlogSpot.com) for the most updated version.

This code has the following features:

Voice Control Over the Following:
1. Drive in all four directions - distance in "units"
2. Speak the Current Time
3. Speak the Temperature in Your Area
4. Speak the Weather Conditions
5. Pour a Drink
6. Raise Right Arm
7. Raise Left Arm
8. Close gripper
9. Various Sound Effects ( gun shot , load gun , laugh , etc.)

Text to Speech Warning of the Following:
1. No internet connection
2. Low Battery
3. Being Remote Server Operated now

This code is a stable release . My program with Voip and Roborealm interface has some bugs , so I'll only release that when I get all those bugs worked out.

To run my program do the following. Launch Vista Speech recognition and get it out of sleep mode and have it listen. Then launch my program . Now speak the commands and Vista Speech will click the commands that are in my program.

In the next few tutorials I will be explaining parts of the code so that you will be able to edit it to your liking.

Explanation of Subroutines and FunctionsI have included in the code a lot of subroutines and functions to make the code easier to use and easier to understand .

Here is a list of the major subroutines and functions

1. Speak
The Speak subroutine will play the sound file which is specified . All sound files must be in the "Voice" folder in order to play.
The syntax for the Speak subroutine is : Speak (filename as String)
ex: Speak "File1" - this will play the sound file "File1.wav" which is in the folder "Voice"

Note: For variables such as weather conditions make sure that the proper sound file exists for the condition.

2. Pause
The Pause subroutine will as it's name implies pause the code for a certain amount of milliseconds.The Pause function uses the Sleep function( a Win32 function) , but before sleeping it makes sure that all prior commands were fully completed.
Syntax for the Pause subroutine is : Pause (milliseconds as Integer)
ex: Pause 2000 - this will sleep for 2000 milliseconds a.k.a 2 seconds

3. Drive
The Drive subroutine is responsible for controlling the drive motors. The subroutine requires two variables to be filled in order to work. The two variables that it relies on are strDriveDirection and strUnits. strDriveDirection is a public variable because that way the direction can be set separately and in a different procedure than strUnits.

strDriveDirection tells the subroutine which drive relays to activate and strUnits tells the subroutine how long to activate the relays.
Syntax for the Drive subroutine is:

strDirection = (direction as String)
Drive (milliseconds as Integer)

ex: strDirection = "Forward" ' set the Direction to forward
Drive 3000 'Drives for 3000 milliseconds or 3 seconds

4. Get_Time
The Get_Time public subroutine returns the current time in a variety of variables. It has the ability to separate the time into the singles and tens place, set the time to 12 hour time, divide the day into AM and PM, and even divide the day into day phases(e.g. afternoon).

The syntax for it is either Get_Time or Call Get_Time

It returns the following public variables:
strDayDivider - this is either AM or PM
strHours - the amount of hours in 12 hour time ( maximum is 12)
strRawHours- the amount of hours in 24 hour time ( maximum is 24)
strRawMinutes- the amount of minutes ( double digit)
strSinglesMinutes- the amount of minutes in the singles place only ( single digit)
strTensMinutes- the amount of minutes in the tens place only ( e.g. 30 , 40 , 50 )
strDayPhase - either "Morning" , "Afternoon", or "Night"

5. Get_Weather_Info
Gets the weather information( temperature and conditions) and returns public variables.

The syntax is either Get_Weather_Info or Call Get_Weather_Info

It returns the following public varables:
strTemperature - temperature in degrees farenheit ( double digit)
strDegrees_Singles - temperature in the singles place only ( single digit)
strDegrees_Tens - temperature in the tens place onle ( e.g. 10 , 20 , 30 , 40)
strFeels_Like - feels like temperature in degrees farenheit ( double digit)
strFeels_Like_Singles - feels like temperature in the singles place only (single digit)
strFeels_Like_Tens - feels like temperature in the tens place only (e.g. 10, 20 ,30)
strWeather_Conditions - the weather conditions outside ( can be anything from herehere )

There are many other minor subroutines and functions , but the average user will not need to use them .

6. HighOutput
This subroutine sets the assigned port number a logical high or on.

syntax HighOutput(portnumber as integer)

ex: HighOutput (9) - Turns on Output 9 of the Phidgets

7. LowOutput
This subroutine sets the assigned port number a logical low or off

syntax LowOutput(3) - Turns off Output 3 of the Phidgets

Monday, July 7, 2008


I entered Chives into the Instructables Robot Contest.

I made an extremely detailed tutorial on him so that anyone can build their own butler robot.

To vote for Chives you need an instructables account
If you have an account already then go to the link below

Then look for the post titled Build Your Own Butler Robot. Then click the Vote button underneath it. After this just click the picture of the butler robot to see the entire tutorial

Please vote for mine only , because if you vote for someone elses also then your vote by me is negligible.

Wednesday, July 2, 2008

My Butler Robot: Building the Robot Arms

The robot arms will consist of a gripper and an arm which makes 90 degree revolutions.

The gripper that I used came from one of those robot grabber toys.

You will also need the following PVC parts , I believe one is called a threaded PVC connector and the other is a 2" length pipe with a piece of plastic sticking out in the back.

Put the threaded connector over the pipe piece and connect the end of that pipe to the gripper. Hot glue the end of the pipe to the gripper.

Now take any piece of PVC pipe that is threaded on the end and cut the pipe around three inches from where the threaded part begins.

Hotglue that piece that was just cut to the end of a different 17" PVC pipe.

Now take both pieces outside and spray paint them black.After its dry you can attach the gripper to the pipe by just twisting the threaded connector on top of the threaded portion of the long PVC pipe.

Now take one of the two Power Wheels motors and mount the long PVC pipe of the robot arm to it , using some small L brackets.Use hot glue if you want to secure it more. The small L bracket that I put was 7" from one end and 10" from the end with the gripper.

Now attach the motor to the body using two screws.

Your robot should now look like this

Take another piece of the same 17" PVC pipe and attach a threaded connector.

Spray paint that black and mount it to a motor with two small L brackets(one on top and one on bottom) as we did before to the other arm. Use hotglue if needed to secure the arm.

Make sure both arms are secured in place .Here is what you should have so far by the robot's body:

And the back view for those who need it:

There should be two wires coming from each motors. Connect the red wires from each of the motors and connect those red wires to the positive terminal of the 6V battery pack.

Connect the Negative terminal of that 6V battery to the negative of the 12V battery ( which is common ground) then connect the black wire of the left arm motor to Output #6 , and the black wire of the right arm motor to Output #7.

Solder on wires to the existing wires connected to the gripper and connect the red wire to the positive terminal of the 6V battery and the black wire to output #15.

Open up the servo and solder on longer wires to the motor terminals. ( the red and black wires pictured)

Attach the connector featured to the servo

Attach the servo connector to the pipe connector and tighten them together.Then mount the servo the PVC pipe arm of the right arm using screws or hotglue.

Hotglue the motorized wheel to the bottle holder on an angle so that the wheel brushes against the cap of the bottle.

Solder on longer wires to the motorized wheel . Connect the red wires of both the servo motor and the motorized wheel to the positive terminal of the 6V batttery. Connect the black wire of the servo to Output #8 of the Phidgets. The black wire of the motorized wheel should be connected to Output #9.A cup can be attached on a L bracket if you want to add one.

Everything should be wired up now and now you should clean up the wires - that means tape them up, wire tie them , etc. Just make it less messy to work with. Heres what you should have :

Saturday, June 28, 2008

My Butler Robot: Building the Robot's Head

The robot head for your butler robot can be whatever you want . I decided to make a dome shaped head with one eye. Here are the instructions for the robot head that I made:

Get a 12" diameter cake cover and if its not silver yet , then spray paint it silver.

Now find a soldering iron that you don't mind destroying. ( you can actually just clean it up afterwards it doesn;t really destroy it)Plug in the soldering iron and wait for it to heat up.

Now find one threaded PVC connector ( 1.5" diameter is what I used).

Hot glue that piece to the silver dome in the place where you want the eye. Now the soldering iron is nice and hot you need to slowly melt a hole inside the PVC piece you just glued. Make sure you don't melt the actual plastic piece.

After you made your hole , wet the soldering iron with a sponge and unplug it , letting it cool. Take some PVC pipe ( I used a 7" , 1.5" diameter PVC pipe) and hot glue it to the bottom of the cake cover as shown. Make sure the PVC is attached securely.

Find that webcam that you will dedicate for this butler robot ( I used Quickcam Pro 4000 ) and glue it so that the lens of the camera is looking through that hole we melted.

Now the glue the other end of the PVC pipe to the center of the top piece of the wood platform we made.Cool head isn't it?

My Butler Robot: Building the Upper Body

After the bottom is completely assembled and the robot is actually starting to like like a robot, we have to build the upper body , which is the part that will really define the butler robot.This stage will also require the most amount of materials.

I used:

  • one 5.5" x 9" plywood and 3/4" thick
  • one 5" x 9" plywood piece and 3/4" thick
  • two 10" x 21" plywood piece and 3/4" thick
  • one 9" x 11.5" plywood piece and 3/4" thick
  • one 9" x 21" plywood piece and 3/4" thick

Cut those materials and lay them outside on the floor. Take out a canister of black spray paint and prepare to paint!

Now take your canister of black spray paint and spray all the boards with a nice layer of black paint. Be sure to wear latex gloves so that you don't get your hands dirty.

Let the painted wood dry and now get ahold of the mini -fridge. If it isn't black already then spray paint that as well.

Attach the 5.5" x 9" piece to one of the 10" x 21" pieces as shown in the picture below.

Grab the other 10" x 21" piece and attach it to the other end of the 5.5" x 9" piece.

Now attach the 5" x 9" piece to the other end of the wood.

Stand up the wood that was all connected together so that the 5.5" x 9" piece is on the bottom end.

Take the 9" x 11.5" wood and screw it in to the top as show in the picture.

Take two L brackets and connect it so that the top of the bracket is 5" above the floor.

Take that mini-fridge and lay it down on top of the L brackets we just put up.

To secure the mini-fridge in place use a hot glue gun to glue the sides of the minifridge to the wood.

It should be secured and shouldn't wobble in there. Make sure that you have enough clearance to opne the fridge door.

The mini-fridge should have two black wires coming out from the back. Connect the end of one wire to the positive terminal of the 12V battery and the end of the other wire to the negative terminal. Now whenever the robot turns up the minifridge will be on.

The laptop that I dedicated to Chives was an old one I had and had a 17" screen. Lay the laptop that you have vertically on the space that is in back of the chassis and secure it with L brackets.

Unscrew the plexiglas cover that we put on the motor enclosure place it on the floor . Now put the wooden box we just built on top of it ( aligning it so that its in the center). Secure the wooden box to the plexiglas using two L brackets.