BB8 - Mobile Controlled and 3D Printed StarWars Robot

by yolabs007 in Workshop > 3D Printing

535 Views, 1 Favorites, 0 Comments

BB8 - Mobile Controlled and 3D Printed StarWars Robot

BB8
StarWars - Design BB8 robot in TinkerCAD in 10 min

Like Most I am also a Big Fan of StarWars and always wanted to create one cool robo for me. Thanks to tinkercad, fusion 360, 3D printing and embedded technology - finally we have one while many more are coming soon.

Below video and pictures explains how this has been achieved.


Also you can use the TinkerCAD link to access the model which has been made public.

TinkerCad Link





Supplies

Screenshot 2021-11-15 at 9.52.14 PM.png
  1. TinkerCad
  2. Fusion360
  3. Access to 3D printer - in this case (Creality ender 3.0) but you can use anyone
  4. ESP32
  5. N20 Motor
  6. 18650 Battery - 3 Nos
  7. 18650 Battery Holder
  8. TP4056
  9. Castor Wheel
  10. N20 Motor Wheels
  11. Breadboard
  12. DC Jack
  13. Spherical Balls

TinkerCAD -Design the Lower Body

StarWars - Design BB8 robot in TinkerCAD in 10 min
SS10.png
SS1.png
SS2.png
SS3.png
SS4.png
SS5.png
SS6.png
SS8.png
SS9.png
SS10.png

First We used tinkercad to create a 3D model of BB8. Note This model is created mainly to understand the design and aesthetic aspects of BB8.


Design the lower body:

  1. Get A sphere of dimension of 40x40x40mm
  2. Duplicate the Sphere and make it a hole
  3. Bring a Cube 60x60x60 mm. you can vary the dimension as long as it is covering the sphere with a margin.
  4. Align the Cube and Hole sphere. Make sure you align it in centre by horizontal only.
  5. Group Both the Objects and then make them as a hole rather solid. Please cross check with the picture i have provided to double ensure.
  6. Create the BB8 rings(6 numbers) with details as shown in picture
  7. Attach the 6 rings to the white ball which was created @ point-1. Use workplane (shortkey -W) for ease.
  8. Now use the cutter (ref picture and video) to trim the excess ring material
  9. Now align and group the objects
  10. Refer the last picture if everything is as per instructions you should be having a beautiful lower Body of BB8 with all minute details


Note: As this body rolls on surface it can not have any projection , including sphere joints




TinkerCAD - Design the Head

SS25.PNG
SS11.png
SS12.png
SS13.PNG
SS14.PNG
SS15.PNG
SS16.PNG
SS17.PNG
SS19.PNG
SS20.PNG
SS21.PNG
SS22.PNG
SS23.PNG
SS24.PNG
SS25.PNG
SS26.PNG

Design the Head:

  1. Bring a Half -Sphere and make the dimesion 25x25x12.5 mm
  2. Take a Cylinder and make the dimension - 25x25x35 with bevel 1.5 (refer-pic)
  3. Now cut the top 30 mm of cylinder and keep the bottom portion
  4. Create the cutter (same as done in step-1) for half sphere
  5. BB8 head is having very specific design for that bring a ring
  6. create 16 equal partition of the ring using duplicate tool. To cut the ring you can use a thin plate made out of the cube
  7. Place the ring on the head as well as other details
  8. Use trimmer/cutter (point-4) to get the desired shape of head
  9. Place the eyes using a sphere (5mm) for big eye and cylinder(3mm) for small eye.
  10. Place the antenna on the head. Refer any BB8 pic to guess the right location
  11. Please the head on the body created in Step-1



Main Body Assembly

Screenshot 2021-11-16 at 12.31.48 AM.png
Screenshot 2021-11-15 at 11.48.16 PM.png
Screenshot 2021-11-15 at 11.54.14 PM.png
Screenshot 2021-11-15 at 11.54.30 PM.png
Screenshot 2021-11-15 at 11.58.38 PM.png
Screenshot 2021-11-16 at 12.00.37 AM.png
Screenshot 2021-11-16 at 12.33.28 AM.png

WE have created a quick prototype using most of regular Materials. But all the used items can be 3D printed. But 3D print a half sphere which take 8 hours - its easy to buy a ball in 2 $ and cut it into two half

  1. Get Plastic balls (hard Surface) from any nearby shop or order through amazon
  2. Cut the ball in two half - Seam on the ball may be a great help
  3. Prepare the N20 Motors- solder the wires and check the rotating direction
  4. 3D print the base - use the stl file attached
  5. Attach any heavy weight to the bottom of the base to avoid topple
  6. Cut a 12 mm dia PVC pipe. Keep the length based on your ball dia, ensure the PVC pipe top end is just 1 cm below the sphere surface. A big gap will result in fall of the head due to poor magnetic force

