Husarz Battlebot

Made from Recycled Materials

Maciek Gala

Issue 72, July 2023

Learn how a young maker made a battlebot on a shoestring budget.

Battlebots come in all shapes and sizes. Some are low and slow to bulldoze their competition across the arena, and others are peculiar shapes designed to flip, spin and do other stunts to avoid losing. Weapons are also included on advanced battlebots to disable their opponent.

This month, we came across a young maker, Maciek, who designed his battlebot on a shoestring budget. To keep costs low, Maciek has used recycled parts and leveraged local businesses to bring his battlebot together. Read on to learn all about Maciek’s build.

Please introduce yourself to our readers, Maciek, and what first got you interested in electronics.

I'm 15, and currently enrolled in the first grade of the 5th High School in Bielsko-Biała, Poland. The class profile I'm attending is Mathematics, Physics, and IT.

When I was younger I received one of those electronics kits for kids. I really enjoyed playing with them. Then I decided to switch to LEGO Mindstorms, and then finally to Arduino and building circuits.

Your battlebot looks great, and we love that you have made it from recycled parts. What inspired you to make it?

One of the schools in Katowice hosted a Battlebots tournament (https://mojekatowice.pl/i,turniej-walk-robotow-dla-dobra-planety,100,902817.html). I've always enjoyed watching Battlebots on TV and it was my dream to take part in one.

Is there a reason why your Battlebot is named Husarz?

It's named Husarz after the legendary Polish medieval cavalry - Husaria, thus one knight is called Husarz.

Ah ha! Polish hussars. That makes sense. Tell us how your Husarz works and what parts you used. Obviously, you have made it from recycled parts, too. Where did you source those older parts?

Yes, the goal was to make the robot mostly from recycled materials. I sourced the parts from junkyards and companies that had any leftover materials. Many parts come from my and my friends' garages as well as some older projects. Not every part could be from the recycling, for example, I found it difficult to find batteries, so I unfortunately had to buy them.

Main body:

  • Approx. 1500cm2 of 8mm plexiglass + plexiglass glue
  • 2 x hinges. (Any will do, make sure the screw holes are at least 15 mm from the edge of the robot)
  • 20x20mm 90-degree aluminium profile angle bar for mounting the front plough
  • Brass sheet metal (you can use other metals)
  • Bent sheet metal for the plough (eg. old oven mould)


  • 11.1V 3S LiPo battery, approx 3000mAh in total (You can connect a few batteries in parallel to make the capacity higher.)
  • 2 x 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)
  • 2 x DC motors (I used 12V, 1000RPM, torque: 0.48Nm DC motors, but I would recommend ones with higher torque, to make it easier to push opponents).


  • 1kg spool of recycled filament
  • 40 x M3 16mm screws
  • 3mm diameter plastic, metal, or carbon fibre rods (338cm total length, cut to 65mm length, 52 pieces)
  • 0.5m M5 screws + 8x M5 nuts
  • 1-2mm thick rubber - 500cm2
  • 4 x bearings with mounts (more on axle step)
  • 6 x bearings (8x16x5mm)
  • 2 x 6x8mm motor couplers
  • ø6mm steel hex rod

How do you measure the diameter of the hex rod?

The ø6mm I refer to is the ‘s’ measurement shown in this diagram.

What tools did you use in your build?

  • 3D printer
  • Drill with drills (2.5, 4.5, 5mm)
  • Screwdriver (preferably an electric one)
  • Mini grinder (Dremel type, for example)
  • Spanners
  • CNC laser plotter (optional)

You chose not to add weapons like some battlebots have?

It was my first battlebot so I decided to go with a simple design. I've also seen many professional battlebots just having a front plough and no additional weapons. In my opinion, what really matters when building the battlebot is whether you can push opponents. I wanted to achieve that by using tracks and powerful motors.

Tell us more about the brains of the operation. What made you choose an ESP8266?

I used an ESP8266 Mini because I knew that board from other projects and I knew it would be reliable. And the reason why I chose a microcontroller in between the receiver and motor controllers is that they were incompatible. My transmitter/receiver isn't programmable, so I had to modify the signal from the receiver to work for the controllers.

We assume a 2-channel receiver/transmitter is recommended so you don't interfere with another battlebot at the same time?

Not really. A 2-channel receiver/transmitter is the minimum to operate the battlebot. One channel is for the left track and one channel is for the right track.

Of course. Is there anything special about the motors you chose? Is RPM and torque an important consideration?

I wanted the motors to be powerful. I calculated the RPM needed to make the robot go at the speed I wanted. Then I just searched for ones with the highest torque possible and an operating voltage of 12V as that was the approximate voltage of my batteries.

How did you go about designing it and go from idea to prototype?

I always start by sketching the idea on the paper. This gives you a starting point from which you can design everything in CAD. I used Fusion360 for that. Then, I 3D printed parts that were to be 3D printed and checked whether they fit.

Then, I checked if everything else fits. After I knew everything would work, I went on and assembled the whole battlebot.

We read that you were able to re-mix a track design from Evilman on Thingiverse instead of designing your own from scratch. Did you need to make any modifications?

Fortunately, I didn't have to re-mix the tracks, just the wheel that drives the tracks. In V1 I added holes to put tiny screws through the aluminum rod, but that didn't work well. For V2, I modified it to work with a hex-shaped axle.

In addition to using 3D printed parts, you have used plexiglass. Do you have any advice for our readers who want to work with plexiglass? What glue to use, for instance, and if UV lamps help.

Use glue dedicated for glueing plexiglass. I used Acrifix. It melts the plexi a bit and then hardens everything, leaving you with two pieces welded together. Unfortunately, my glue was old and went bad, which is why the front panel dropped out in battle. Whoops!

