Logo Turtle Robot


 

 

 

 

Our Turtles


Instructions, Bill of Materials, and Assembly Directions

Instructables: Original Instructions


Parts:

- Missing Capacitor: 

-Missing power switch

 

https://www.sparkfun.com/products/9609  zackboston 

- Missing 2x  M3 x 8mm pan head screw


Build and Assembly Suggestions:

- 3D printing.  On the Makerbot 2.0, I used Standard, 0.3mm, 2 shells, no raft for printing.  On the Ultimaker, I just used the settings recommended by the Ultimaker. zackboston

- Insert the steel 5/8" ball bearing as soon as the 3D printer stops for an easy, perfect fit. Josh

- I used a heat gun to warm up the chassis on a cold cement floor so the nuts fit into the slightly too small on my 3D printer holes. Josh

- I found I could pull the nuts into the holes by tightening the screws. Erik

 

 

- Caster holes in chassis are in the wrong place for battery holder to fit. Drill new holes. (Yeah, someone pointed that out on the Instructable. I thought the STL might have been updated but I guess not.)

 

 

- I used elastic hair bands in place of the O-rings in the Instructable. I'm finding in use that they slip sometimes and would like to get the O-rings. Erik

- I added an LED (UV!) for debugging. I was trying to do something and without Serial communication you don't get any feedback from the robot, so I added LED blinks to see where it was in the program. I wired it from the anode in trinket pin 9, stretched over to a 330ohm resistor in a couple free rows toward the middle, then from the resistor over to the ground row. Erik

 

 

- Make sure that when the servo is in the down position that the pen holder rests on the robot's pen holder flush. If the pen holder on the pen is not in contact with the robot the lines will have weird backlash as the robot changes direction and the lines will not look beautifully crisp. The green lines in the example below were drawn without contact with the robot, the red with contact. Notice the line segments after the 45° turns. Josh

 

 

- Consider using a small piece of wood between the 3D printed stepper motor mounts. This reduces the amount of bowing in the chassis and helps keep the wheel base measurement consistent across turtles.

 

 


Calibration

Your calibration points are:

int wheel_dia=66.25; //      # mm (increase = spiral out) 66.25

int wheel_base=120; //,    # mm (increase = spiral in) 112

int steps_rev=128; //,     # 512 for 64x gearbox, 128 for 16x gearbox

int delay_time=6; //            # time between steps in ms

- I played with the wheel diameter without fixing the miscalibration. I changed the wheel_base=120 and got a perfect square that overlapped the rest perfectly. Josh


Usage

- Also, in the picture above you might notice an arc. I made an arcRight and arcLeft function so it can draw circles. I just isolated one motor out of the forward function so while one motor turns the other doesn't move, and doubled the "wheel_base" since it's a swing turn instead of a point turn. But you can give it a number of degrees of the arc to draw. So far there isn't a way to make a wider or tighter arc. That requires stepping the motors at different rates and I don't know how to do that yet. Erik

+++++++++++++++++++++

void arcLeft(int degrees) {

  float rotation = degrees / 360.0;

  float distance = wheel_base * 2 * 3.1412 * rotation;

  int steps = step(distance);

  for(int step=0; step<steps; step++){

    for(int mask=0; mask<4; mask++){

      for(int pin=0; pin<4; pin++){

        digitalWrite(R_stepper_pins[pin], fwd_mask[mask][pin]);

      }

      delay(delay_time);

    } 

  }

}

 

void arcRight(int degrees) {

  float rotation = degrees / 360.0;

  float distance = wheel_base * 2 * 3.1412 * rotation;

  int steps = step(distance);

  for(int step=0; step<steps; step++){

    for(int mask=0; mask<4; mask++){

      for(int pin=0; pin<4; pin++){

        digitalWrite(L_stepper_pins[pin], rev_mask[mask][pin]);

      }

      delay(delay_time);

    } 

  }

}

++++++++++++++++++

Erik

 

- Example of Erik's code on Josh's Turtle

 

- Here is a block of code to draw an octagon flower. Josh

++++++++++++++++++

void loop(){ // draw an octagon flower

  pendown();

  for(int x=0; x<10; x++){

  for(int x=0; x<8; x++){

    forward(50);

    left(45);

  }

   {

    left(36);

  }

}

  penup();

  done();      // releases stepper motor

  while(1);    // wait for reset

}

++++++++++++++++++


Troubleshooting

- If the turtle does not seem to be acting right, your batteries may be low. Mine would not run procedures as they were written. Changing the batteries fixed the issue. Josh


Taking it Further:

- Vacuum formed turtle "shell" like the Terrapin Inc.version from the late 1970s.

 

IMG_8534

 

IMG_8535

 

- Adding more turtle draw functions for the Arduino Code.  I've got a nice Wentworth Institute of Technology work study who would LOVE to do this, so send your ideas and he will add them to the code. . . zackboston

 

- Add the ability to use different drawing mediums

 

- Run ArduinoLogo on the hardware

 

- Sensors