Introduction: Husarz - a Battlebot Made From Recycled Materials

About: Student, maker

Hello everyone! I wanted to share an exciting project I've been working on - my very own battle bot! I've always been fascinated by robotics and engineering, and I decided to put my skills to the test by building a robot that can compete against others in battle. Husarz is a mid-sized Battlebot made almost entirely from recycled materials. It's tracked and thus very agile and easy to maneuver. I made a complete step-by-step instruction on how to design and build the Battlebot. Inspired by Polish hussars. The robot doesn't have any weapons that would threaten people, it's only dangerous against other robots in the arena. Drive it wisely, though! Hope you like it!

Supplies

Tools:

  • 3D printer
  • a drill with drills (2.5,4.5,5mm)
  • a screwdriver (preferably an electric one)
  • mini grinder (Dremel type)
  • spanners
  • CNC laser plotter (optional)

Materials:

NOTE: these are the parts I used, the goal is to make the robot out of recycled materials so you can replace some of my parts with your own! Non-recycled parts are in italics.

Main body:

  • around 1500cm2 of 8mm plexiglass + plexiglass glue
  • 2x hinges - any will do, make sure the screw holes are at least 15 mm from the edge of the robot (more info in the steps)
  • 20x20mm 90-degree aluminum profile
  • angle bar for mounting the front plow
  • brass sheet metal - you can use other metals
  • bent sheet metal for the plow - can be an old oven mold

Electronics:

  • 11,1V 3S 3000mAh LiPo batteries in total, you can connect a few batteries in parallel to make the capacity higher.
  • 2x IBT_2 motor controllers - recycled from previous projects
  • any small microcontroller, I used ESP8266 mini (NodeMCU 1.0) - recycled from previous projects
  • a receiver and transmitter - at least 2-channel (try to buy a used one)
  • 2x DC motor - I used 12V, 1000RPM, torque: 0.48Nm DC motors, but I would recommend ones with higher torque, to make it easier to push opponents.

Tracks:

  • 1kg spool of recycled filament
  • 40x M3 16mm screws (only a part of them was from recycling)
  • 3mm diameter plastic, metal, or carbon fiber rods (338cm total length, cut to 65mm length, 52 pieces)
  • 0,5m M5 screw + 8x M5 nuts
  • 1-2mm thick rubber - 500cm2
  • 4x bearings with mounts (more on axle step)
  • 6x bearings (8x16x5mm)
  • 2x 6x8mm motor couplers
  • ø6mm steel hex rod (6mm is the "s" dimension, look at the picture up)

Step 1: Idea 💡

The idea was to push the other robots using brute motor power and track traction. That's why the robot mainly consists of tracks. The front plow is used to push other robots without damaging Husarz and maybe to even flip them. The design allows Husarz to ride even if flipped upside down! Here is a sketch I did before designing everything in CAD.

Step 2: CAD Design 💻

I used Fusion360 for CAD Design. Here is my design process:

Main body:

  1. I designed the body so that it would fit all the electronics but still be within the 35x35cm size limit.
  2. Then I added some tabs to each wall in order for them to easily snap in place.
  3. After that, I used Export to origin to export the .svg files. Here's a great tutorial made by other Instructables user.

Motor and bearing mounts:

  1. When designing mounts I highly recommend taking a photo of the motor to know the exact screw placement. Then you can Insert Canvas and after measuring it and the object of which the mount we are making we can scale it. Then our canvas has real-world dimensions.
  2. Then use Sketch to create the mount based on the canvas.
  3. Add screw holes which will be later useful when mounting them to the main body.
  4. Add some additional material to support the motor.
  5. Do the same with bearing mounts.

Tracks:

I used the tracks designed by Evilman which are on Thingiverse. The files I used are finaltanktracksmoother.stl and tankdrivewheelmk1tmaxx14C8. I modified the tank drive wheel model.

Track tensioning part:

  1. First, I found what the distance between the bearings had to be.
  2. Then I added a lot of material in a Slot shape to make it rigid and as non-flexible as possible.
  3. After that, I added an arm to the part that will connect to the main body as well as screw, and mounting holes.

Step 3: 3D Printing 🖨️

List of parts to be printed:

  • 1x motor_mount_right
  • 1x motor_mount_left
  • 1x back bearing mount middle
  • 2x track_tensioning_v2
  • 50x finaltanktracksmoother
  • 4x tank drive wheel hex

Print settings:

Supports: YES

Infill: 100% except for track_tensioning and (35%)

Resolution: 0.2mm

Number of perimeters: 3-4

Step 4: Screw Inner Mounts 🔩

