noot.sh

Thoughts and recipes from a Developer / Home Chef / Gamer / Doom enthusiast

Project KRAB-E

Published on by

This is the first post in an attempt to document the construction of my droid, which I’ve designated: KRAB-E.

KRAB-E is a hexapod, meaning it has six legs. Given that all life eventually evolves to the crab form, I found this fitting for my first robo project. Besides, would you want a cool 6-legged droid, or a boring 2-legged one?

I will be using this guide on instructables to get myself started.

+00d:00h:00m

I gathered the parts I need to get started. Controlling KRAB-E’s movement will be a MEGA R3 Arduino. I will also use a handful of MG996R servos (18 of them are required).

My first step is to make sure the Mega R3 works:

We do everything in the terminal. WEAVER-1 is the clanker’s name I chose before realizing spiders have 8 legs.

+00d:01h:00m

Gathered up servos for calibration. 6 legs and 3 servos per leg = 18 servos.

Each servo needs to be calibrated to 90 degrees before I can install it.

Doing this one by one is going to suck. I’m going to make a device to speed things up.

+00d:02h:00m

I did it — I put together a small device that will allow me to quickly program each servo by plugging it into a connector, pressing a button, then moving on to the next one.

Source code or the calibration is below. You can change SERVO_PIN and BUTTON_PIN if you wish.

#include <Servo.h>

Servo servo;
const int SERVO_PIN = 9;
const int BUTTON_PIN = 2;

void setup() {
  Serial.begin(9600);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  Serial.println("** KRAB-E SERVO CALIBRATION **");
  Serial.println("1. Connect servo to male connector");
  Serial.println("2. Press button to calibrate.");
  Serial.println("");
}

void loop() {
  // check if button is pressed
  if (digitalRead(BUTTON_PIN) == LOW) {
    Serial.println("Calibrating servo");
    servo.attach(SERVO_PIN);
    servo.write(90);
    Serial.println("Servo has been centered to 90 degrees.");
    delay(1000);
    servo.detach();
    Serial.println("Calibration complete. Servo is now safe to unplug.");
    Serial.println("Ready for next servo.");
    delay(500);
  }
}

Doing it this way prevents any accidental connections from happening by unplugging/plugging stuff into the Arduino while it is powered on.

Time to calibrate some servos while I print KRAB-E’s body.

+00d:12h:00m

Printed some prototype parts and assembled them.

Images below are of the various printed pieces.

I thought these colors would look nice but I have a different vision, so I’m going to start printing the actual parts now.

+02d:00h:00m

Took a day off to go to the Philadelphia flower show with my amazing girlfriend. I highly recommend it to anyone thinking about going.

I came back to newly printed parts, and an Fantikk E2 Ultra Electric Screwdriver waiting at my doorstep (something for which my hands will be very happy about).

This post isn’t sponsored or anything, but I do want to say that I have been very happy with Fantikk’s products lately.

Here are some photos of the (mostly) completed leg.

+02d:06h:00m

I printed feet for my clanker.

I will update the post with new stuffs as it happens. Until then…

Leave a Reply

Built with plentiful amounts of šŸ’– and ā˜•

Check me out on GitHub

© 2026 - noot.sh