Skip to the content
4 layers70 × 71 mmBotctrl, the printed circuit board in 3D

1.5kg beetleweight combat robot

Size
70 × 71 mm
Copper layers
4
Thickness
1.6 mm
Parts
156
Nets
122
Pads
546
Tracks, vias
678, 219
Pours
17
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
14 Mar 2024
Updated
29 Jul 2025

Overview

Botctrl is an open-source printed circuit board by JoeEarlam, from the JoeEarlam/Fatal-Deviation repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 70 × 71 mm with 156 parts on 122 nets, routed with 678 tracks and 219 vias.

It is built around the ADS1115IDGS, PCA9685PW and LDL212PU50R, with the MPU-6050 among its other parts. Its parts include 78 capacitors, 33 resistors, 19 diodes, 14 connectors and 9 ICs.

Main components

4

README

README.md

Fatal Deviation

Fatal Deviation is my 1.5KG beetleweight lifter, with independent 4WD and electronic stability control. The name comes from Ireland's first full-length martial arts movie of the same name, which can be found in its entirety on youtube for the morbidly curious.

This repository is not intended to be instructional - this isn't a full open-source project, but a reference for myself and others who want to see how the sausage is made. If you do build your own (or something similar), please let me know, I'd love to see more weird tiny beetleweights on the scene!

For more information on the design and build process, please check out my build thread: https://forum.bristolbotbuilders.com/t/fatal-deviation-my-over-engineered-beetleweight/232

Photo

TPU front end, the night before Bristol Bot Builders' Summer Showdown, July 2025

Photo 1

Steel front end, for Robodojo, May 2025

Design Criteria and Overview

I impulse bought a TIG welder in Lidl and needed more excuses to use it. Somebody on the internet said that it wasn't possible to build a somewhat competitive beetleweight robot almost entirely from steel. Together, that was all the motivation I needed. Watching fast lifter/grappler bots like P1, Whiplash, Claw Viper/Red Storm, and having previous experience racing RC cars, I knew how I wanted the bot to drive - fast, agile, predictable. This gave me some design requirements:

  • Extremely compact chassis to allow as much armour coverage as possible.
  • Four independently controlled drive motors, for redundancy and torque vectoring.
  • Small, compact and powerful lifter mechanism.
  • As much RGB as possible while still having enough power left over for the bot to drive.

Mechanical Design

CAD stackup

The mechanical design uses a welded 304 stainless steel chassis tub - 2mm sides and bottom, with 4mm front and rear sections. Stainless was chosen for aesthetic reasons, and because 2mm hardox is very difficult to source.

The wedge is soft-mounted via threaded aluminium inserts pressed into TPU brackets. The tub protects a TPU clamshell that sandwiches the internal components together, via long screws and threaded inserts to pull it together. Self-tapping screws are used to hold the clamshell into the chassis tub which suspends all the internal components and hopefully provides some shock absorption.

The TPU clamshell design means all the internal components of the robot can be removed as a unit for repair on the bench. Accessing any component only takes a couple of minutes, although unfortunately due to the compact design many connections have to be soldered rather than connectorised/

Electronic Design

PCB

PCB

The only way to cram electronics into the remaining space inside the bot is to integrate every function (aside from the receiver) into a single PCB. In approximately 50x70mm total board area, the PCB provides:

  • Seeed Xiao RP2040 microcontroller
  • 4x 6A drive channels (TI DRV8256P drivers), with current sensing.
  • MPU6050 gyro + accelerometer
  • IBUS receiver compatible
  • Servo power and signal pads
  • 7x WS2812 RGB LEDs

The four layer PCB was designed with heavy usage of copper pours, optimised to keep resistance (both electrical and thermal) and inductance as low as possible when using cheap 1oz copper fabrication processes (2oz often costs 3-4 as much as 1oz!). The design also keeps the hot and EMI-prone motor drivers and servo power pads far away from the sensitive IMU and MCU. While only supposed to run 2-3 minutes at a time for events, it's been stress tested with 5-10 minutes of continuous running and barely rises over 45c, even with no airflow and four hot motors spinning inside the bot.

Software Design

The software is written in Arduino IDE, utilising both cores of the RP2040 microcontroller. The firmware uses the wonderful TaskScheduler library by arkhipenko to handle timing and looping, with modularity provided by custom classes containing motor driver logic, IMU data processing, and drive maths. The task-based asynchronous code allows predictable timing for data acquisition and filter functions, while also optimising for minimum latency by triggering drive maths routines the instant that a new radio packet is received.

IMU gyroscope data is used, in combination with the steering channel data received from the RC transmitter, as the input and target variables of a PID loop, which provides the electronic stability control - the bot will steer to self correct back to its intended course if disrupted; either by a bump in the floor or contact with another robot, and allows the bot to hold dead straight line acceleration or smooth drifts on low-friction surfaces where it would otherwise spin out uncontrollably. To improve the turning radius (which is otherwise somewhat poor due to the long aspect ratio of the bot) the front inside wheel is braked on sharp turns, while the rear inside wheel coasts, shifting the centre of rotation for the bot forwards.

Parts