You can use any material and plastic balls to get the outer body or you can 3D print the same

Assemble Motors and Electronics

Screenshot 2021-11-16 at 12.03.17 AM.png
Screenshot 2021-11-16 at 12.05.36 AM.png
Screenshot 2021-11-16 at 12.05.47 AM.png
  1. Fit the Geared motor on 3D printed base by using standard N20 mounting brackets.
  2. Take 2 castor wheels and fix them using erasers. Ensure the castor wheel is touching the ball surface.
  3. Mount Motor Driver, ESP32 and other electronics as shown in picture. Do the Connections as circuit diagram.
  4. Stick the magnets (i have used neodym magnets to ensure better force. But you can try any magnet which is strong enough to hold the head.

Note: Run the base assembly once outside before closing the ball as its a tedious process.


Head Assembly

Screenshot 2021-11-16 at 12.05.56 AM.png
Screenshot 2021-11-16 at 12.06.11 AM.png
Screenshot 2021-11-16 at 12.06.20 AM.png
Screenshot 2021-11-16 at 12.06.27 AM.png

Head Assembly is not having any electronics. It just house magnets and styling parts. Ensure you do not increase the weight of head

  1. Take the ball which is 2/3 or half the dia of main ball body.
  2. cut it into two half and use one for head
  3. Fix a pencil on a bottle cap as shown in picture and video or get the right gap b/w magnet and surface
  4. Fix the magnet on head and you are good to go

I have used the normal white paint but either you can use the below mentioned stickers on can use dual extrusion printer to get the orange and white style. My Ultimaker #d printer is under breakdown so managing with white paint ans stickers

Code for ESP-32

Here is the code i have used to make control the robot. Setup of ESP32 and code explanation is out of scope for this project. I have used standard Mobile app - created over MIT App inventor for this purpose. also you can use this standard app for quick turn around of your project

App Link


 // ESP32 two wheel car control

//ESP32 BB8 driving 

//yolabs BB8 

#include "BluetoothSerial.h"




BluetoothSerial SerialBT;




char receivedChar;

const int MR1 = 26; //ESP32 pins (MR=Right Motor) (ML=Left Motor) (1=Forward) (2=Backward)

const int MR2 = 27; 

const int ML1 = 14;

const int ML2 = 12;




void setup() {

  Serial.begin(115200);

  SerialBT.begin("ESP32_YoLabs_BB-8");

  pinMode(MR1, OUTPUT); 

  pinMode(MR2, OUTPUT);

  pinMode(ML1, OUTPUT);

  pinMode(ML2, OUTPUT);

}




void Forward(){

      //RIGHT MOTOR

      digitalWrite(MR1,HIGH);//MOVE FRONT

      digitalWrite(MR2,LOW); //MOVE BACK

      //LEFT MOTOR

      digitalWrite(ML1,LOW);//MOVE BACK

      digitalWrite(ML2,HIGH);//MOVE FRONT

}

void Backward(){

      digitalWrite(MR1,LOW);

      digitalWrite(MR2,HIGH);

      digitalWrite(ML1,HIGH);

      digitalWrite(ML2,LOW);

}

void Left(){

      digitalWrite(MR1,HIGH);

      digitalWrite(MR2,LOW);

      digitalWrite(ML1,HIGH);

      digitalWrite(ML2,LOW);

}

void Right(){

      digitalWrite(MR1,LOW);

      digitalWrite(MR2,HIGH);

      digitalWrite(ML1,LOW);

      digitalWrite(ML2,HIGH);

}

void Stop(){

      digitalWrite(MR1,LOW); 

      digitalWrite(MR2,LOW);

      digitalWrite(ML1,LOW); 

      digitalWrite(ML2,LOW); 

}

void loop() {

    receivedChar =(char)SerialBT.read();




  if (Serial.available()) {

    SerialBT.write(Serial.read());

  

  }

  if (SerialBT.available()) {

     

    Serial.print ("Received:");//print on serial monitor

    Serial.println(receivedChar);//print on serial monitor    

    

    if(receivedChar == 'F')

    {

      Forward();

       

    }

    if(receivedChar == 'B')

    {

 

      Backward(); 

    }         

     if(receivedChar == 'L')

    {




      Left();

    }        

    if(receivedChar == 'R')

    {




      Right(); 

    }

    if(receivedChar == 'S')

    {

      Stop();

    }

  }

  delay(20);

}

 



Stl Files and Other Details