UV lamps can speed up the curing process, but leaving it under direct sunshine for just 20 minutes works really well too.

We read that V1 of your robot had issues with the aluminium rods. What other things did you learn from V1 to make your V2?

Yeah, the rods were aluminium so they bent very easily. Another mistake I did with them was I drilled a hole through each one and put a small screw through in the place where the drive wheels are to secure them. That made the axle break during battle.

For V2, I decided to use hexagonal-shaped stainless steel axles with a bit larger diameter. That will ensure the drive wheel doesn't spin in place and stainless steel is a lot harder so it will not break and bend as easily.

Another thing I learned was to use higher torque motors. The motors worked well against other robots but I feel like using even higher torque is needed to push other robots successfully.

I would also add some pimples to the rubber on the tracks as they slipped a bit on the floor of the ring which was made from an OSB sheet (oriented strand board).

In V1, the motor-to-axle couplers were 3D printed. They also broke during battle (I overestimated PLA strength. Grin!), so V2 uses steel couplers.

Bearing mounts were also 3D printed but the bearings easily came out of the mounts. So I found some bearings with mounts built in. They also have a key so you can secure the axle.

When testing, I found that if I put a lot of force on the axle, the motor would heat up and slow down. I wanted the bearings to take over some of the force. It also prevents the axles from bending.

How did you go about coding your battlebot? Did you remix someone else's code or start from scratch?

My code is based on Dr Rainer Hessmer's tutorial (See Reading & Resources for link), however, I changed a lot of things such as reading the receiver signal, another motor controller, calculating the receiver signal to work with controllers, two directions on one joystick, and some more.

Are you using a phone, computer or tablet to control the bot?

I was initially planning to do that but I'm used to using radio transmitters, so I went with traditional radio control. With a bit of coding, it's possible to make the robot Bluetooth-controlled.

Where can our readers get access to the project files and build details?

You can learn more about the robot on the Instructable I made: https://www.instructables.com/Husarz-a-Battlebot-Made-From-Recycled-Materials/

Perfect. Is there anything we haven't yet covered that our readers should know about your bot?

I want to thank my friends: Franek, Artur, Bazyli, and Wojtek for helping me with the project.

A shout-out to your friends. Collaboration is very important. Thank you for taking the time to speak with us, Maciek.

The Build

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.

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. 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.


I used the tracks designed by Evilman which are on Thingiverse (See Resources). 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. 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.

3D Printing

List of parts to be printed. I printed these at 0.2mm resolution, 3-4 number of perimeters, with supports, 100% infill (except for track_tensioning at 35%.)

  • 1 x motor_mount_right
  • 1 x motor_mount_left
  • 1 x back bearing mount middle
  • 2 x track_tensioning_v2
  • 50 x finaltanktracksmoother
  • 4 x tank drive wheel hex
1. Motor mount right and left.
2. Track tensioning.
3. Tank drive wheel.
4. Back bearing mount middle.
5. Tank track smoother.

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 cable-ties.
  3. Push the bearings into the middle bearing mount
  4. Mark the drilling holes according to the design (refer to the .f3d file with exact mounting spots)
  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.

Plexiglass cutting and glueing

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. Luckily for me, a friendly company helped me cut plexiglass with a laser plotter. You can find the .stl files in the Resources.

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 24 hours (depending on the glue you use). Do not glue the top cover (Sciana_6).

As mentioned earlier, you can use some UV lamps to make the glue cure faster.


If you have any leftover aluminium 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.


Axles were the problem of V1 of my robot. I used aluminium 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 centred. 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. 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.


After 3D printing the tracks, remove the supports and insert some 3mm x 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.


The plough allows your robot to turn upside down other robots while keeping itself safe from any hits.

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 plough.

Note: Please wear eye protection, gloves, etc. when using a grinder to avoid injuries.

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.


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 in the photo.
  4. Drill a hole into the front plough 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 Fusion360
  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

The Electronics

See earlier in this article for the list of electrical components you'll need to build the robot.

I connected everything with jumper wires, but you can solder everything on some prototype PCB.

Solder the cables to the motors' connectors, and be careful with the polarisation of batteries!

Wiring Pinout


IBT_2 (No.1)

IBT_2 (No.2)





any "-" pin




any "+" pin

no connection



no connection


















CH3 signal


CH2 signal


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() {
  pinMode(RCPin, INPUT);
  pinMode(RCPin2, INPUT);
 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);
  coolValue=(RCValue*1.05247)  - 1052.47; 
  // you might have to modify those twolines
   // if your receiver produces different PWM than
  // mine. If you don't know how just write to me
  coolValue2=(RCValue2*1.11438) - 1181.24;
 if(coolValue > 512){
 reversePWM = (coolValue - 511)/2;
    analogWrite(LPWM_Output, 0);
  forwardPWM = -(coolValue - 511)/2 ;
   analogWrite(LPWM_Output, forwardPWM);
    analogWrite(RPWM_Output, 0);
 if(coolValue2 > 512){
 reversePWM2 = (coolValue2 - 511)/2;
    analogWrite(LPWM_Output2, 0);
  forwardPWM2 = -(coolValue2 - 511)/2 ;
   analogWrite(LPWM_Output2, forwardPWM2);
    analogWrite(RPWM_Output2, 0);


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:

  • Left joystick is for the left track.
  • Right joystick is for the right track.
  • Forward: move the joystick up, further than its centre.
  • Backward: Move the joystick down, lower than its centre.
  • To turn, move the joysticks in opposite ways.