It's easier to screw the mounts which will sit inside the robot before glueing. That way there is easier access to the bottom plate. I decided not to include holes in the .svg files because the laser plotters aren't very precise and it's best to drill the holes yourself to best fit your screws.

  1. Screw the motors to the motor mounts.
  2. Secure them with zip-ties.
  3. Push the bearings into the middle bearing mount
  4. Mark the drilling holes according to the design (you can find mounting spots on the Fusion360 design https://a360.co/45lBEqp)
  5. Screw the mounts into the plexiglass. The screws should fit there very tightly and not come out, but if they do use some longer ones and lock them with nuts.

Step 5: Cutting and Glueing Plexiglass 💉

The plexiglass I found in a landfill was in very good condition. I'm not an expert in CNC or Laser plotting, but I would use the generic settings for 8mm plexiglass. A friendly company helped me cut plexiglass with a laser plotter. You can find the .stl files below.

Before applying any glue, make sure to remove the protective film from the plexiglass in the spots you will glue. To glue the plexiglass use a dedicated glue like Acrifix. Apply it in the puzzle-ish (no idea how to call it 😂) pegs. All of the parts should snap into place. Use some tape to secure the glued parts and leave them for 24h (depending on the glue you use). DO NOT glue the top cover (Sciana_6). You can use some UV lamps to make the glue cure faster

Step 6: Add Some Reinforcement 🏗️

If you have any leftover aluminum profiles or angle bars, drill some holes into them. Then drill matching holes in plexiglass, and screw them together. That will ensure the walls don't fall apart.

Step 7: Axles 🛴

Axles were the problem of V1 of my robot. I used aluminum rods which are brittle and easy to bend. That led to the failure of my robot. That is why for V2 I decided to go with hex-shaped steel rods. Those rods won't spin in place and won't bend or break. Unfortunately, I don't have any photos of the new axle system, but I have a CAD design

Connecting the shafts to the motors:

It is very difficult to find hex shaft to key shaft (motor shaft) couplers. Thus you'll have to 3D print an adapter. Make it as strong as possible (100% infill). Then you can screw the coupler with provided screws. I used a 6mm to 8mm coupler.

Front axle bearings:

It's good to use some bearings to protect the motor from any tension coming from the axle. You also don't want the axle to move so it's best to use some bearings with screws that keep the axle from moving. Once again, it's very difficult to find hex-shaped bearings so you have to print the hex adapter. You might have to modify the bearing mounts, depending on what bearings you use.

Back axle bearings:

Once again it's best to use some bearings with screws that secure the axle. If you have a bearing with such footprint as is on the image above or similar, you can just drill some holes in the side of the robot, make sure the axle is centered. For the middle back bearings you'll have to use the 3D printed bearing mount. Use 8x16x5 bearings (the file can be modified for different bearings). Push the bearings into the bearing mount if you haven't already.. Measure and cut the axles to the correct length and put them through bearings, use the 3D printed adapters if you are using a hex axle.

Tank drive wheel:

Push the 3D-printed part on the axle and fit the tracks at the same time to secure the wheel at the correct distance from the main body. After doing that, lock everything with some super glue.

Track tensioning:

In order for the tracks to work properly and the axles not to bend, we have to secure the outer ends of them with the track tensioning 3D printed part. First, insert the bearings into the 3D printed part, then insert 3D printed adapters to the bearings, and finally put the rod through the adapter and secure it with some glue. To the same for all 4 rods.

To connect the track tensioner to the main body, you'll have to use the long M5 screw. Use an electric screwdriver to hold the screw and screw it into the 3D-printed part. Then drill some 4.5mm holes through the main body in the correct places and continue to screw it further. Secure with nuts.


Step 8: Increase Traction! 🛞

After 3D printing the tracks, remove the supports and insert some 3mm 65mm long pins. I used some 3mm ABS 3D pen filaments. You can glue the ends with super glue to make sure they won't detach during battle

Tracks made of PLA would slip on nearly any surface. That's why it's best to glue some rubber bits onto the tracks.

I sourced some 1mm thick rubber scraps and leftovers from a local factory. Cut the pieces into the correct shape with a retractable blade. Use some super glue - it works well for connecting plastic to rubber.

Step 9: Front Plow 🔨

I had this old metal piece laying around. It was the perfect size and shape, so after a few cuts with an angle grinder it came to be a good front plow. Then I drilled some holes in it and attached it to some angle bars. After that I screwed the angle bars into the front panel of the robot. WEAR PROTECTIVE GEAR WHEN USING AN ANGLE GRINDER. The plow allows your robot to turn upside down other robots, while keeping itself safe from any hits.

Step 10: Give It Some Armor 🛡️

I found some perfect-sized brass sheet metal in a dumpster which I thought was very tough and looked amazing. I added a logo of a winged Hussar and the company which helped me cut plexiglass.

To attach sheet metal to the robot:

  1. Drill some holes both in the robot's top cover and metal
  2. Put some screws through
  3. Secure with nuts
  4. Make sure the screws aren't too long and won't poke the battery inside.

To attach the top cover:

It's best to have the top cover on hinges to have easy access to electronics.

  1. Drill holes fitting your hinges through plexiglass and sheet metal.
  2. Put screws through and secure with nuts.
  3. To make sure the cover won't open during a fight bend some metal to a shape as shown on the photo.
  4. Drill a hole into the front plow and screw the bent piece of metal
  5. Now you can close and open the cover, but it will not open during a fight

If you want to add logos:

  1. Download a logo from the internet
  2. Convert the file to .svg
  3. Insert SVG in F360
  4. Create a rectangle around the logo and use Extrude to create a stencil.
  5. 3D print it
  6. Secure it with some tape on the desired place on your robot and spray some paint on it.
  7. Remove the stencil.
  8. Wait a few minutes for it to dry

Step 11: Electronics ⚡

Here is a list of electrical components you'll need to build the robot:

  • 11.1V 3S LiPo 3000mAh batteries in total, you can connect a few batteries in parallel to make the capacity higher.
  • 2x IBT_2 motor controllers
  • any small microcontroller, I used ESP8266 mini (NodeMCU 1.0)
  • a receiver and transmitter - at least 2-channel
  • 2x DC motor - I used 12V, 1000RPM, torque: 0.48Nm DC motors, but I would recommend ones with higher torque, to make it easier to push opponents.

ESP -> IBT_2(no.1)

GND -> GND

5V -> VCC

no connection -> L-IS

no connection -> L-IS

5V ->R-EN

5V ->L-EN

D8 - LPWM

D7 - RPWM

ESP -> IBT_2(no.2)

GND -> GND

5V -> VCC

no connection -> L-IS

no connection -> L-IS

5V ->R-EN

5V ->L-EN

D2 - LPWM

D1 - RPWM

ESP -> FS A6

D5 -> CH3 signal

D6 -> CH2 signal

GND -> any "-" pin

5V -> any "+" pin


The wiring diagram is above. For now, I connected everything with jumper wires, but you can solder everything on some prototype PCB. Solder the cables to the motors' connectors. Be careful with the polarisation of batteries!!!

Step 12: Programming 💻

IBT_2 works on a different signal than my receiver, which is why I had to use a microcontroller in between. I've chosen ESP8266 mini as this was something I had laying around, but you can use any microcontroller. I know there are some receivers you can program, so if you have such you won't need a microcontroller. Here's the code:

#define RCPin 14
#define RCPin2 12
int RCValue;
int RCValue2;
int coolValue;
int coolValue2;
int RPWM_Output = 15; //  PWM output pin 5; connect to IBT-2 pin 1 (RPWM)
int LPWM_Output = 13; //  PWM output pin 6; connect to IBT-2 pin 2 (LPWM)
int forwardPWM = 0;
int reversePWM=0;
int RPWM_Output2 = 5; //  PWM output pin 5; connect to IBT-2 pin 1 (RPWM)
int LPWM_Output2 = 4; //  PWM output pin 6; connect to IBT-2 pin 2 (LPWM)
int forwardPWM2 = 0;
int reversePWM2=0;
  void setup() {
  Serial.begin(9600);
  pinMode(RCPin, INPUT);
  pinMode(RCPin2, INPUT);
  pinMode(2,OUTPUT);
digitalWrite(2,LOW);
 pinMode(RPWM_Output, OUTPUT);
  pinMode(LPWM_Output, OUTPUT);
   pinMode(RPWM_Output2, OUTPUT);
  pinMode(LPWM_Output2, OUTPUT);
}


void loop() {
  RCValue = pulseIn(RCPin, HIGH);
  RCValue2 = pulseIn(RCPin2, HIGH);
  Serial.print(RCValue);
  coolValue=(RCValue*1.05247)  - 1052.47; //you might have to modify those two lines if your receiver produces different PWM than mine. If you don't know how just write to me.
  coolValue2=(RCValue2*1.11438) - 1181.24;
   Serial.print(",");
    Serial.println(RCValue2);


    delay(6);
    analogWrite(2,coolValue);
 if(coolValue > 512){
 reversePWM = (coolValue - 511)/2;
    analogWrite(LPWM_Output, 0);
    analogWrite(RPWM_Output,reversePWM);
}
else{
  forwardPWM = -(coolValue - 511)/2 ;
   analogWrite(LPWM_Output, forwardPWM);
    analogWrite(RPWM_Output, 0);
}
 if(coolValue2 > 512){
 reversePWM2 = (coolValue2 - 511)/2;
    analogWrite(LPWM_Output2, 0);
    analogWrite(RPWM_Output2,reversePWM2);
}
else{
  forwardPWM2 = -(coolValue2 - 511)/2 ;
   analogWrite(LPWM_Output2, forwardPWM2);
    analogWrite(RPWM_Output2, 0);

  }


Step 13: Finishing Touches 🌟

Put the tracks on the drive wheels, connect the batteries and a power bank and you're ready to fight!

How to steer the robot:

  1. the left joystick is for the left track
  2. the right joystick is for the right track
  3. to go forward move the joystick up, further than its center
  4. to go backward move the joystick down, lower than its center
  5. to turn and move the joysticks in opposite ways.


Step 14: Done!

Hope you enjoyed building your own battle bot. Please share some photos and comments on the process. You can now host a tournament amongst your friends or join one! Enjoy driving, but remember to be careful as it's very powerful.

Here are some of fights my teams robot took part in. We won the first battle, but unfortunately because we chose aluminum axles, they broke and the robot couldn't continue fighting (the robot described has a fixed axle system, so it won't encounter same problems as ours). It was an amazing experience, though!

Repair and Reuse Contest

Runner Up in the
Repair and Reuse Contest