Category Archives: R2D2 – Astromech build
Rotary encoder for shoulder positioning. HOHNER IN85-AEGS-H7A0-0250
Horseshoe cut outs – #beskar2d2 – astromech
Beskar 2d2 project planning – check list – Things to do
- HEAD
- Dome
- TOP
- Life Form Scanner
- Antenna
- Signal Processors
- Extension arm
- Flaps
- Periscope
- Camera
- Top (Pie Panels)
- Periscope
- Holographic Projector (Top)
- Life Form Scanner
- Middle
- Radar Eye + Primary Photo Receptor
- Bottom
- Logic Display Small Front
- Processor state inicator
- Holographic Projector (Front)
- Logic Display Large Rear
- Flaps – Sides (Dome Panels)
- Sensory Input Head
- TOP
- Neck
- Head Rotation Ring (cover)
- Head Rotation – Lazy Susan
- Motor to spin head
- Split Rings
- Dome
- BODY
- Chest
- Spacecraft linkage data slot (Large Data Port)
- Utility Arms – Spacefract linkage and conrol arms
- Body Compartments
- LEFT
- Computer Interface
- SCOMP
- Application interface
- Utility Saw
- Computer Interface
- RIGHT
- Grasping Arm
- Manipulator Arms
- LEFT
- Upper Belly
- Power Charge Arm Compartment
- Coin Slots (System Diagnostic input receptors)
- Torso Diagnostic input receptors
- Front Vents
- Upper ( Acoustic Signaller)
- Lower (System ventilation
- Pocket Vent
- Restraining Bolt
- Lower Belly
- Coin Return (Polarity Sink)
- Recharge Power Coupler
- Heat Exhaust (BTU Exhaust Wave)
- Interface Pulse Stabilizers
- BACK
- Recharge Power Coupler
- Coin Return (Polarity Sink)
- Interface Pulse Stabilizers
- Skirt
(Durasteel Shell)
- Foot Lifter
- Chest
- LEG (Left and Right)
- Shoulder
- Flange
- Shim (Horse Shoe)
- Hub
- Hydralics
- Buttons
- Under shoulder detail
- Actuating Coupler
- Leg
- Attitude Booster Turbine
- Booster Cover
- Leg Strut
- Ankle
- Bracelet
- Wedge
- Cylinder
- Battery Box
- Enclosure
- Harnessses
- Power bus cables (Hoses)
- Foot
- Skeleton
- Wheel
- Half Moon
- Front Strip
- knurled Hose Fitting
- Shoulder
- Center Foot
(Third Tread)
Retractable
- Lifter
- Leg
- Ankle
- Cylinder
- Foot
- Skeleton
- Wheel
- Half Moon
Framed Picture – R2D2 – Kenny Baker – Bleep Bloop
Horseshoe – shoulders for astromech
Robotix Toys
Getting stock metal cut for the shoulder “horse shoes”
The shop used two types of saws – one with the material going vertically
The second was with the material perfectly flat. Massive difference
Beskar2D2 – The dome has arrived
Beskar2d2 shoulder motors
BESKAR2D2 – test board with RJ45
#include <ReefwingSBUS.h>
#define MIN_LEFT_ROLL Â Â -255
#define MAX_LEFT_ROLL Â Â 255
#define MIN_LEFT_PITCH Â Â -255
#define MAX_LEFT_PITCH Â Â 255
#define MIN_RIGHT_ROLL Â -255
#define MAX_RIGHT_ROLL Â Â 255
#define MIN_RIGHT_PITCH Â -255
#define MAX_LEFT_PITCH Â Â 255
#define MIN_SBUS Â Â Â Â Â 200
#define MAX_SBUS Â Â Â Â Â 1800
//#define SWITCH_ON Â Â Â Â 991
SBUS RX_from_RADIOLINK(Serial3);
uint16_t channels[16];
uint16_t lostFrameCtr = 0;
uint16_t sbusChannel6 = 0, sbusChannel7 = 0, sbusChannel8 = 0, sbusChannel5 = 0, rxMode = 0;
int16_t sbusChannel1 = 0, sbusChannel2 = 0, sbusChannel3 = 0, sbusChannel4 = 0;
bool failSafe;
bool lostFrame;
bool armed = false;
void setup() {
 //  Start Serial and wait for connection from computer
 Serial.begin(115200);
 while (!Serial);
 RX_from_RADIOLINK.begin();
//BLUE RJ45 WIRE A
 pinMode(26, OUTPUT);
 pinMode(27, OUTPUT);
 pinMode(28, OUTPUT);
 pinMode(29, OUTPUT);
//wHITE WIRE Â RJ45 WIRE b
 pinMode(30, OUTPUT);
 pinMode(31, OUTPUT);
 pinMode(32, OUTPUT);
 pinMode(33, OUTPUT);
//BLUE RJ45 WIRE B
 pinMode(34, OUTPUT);
 pinMode(35, OUTPUT);
 pinMode(36, OUTPUT);
 pinMode(37, OUTPUT);
//WHITE RJ45 WIRE B
 pinMode(38, OUTPUT);
 pinMode(39, OUTPUT);
 pinMode(40, OUTPUT);
 pinMode(41, OUTPUT);
//GREY RJ45 WIRE A
 pinMode(45, OUTPUT);//this is capable of PWM//speed
 pinMode(49, OUTPUT);//direction
 pinMode(50, OUTPUT);//BRAKE
 pinMode(51, OUTPUT);//STOP
//GREY RJ45 WIRE B
 pinMode(44, OUTPUT);//this is capable of PWM  //SPEED
 pinMode(48, OUTPUT);//DIRECTION
 pinMode(46, OUTPUT);//BRAKE
 pinMode(47, OUTPUT);//STOP
}
void loop() {
 // Check for a valid SBUS packet from the RX_from_RADIOLINK receiver
 if (RX_from_RADIOLINK.read(&channels[0], &failSafe, &lostFrame)) {
  //Scale the joysticks to the min and max
  sbusChannel1 = map(channels[0], MIN_SBUS, MAX_SBUS, MIN_LEFT_ROLL, MAX_LEFT_ROLL);
  sbusChannel2  = map(channels[1], MIN_SBUS, MAX_SBUS,  MAX_LEFT_PITCH,MIN_LEFT_PITCH);
  sbusChannel4 = map(channels[3], MIN_SBUS, MAX_SBUS, MIN_RIGHT_PITCH, MAX_LEFT_PITCH);
  sbusChannel3 = map(channels[2], MIN_SBUS, MAX_SBUS, MIN_RIGHT_ROLL, MAX_RIGHT_ROLL);
  //  AUX Channels
  sbusChannel5 = channels[4];
  sbusChannel6   = channels[5];
  sbusChannel7   = channels[6];
  sbusChannel8   = channels[7];
  rxMode  = channels[8];
  if (lostFrame) { lostFrameCtr++; }
 //LEFT SWITCH
 switch (sbusChannel7) {
  case 200:
   Serial.print(“LS”);Serial.print(“A”);Serial.print(“\t”);
        digitalWrite(31, HIGH);
         digitalWrite(32, LOW);
         digitalWrite(33, LOW);
      break;
  case 1000:
   Serial.print(“LS”);Serial.print(“B”);Serial.print(“\t”);
          digitalWrite(31, LOW);
         digitalWrite(32,HIGH);
         digitalWrite(33, LOW);
   break;
  case 1800:
   Serial.print(“LS”);Serial.print(“C”);Serial.print(“\t”);
   digitalWrite(31, LOW);
         digitalWrite(32, LOW);
         digitalWrite(33, HIGH);
   break;
  default:
   Serial.println(“Invalid value”);
 }
/////////////////////////////// LEFT VOLUME
   Serial.print(“LV”);Serial.print(sbusChannel8); Serial.print(“\t”);
////LEFT X
    Serial.print(“LX”);Serial.print(sbusChannel4); Serial.print(“\t”);
   if (sbusChannel4 >= -255 && sbusChannel4 < -50) {
  // sbusChannel is within the range from -100 to -50
         digitalWrite(38, HIGH);
         digitalWrite(39, HIGH);
         digitalWrite(40, LOW);
         digitalWrite(41, LOW);
} else if (sbusChannel4 >= -50 && sbusChannel4 < -10) {
  // sbusChannel is within the range from -50 to -10
          digitalWrite(38, HIGH);
         digitalWrite(39, LOW);
         digitalWrite(40, LOW);
         digitalWrite(41, LOW);
} else if (sbusChannel4 >= -10 && sbusChannel4 < 10) {
  // sbusChannel is within the range from -10 to 10
         digitalWrite(38, LOW);
         digitalWrite(39, LOW);
         digitalWrite(40, LOW);
         digitalWrite(41, LOW);
} else if (sbusChannel4 >= 10 && sbusChannel4 < 50) {
  // sbusChannel is within the range from 10 to 50
         digitalWrite(38, LOW);
         digitalWrite(39, LOW);
         digitalWrite(40, LOW);
         digitalWrite(41, HIGH);
} else if (sbusChannel4 >= 50 && sbusChannel4 <= 255) {
  // sbusChannel is within the range from 50 to 100
         digitalWrite(38, LOW);
         digitalWrite(39, LOW);
         digitalWrite(40, HIGH);
         digitalWrite(41, HIGH);
} else {
  // sbusChannel is outside of all of the specified ranges
}
//////////////////////LEFT Y AXIS
  Serial.print(“LY”);Serial.print(sbusChannel3); Serial.print(“\t”);
   if (sbusChannel3 >= -255 && sbusChannel3 < -50) {
  // sbusChannel is within the range from -100 to -50
         analogWrite(45,fabs(sbusChannel3) );//speed
         digitalWrite(49, LOW);//direction
         digitalWrite(50, LOW);//BRAKE
         digitalWrite(51, LOW);//STOP//
Serial.print(“RF”);
} else if (sbusChannel3 >= -50 && sbusChannel3 < -10) {
  // sbusChannel is within the range from -50 to -10
         analogWrite(45,fabs(sbusChannel1) );//speed
         digitalWrite(49, LOW);//direction
         digitalWrite(50, HIGH);//BRAKE
         digitalWrite(51, LOW);//STOP//
Serial.print(“RS”);
} else if (sbusChannel3 >= -10 && sbusChannel3 < 10) {
  // sbusChannel is within the range from -10 to 10
          analogWrite(45,fabs(sbusChannel3) );//speed
         digitalWrite(49, LOW);//direction
         digitalWrite(50, HIGH);//BRAKE
         digitalWrite(51, HIGH);//STOP//
Serial.print(“SS”);
} else if (sbusChannel3 >= 10 && sbusChannel3 < 50) {
  // sbusChannel is within the range from 10 to 50
         analogWrite(45,fabs(sbusChannel3) );//speed
         digitalWrite(49, HIGH);//direction
         digitalWrite(50, HIGH);//BRAKE
         digitalWrite(51, LOW);//STOP//
Serial.print(“FS”);
} else if (sbusChannel3 >= 50 && sbusChannel3 <= 255) {
  // sbusChannel is within the range from 50 to 100
         analogWrite(45,fabs(sbusChannel3) );//speed
         digitalWrite(49, HIGH);//direction
         digitalWrite(50, LOW);//BRAKE
         digitalWrite(51, LOW);//STOP//
Serial.print(“FF”);
} else {
  // sbusChannel is outside of all of the specified ranges
}
 Serial.print(“\t”);
 Serial.print(“\t”);
 Serial.print(“\t”);
//////////////////////////////
//RIGHT SIDE OF CONTROLLER
/////////////////////////////
////////////////////////////////
  Serial.print(“RX”);Serial.print(sbusChannel1); Serial.print(“\t”);
   if (sbusChannel1 >= -255 && sbusChannel1 < -50) {
  // sbusChannel is within the range from -100 to -50
         digitalWrite(34, HIGH);
         digitalWrite(35, HIGH);
         digitalWrite(36, LOW);
         digitalWrite(37, LOW);
} else if (sbusChannel1 >= -50 && sbusChannel1 < -10) {
  // sbusChannel is within the range from -50 to -10
          digitalWrite(34, HIGH);
         digitalWrite(35, LOW);
         digitalWrite(36, LOW);
         digitalWrite(37, LOW);
} else if (sbusChannel1 >= -10 && sbusChannel1 < 10) {
  // sbusChannel is within the range from -10 to 10
digitalWrite(34, LOW);
         digitalWrite(35, LOW);
         digitalWrite(36, LOW);
         digitalWrite(37, LOW);
} else if (sbusChannel1 >= 10 && sbusChannel1 < 50) {
  // sbusChannel is within the range from 10 to 50
  digitalWrite(34, LOW);
         digitalWrite(35, LOW);
         digitalWrite(36, LOW);
         digitalWrite(37, HIGH);
} else if (sbusChannel1 >= 50 && sbusChannel1 <= 255) {
  // sbusChannel is within the range from 50 to 100
  digitalWrite(34, LOW);
         digitalWrite(35, LOW);
         digitalWrite(36, HIGH);
         digitalWrite(37, HIGH);
} else {
  // sbusChannel is outside of all of the specified ranges
}
///////////////////////////////////////RIGHT Y
  Serial.print(“RY”);Serial.print(sbusChannel2); Serial.print(“\t”);
   if (sbusChannel2 >= -255 && sbusChannel2 < -50) {
  // sbusChannel is within the range from -100 to -50
         analogWrite(44,fabs(sbusChannel2) );//speed
         digitalWrite(48, LOW);//direction
         digitalWrite(46, LOW);//BRAKE
         digitalWrite(47, LOW);//STOP
Serial.print(“RF”);
} else if (sbusChannel2 >= -50 && sbusChannel2 < -10) {
  // sbusChannel is within the range from -50 to -10
          analogWrite(44,fabs(sbusChannel2) );//speed
         digitalWrite(48, LOW);//direction
         digitalWrite(46, HIGH);//BRAKE
         digitalWrite(47, LOW);//STOP
Serial.print(“RS”);
} else if (sbusChannel2 >= -10 && sbusChannel2 < 10) {
  // sbusChannel is within the range from -10 to 10
         analogWrite(44,fabs(sbusChannel2) );//speed
         digitalWrite(48, LOW);//direction
         digitalWrite(46, HIGH);//BRAKE
         digitalWrite(47, HIGH);//STOP
Serial.print(“ST”);
} else if (sbusChannel2 >= 10 && sbusChannel2 < 50) {
  // sbusChannel is within the range from 10 to 50
         analogWrite(44,fabs(sbusChannel2) );//speed
         digitalWrite(48, HIGH);//direction
         digitalWrite(46, LOW);//BRAKE
         digitalWrite(47, LOW);//STOP
        Serial.print(“FS”);
} else if (sbusChannel2 >= 50 && sbusChannel2 <= 255) {
  // sbusChannel is within the range from 50 to 100
         analogWrite(44,fabs(sbusChannel2) );//speed
         digitalWrite(48, HIGH);//direction
         digitalWrite(46, LOW);//BRAKE
         digitalWrite(47, LOW);//STOP
         Serial.print(“FF”);
} else {
  // sbusChannel is outside of all of the specified ranges
}
Serial.print(“\t”);
   //Serial.print(“RB”);Serial.print(sbusChannel6); Serial.print(“\t”);
switch (sbusChannel6) {
  case 200:
   Serial.print(“RB”);Serial.print(“O”);Serial.print(“\t”);
         digitalWrite(26, LOW);
         digitalWrite(30, LOW);
      break;
  case 1800:
  Serial.print(“RB”);  Serial.print(“P”);Serial.print(“\t”);
         digitalWrite(26, HIGH);
           digitalWrite(30, HIGH);
   break;
  default:
   Serial.print(“RB”);Serial.print(“Invalid value”);Serial.print(“\t”);
   digitalWrite(26, LOW);
   digitalWrite(30, LOW);
   break;
 }
;
 switch (sbusChannel5) {
  case 200:
   Serial.print(“RS”);Serial.print(“A”);Serial.print(“\t”);
         digitalWrite(27, HIGH);
         digitalWrite(28, LOW);
         digitalWrite(29, LOW);
         break;
  case 1000:
   Serial.print(“RS”);Serial.print(“B”);Serial.print(“\t”);
         digitalWrite(27, LOW);
         digitalWrite(28,HIGH);
         digitalWrite(29, LOW);
         break;
  case 1800:
  Serial.print(“RS”);  Serial.print(“C”);Serial.print(“\t”);
         digitalWrite(27, LOW);
         digitalWrite(28, LOW);
         digitalWrite(29, HIGH);
   break;
  default:
   Serial.print(“RS”);Serial.print(“Invalid value”);Serial.print(“\t”);
            digitalWrite(27, LOW);
         digitalWrite(28, LOW);
         digitalWrite(29, LOW);
 }
;
Serial.print(“\t”);
    Serial.println(rxMode);
 }
 delay(10);
}