156
QtyValueFootprintReferences
22100nCapacitor_SMD:C_0603_1608MetricC2, C6, C12, C14, C15, C22, C23, C34, C35, C46, C47, C48, C54, C57, C58, C59 +6
2010uCapacitor_SMD:C_1206_3216MetricC3, C4, C16, C17, C18, C20, C21, C24, C28, C30, C32, C33, C36, C40, C42, C44 +4
202n2Capacitor_SMD:C_0603_1608MetricC1, C11, C25, C29, C37, C41, C49, C53, C61, C65, C68, C69, C70, C71, C72, C73 +4
132K2Resistor_SMD:R_0603_1608MetricR3, R5, R6, R9, R10, R11, R12, R13, R15, R16, R17, R20, R21
12470nCapacitor_SMD:C_0603_1608MetricC10, C13, C19, C27, C31, C39, C43, C51, C52, C55, C56, C63
10Conn_01x01_PinConnector_Wire:SolderWire-0.25sqmm_1x01_D0.65mm_OD1.7mmJ4, J5, J6, J7, J8, J9, J10, J11, J13, J14
8JBDiode_SMD:D_0603_1608MetricD3, D4, D8, D9, D10, D11, D12, D13
710KResistor_SMD:R_0603_1608MetricR4, R14, R22, R23, R24, R34, R44
7WS2812B-0807custom:WS2812-0807D7, D14, D15, D16, D17, D18, D19
40R01Resistor_SMD:R_1210_3225MetricR19, R29, R39, R49
4220nCapacitor_SMD:C_0603_1608MetricC26, C38, C50, C62
4DRV8256PRGERPackage_DFN_QFN:VQFN-24-1EP_4x4mm_P0.5mm_EP2.45x2.45mm_ThermalViasU7, U8, U9, U10
4NFResistor_SMD:R_0603_1608MetricR18, R28, R38, R48
3560RResistor_SMD:R_0603_1608MetricR1, R2, R8
2Conn_01x03_PinConnector_Wire:SolderWire-0.127sqmm_1x03_P3.7mm_D0.48mm_OD1mmJ3, J12
2Conn_02x01Connector_Wire:SolderWire-0.75sqmm_1x02_P4.8mm_D1.25mm_OD2.3mmJ1, J2
2REDLED_SMD:LED_Kingbright_APFA3010_3x1.5mm_HorizontalD1, D2
10RResistor_SMD:R_0603_1608MetricR25
1330RResistor_SMD:R_0603_1608MetricR7
1ADS1115IDGSPackage_SO:TSSOP-10_3x3mm_P0.5mmU1
1Fiducialcustom:el-bottoFID1
1GREENDiode_SMD:D_0603_1608MetricD6
1IDKInductor_SMD:L_0603_1608MetricFB1
1LDL212PU50RPackage_DFN_QFN:DFN-6-1EP_3x3mm_P0.95mm_EP1.7x2.6mmU13
1MOUDLE-SEEEDUINO-XIAOXIAO_PCB:MOUDLE14P-SMD-2.54-21X17.8MMU4
1MPU-6050Sensor_Motion:InvenSense_QFN-24_4x4mm_P0.5mmU3
1MountingHoleMountingHole:MountingHole_4.3mm_M4_DIN965H1
1PCA9685PWPackage_SO:TSSOP-28_4.4x9.7mm_P0.65mmU6
1REDDiode_SMD:D_0603_1608MetricD5

Similar boards

  • 6 layers122 × 98 mmVNA, the printed circuit board in 3D

    VNA

    jankae/LibreVNA

    100kHz to 6GHz 2 port USB based VNA

    592 parts1.7kGPL-3.0
  • 4 layersRasterGenerator, the printed circuit board in 3D

    RasterGenerator

    LukasReil/SEM_Dev

    This project describes a fully open-source electron microscope.

    15 parts
  • 4 layers64 × 40 mmWiringHarness, the printed circuit board in 3D

    WiringHarness

    TadAtThayer/MazeController

    Arduino Shield for ES28 project

    37 parts
  • 4 layers81.3 × 52.8 mmGlue Board, the printed circuit board in 3D

    Glue Board

    arkorobotics/robocar-pinky

    DIY Robocar Project - Codename Pinky

    87 parts12
  • 2 layers67.3 × 96.9 mmWaterQualityControl, the printed circuit board in 3D

    WaterQualityControl

    Hasatio/WaterQualityControl

    The circuit taken as an example while designing the board Adafruit PCA9685

    142 parts
  • 4 layers73 × 56 mmSensors, the printed circuit board in 3D

    Sensors

    heeplr/pilotpi

    RaspberryPi HAT for ardupilot / PX4

    117 partsMIT
  • 4 layers100.1 × 100 mmRoboticLawnMower, the printed circuit board in 3D

    RoboticLawnMower

    JakobThiessen/RoboticLawnMower

    Rasenmähroboter in Eigenbau

    206 parts
  • 2 layers145 × 108 mmRC15, the printed circuit board in 3D

    RC15

    AgOpenGPS-Official/Rate_Control

    93 parts20GPL-3.0

Questions

How big is the Botctrl PCB?

It measures 70 × 71 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Botctrl use?

156 parts, built around the ADS1115IDGS, PCA9685PW, LDL212PU50R and MPU-6050. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Botctrl KiCad files?

From the JoeEarlam/Fatal-Deviation repository on GitHub, at the commit this page was made from: the board is Electronics/botctrl-rev2/botctrl.kicad_pcb and its schematic Electronics/botctrl-rev2/botctrl.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Botctrl design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).