text: I.
  Here is is driving in a triangle, without any special add ons
  In the instructions I'll walk you through how to:
  - Modify the servos for continuous rotation
  - Fit the track hubs on to the servos
  - Make a custom battery pack
  - Wire it with a few connections
  - Assemble it
  - Program it
  - Customize
  For the basic platform the following supplies are needed:
  an Arduino nano
  a small rechargeable battery
  a pair of 9 g servos, modified for continuous rotation
  part of a Tamiya track set
  a 40 pin dip socket
  a rubber eraser
  some zip ties
  Step 1: Construction: Modify the Servos
  - Remove the tiny screws and open the case
  - Cut the potentiometer wires, these are where you will attach the resistors
  - If you have surface mount resistors, place a 5k (1k to 10k should work) on the pad from each of the side pads to the middle pad, if you don't twist a pair of through hole resistors like this
  - Break out the stop on the potentiometer with some small pliers, you need the pot for its use as a rotational bearing
  - solder on the resistors, if you used the pair of through hole ones, I recommend bundling them in electrical tape like so. For the servo that will go on the front, cut a notch for the wire to exit through the side so it doesn't come from under the robot.
  - (not shown) Before you close up, put a hole in the back part of the case opposite the spline to mount the idler (wheel with no teeth).
  - Use some angle cutters or pliers to remove any mounting flanges from the cases and file or sand down the ridges they leave, these can get in the way later.
  Step 4: Construction: Connect the Wires to the Socket
  A socket is used to mount the Arduino Nano to the robot, besides making the Arduino removable so that it can be used for other projects, this simplifies attachment to the rest of the machine. Alternatively you could buy a small breadboard for $4 (as shown in the second picture below from sparkfun.com) and zip tie it to the top in a similar way for more modular design.
  Here is where the eraser comes in. If you have the assembled servo/wheel sets from step 2, you can put the belts on them with the servo that has a wire coming from the side upright and the other laying with its long end pointed toward the upright one, as shown in the fist picture. Pull them to light tension, so the belts are nearly flat but not taught, and measure the gap between the servos. Cut a section of eraser to wedge in this gap. This works like suspension, allowing the frame some flexibility while holding it in place under most forces it will encounter. It's the white part in the picture..
  Step 6: Programming: Basic Operation
  This is built with an Arduino so that you can program it to do whatever you like. Here are the basics. Further expansions are covered next. To test things out you can upload the code and move the jumpers both to the on position.
  Really, the basic code to build on is just this:
  //---------------------------Start Code
  #include <Servo.h>//Loads commands to create Servo objects which generate PWM signals
  Servo leftDrive; // create servo object to control a servo
  Servo rightDrive; //another servo object for the left side
  void setup()
  {
  leftDrive.attach(11); // attaches the servo on pin 9 to the servo object
  rightDrive.attach(10); // attaches the servo on pin 9 to the servo object
  }
  void loop()
  {
  //here put commands which drive the servos
  //use the commands
  //rightDrive.write(any number 0-180);
  //leftDrive.write(any number 0 to 180);
  //to set the servos turning 0 is full one way, 180 is full the other, 90 should be near stop
  //which way is forward depends on your servos
  }
  //end code -------------------------------------
  So that gives you an idea how simple this can be.
  Here is a basic code example for just driving around in a square. Note that the video was with the delays set to 600, which resulted in a triangle, 450 gives you more of a square. (code starts after this line):
  //------------------------------------------------------------------------------------------
  #include <Servo.h>//Loads commands to create Servo objects which generate PWM signals
  Servo leftDrive; // create servo object to control a servo
  Servo rightDrive; //another servo object for the left side
  int pos = 0; // variable to store the servo position
  void setup()
  {
  leftDrive.attach(11); // attaches the servo on pin 9 to the servo object
  rightDrive.attach(10); // attaches the servo on pin 9 to the servo object
  }
  void loop()
  {
  //example routine, drives in a square
  turnRight();
  driveForward();
  turnRight();
  driveForward();
  turnRight();
  driveForward();
  turnRight();
  driveForward();
  }
  //the following functions are examples, you could easily make the robot
  //move on curved paths or at varying speeds by changing these numbers
  //0 is full forward, 90 is stop and 180 is full reverse. The case may be the
  //opposite for your build
  //turns right about 90 degrees
  void turnRight()
  {
  leftDrive.write(0);
  rightDrive.write(180);
  delay(450);
  }
  //turns left about 90 degrees
  void turnLeft()
  {
  leftDrive.write(180);
  rightDrive.write(0);
  delay(450);
  }
  //drives straight for 1 second
  void driveForward()
  {
  leftDrive.write(180);
  rightDrive.write(180);
  delay(1000);
  }
  //drives straight backward for 1 second
  void driveBackward()
  {
  leftDrive.write(0);
  rightDrive.write(0);
  delay(1000);
  }
  //end code---------------------------------------------
  So, the point of this is to be a platform. Making a robot just drive about can be fun, but the most fun is always making your own things. Since this is an arduino there is example code to add all kinds of controls, devices and sensors to customize your bot.
  Step 7: Customize It
  The idea I'm sharing here is how I made a compact simple to control robotic platform. I feel that showing you what to do with it exactly would not have much of a point, you can do whatever you like with it.
  That said, I'll make some suggestions of how you could expand this robot without reinventing the wheel. Other Instructables are suggested to get into the low level details of these features, and links are provided to buy them where available. I didn't make these Instructables, but they will integrate nicely, that's the great thing about an online community after all:
  Gripper
  The easiest way to add a gripper is with another micro servo, one that isn't modified for continuous rotation. You would add its control to code simply by attaching another servo, and giving it a position command, as seen in step 6.
  Here is an example which would fit right on:
  The same method could be used to add a scoop or other manipulator as well.
  If you want to just buy one, something like this would work nicely:
  Jameco 1.3 inch gripper
  Radio Control
  A fun thing to add to any robot, there are piles of tutorials on how to do this with an Arduino.
  You can do it with blue-tooth (easy but expensive)
  Or you could use an XBee (easy, and less expensive)
  Since the XBee is wider than the Arduino nano, and can't plug into it, I would actually suggest setting it over the nano and wiring it in around it.
  Examples of the code needed are widely availible, heres an XBee library for arduino.
  Of course, you could get an XBee/Arduino nano board, like this one from robotshop, and your robot would have a swanky tail.
  You can do it with a bare transmitter receiver (cheapest, but requires knowing what you are doing):
  Detect movement (PIR)
  This is actually remarkably easy, a PIR sensor compares the infrared map of its environment with one it has built over time. So it detects changes. They can be found for $10 at several stores including sparkfun and robotshop
  These have everything integrated, and the output pin goes high for a few seconds when motion is detected. All you do is give it power from the battery and connect the output to an input pin on the Arduino. Then set an interrupt or check the state of the pin. As seen on the customization of the platform above. This lets your robot react when someone approaches.
  Ultrasonic Range finding
  Ultrasonic range finders are an inexpensive way detect the distance in one direction with decent reliability in the range of about 0.1 to 10 meters. They tick out ultrasonic pulses at about 10Hz and detect how long they take to return. Most pick up obstacles in a conical span, so they can be fooled by things that aren't really in the way. It's no LADAR or computer vision, but it costs 1/1000 as much.
  This is also on the robot customization shown here. I used an HC-SR04 range finder and this library. I just got that from ebay for $6.
  There is also support for the PING range finder:
  And even if you use the cheaper one I used, this may help you understand how it works
  GPS
  If you want to give your robot a sense of its/his/her place in the world, there is example code to use a parallax GPS module on Arduino Playground here.
  Future Steps
  I'm planning a few fun projects with these. One will be to add wireless cameras, remote control, and little grippers, and then make tiny obstacle courses for them to explore in teams.
  Another fun project would be to mount a Kinect on the roof and make a bunch of these with wireless act as a swarm in formation.
  In general I'm going to use these as a basis for lots of projects, and I will be going into more detail about possible add-ons in that way. I would be very pleased to see this used in other Instructables and expanded. After all, sometimes you want to use a robot, but don't want to write about developing the basic stuff.
  Second Prize in the
  Robot Challenge
  4 People Made This Project!
  srijan sehdev made it!
  lunacava made it!
  lunacava made it!
  TrevorB23 made it!
  145 Discussions
  6 years ago on Introduction
  Really, really neat!
  It's hard to make a narrow robot when you're using continuous rotation servos because of the gearbox height, but you've overcome this with the tracks and the asymmetric mounting method.
  Just to clarify, you've drilled a hole for the idler pinion in the servo bottom cover in line with the spindle? Must have been pretty tight in there - the boards in those 9g servos don't leave a lot of room.
  Reply 6 years ago on Introduction
  To mount the idler I did it just as you said, its screwed into a hole drilled on the back cover opposite the spindle. I had to be sure not to put the screw in too deep so it wouldn't hit the board, but in the ones I was using the board was slanted so it wasn't too near the back wall at that point. I've noticed with these cheap ones it isn't always the same slant, but on the ones where they installed it so that the near side is on the end I want to mount the wheel to I just tilt it the other way before I put it back in when I do the modification.
  Reply 1 year ago
  but why won't the servos receive signal
  Reply 1 year ago
  I guess I should have mentioned, you can move the servo connection and then change the pin that is being used for PWM in your code. Check the schematic for your given Arduino to find out which pins support PWM.
  According to this, the Nano Board can PWM 6 pins, they are 3,5,6,9,10,11. There are also libraries like this one that let you run a servo on any output pin:
  1 year ago
  WE CONTROL THIS ROBOT USING MOBILE/WIFI ALSO??
  Reply 7 weeks ago
  Hello hello,
  This is my first trial to make a nanobot and my first trial to use an arduino. I read the original project on...
  but I am missing the partlist and I am a newbie. Can you please tell me which parts you used?
  Best regards Arnold
  Reply 1 year ago
  If this is meant as a question could you be more specific?
  1 year ago
  can a l9110 motor driver be used with this project
  Reply 1 year ago
  Sure, it will be very similar to using an L298 or L293 as shown here
  So it ends up being a whole different project. The reason for using these little servos is that you get the controller, driver, motor and gearbox all in one package. If you are using these drivers you can (and must) use a DC motor rather than a servo.
  If you have your own motors and a way to drive tracks with them (usually a gearbox and other mechanical details) then the I9110 looks like it will work fine. It says it has 800 mA per channel, which is more than the L293D many people use (500 mA if I recall correctly). But you will need two since it appears to be just one channel.
  See my lego robot tutorial for an example of using the L298N to drive DC motors on a similar tank drive robot. Although that is with a PIC microcontroller and is commanded by an RC remote receiver.
  Reply 1 year ago
  Thanks
  1 year ago
  So if you wanted to turn this robot into an autonomous one as you suggested, what Arduino program/code would you use for it?
  1 year ago
  #include <nano tank>
  int rSpeed=0;
  int lspeed=0;
  Servo rightservo;
  Servo leftservo;
  void setup(){
  Serial begin(9600);
  rightservo.attach(11);
  leftservo.attach(10);
  rightservo.write(90);
  leftservo.write(90);
  }
  void loop (){
  if(serial.available()>0){
  command=Serial.read();
  stop();
  switch(command)//these are the letters and numbers that app sends to the bluetooth module
  case'F':
  forward();
  rspeed=200;
  lspeed=200;
  break;
  case'L':
  left();
  break;
  case'R':
  right();
  break;
  case'D'
  rightservo.write(90);//if disconnect turn motors off
  leftservo.write(90);
  break;
  }
  }
  void forward()//define what is forward
  {
  rightservo.write(rspeed=200);
  leftservo.write(lspeed=200);
  }
  void back()//define what is backward
  {
  rightservo.write(lspeed);
  leftservo.write(rspeed);
  }
  void left()//define what is left
  {
  rightservo.write(rspeed);
  leftservo.write(rspeed);
  }
  void right()//define what is right
  {
  rightservo.write(lspeed);
  leftservo.write(lspeed);
  }
  void stop()//define what is stop
  {
  rightservo.write(90);
  leftservo.write(90);
  }
  are these codes correct?
  1 year ago
  Bought a ton of sensors. Not sure what capabilities the Iron Midget will get, but i am pretty sure he is going to drag a trailer full of the guts of a laser tag gun like an artillery piece.
  Reply 1 year ago
  I like it! It's cool to see another one built. After 5 years and so many views, I'm considering an update. Maybe remote control and a camera. Also it seems like you can buy ready made continuous micro servos now, and maybe I could improve the way the pins are brought out. Back when I made this I was just out of college and now I'm an engineer at SpaceX, I should be able to improve it at least a bit :P
  1 year ago
  What if I attach the signal wire to the wrong digital pin???
  Reply 1 year ago
  If you attach the servo signal wire to the wrong pin then the robot will not move. Servos just sit still when they get no signal. The highest voltage on this robot is 5V, so it isn't enough to toast anything no matter how you connect it.
  2 years ago
  what is the hypothesis of this robot
  Reply 2 years ago
  I don't understand the question. I suppose if the robot is viewed as an experiment the hypothesis is "I bet I could use these micro servos to make a very simple little tank" and the conclusion was that I could.
  Reply 1 year ago
  how would i screw in the other wheel on the back side like the one thats not the driver.
  Reply 1 year ago
  There's no special trick to that. I just found a screw that was the right size for the idler to spin on and the right length to go through and into the plastic on the other side, but not too far to avoid going into the gears. Then I drilled a small hole in the case and attached the wheel with it.