

Botctrl
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
4ADS1115IDGS
MSOP10Ultra-Small, Low-Power, 4 Channels 16-Bit Analog-to-Digital Converter with Internal ReferenceTexas InstrumentsUncategorisedPCA9685PW
TSSOP-28-40℃~+85℃ 100kHz~1MHz 16 2.3V~5.5V 25mA 5.5V Built-in PWM TSSOP-28 LED Drivers ROHSNXP SemiconductorsLED DriversLDL212PU50R
DFN-6-EP(3x3)-40℃~+125℃@(Tj) 1 1.2A 18V 250uA 350mV@(1.2A) 5V 60uVrms 87dB@(120Hz) Fixed Positive Under Voltage Lockout、Over Current Protection、Over Temperature Protection、Enable DFN-6-EP(3x3) Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSSTMicroelectronicsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsMPU-6050
QFN-24-EP(4x4)-40℃~+85℃ 16bit 1KB 2.375V~3.46V 5uA Accelerometer Gyroscope I2C X,Y,Z X,Y,Z ±16g ±2000dps QFN-24-EP(4x4) Accelerometers ROHSTDK InvenSenseAccelerometers
README
README.mdFatal 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

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

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

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


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| Qty | Value | Footprint | References |
|---|---|---|---|
| 22 | 100n | Capacitor_SMD:C_0603_1608Metric | C2, C6, C12, C14, C15, C22, C23, C34, C35, C46, C47, C48, C54, C57, C58, C59 +6 |
| 20 | 10u | Capacitor_SMD:C_1206_3216Metric | C3, C4, C16, C17, C18, C20, C21, C24, C28, C30, C32, C33, C36, C40, C42, C44 +4 |
| 20 | 2n2 | Capacitor_SMD:C_0603_1608Metric | C1, C11, C25, C29, C37, C41, C49, C53, C61, C65, C68, C69, C70, C71, C72, C73 +4 |
| 13 | 2K2 | Resistor_SMD:R_0603_1608Metric | R3, R5, R6, R9, R10, R11, R12, R13, R15, R16, R17, R20, R21 |
| 12 | 470n | Capacitor_SMD:C_0603_1608Metric | C10, C13, C19, C27, C31, C39, C43, C51, C52, C55, C56, C63 |
| 10 | Conn_01x01_Pin | Connector_Wire:SolderWire-0.25sqmm_1x01_D0.65mm_OD1.7mm | J4, J5, J6, J7, J8, J9, J10, J11, J13, J14 |
| 8 | JB | Diode_SMD:D_0603_1608Metric | D3, D4, D8, D9, D10, D11, D12, D13 |
| 7 | 10K | Resistor_SMD:R_0603_1608Metric | R4, R14, R22, R23, R24, R34, R44 |
| 7 | WS2812B-0807 | custom:WS2812-0807 | D7, D14, D15, D16, D17, D18, D19 |
| 4 | 0R01 | Resistor_SMD:R_1210_3225Metric | R19, R29, R39, R49 |
| 4 | 220n | Capacitor_SMD:C_0603_1608Metric | C26, C38, C50, C62 |
| 4 | DRV8256PRGER | Package_DFN_QFN:VQFN-24-1EP_4x4mm_P0.5mm_EP2.45x2.45mm_ThermalVias | U7, U8, U9, U10 |
| 4 | NF | Resistor_SMD:R_0603_1608Metric | R18, R28, R38, R48 |
| 3 | 560R | Resistor_SMD:R_0603_1608Metric | R1, R2, R8 |
| 2 | Conn_01x03_Pin | Connector_Wire:SolderWire-0.127sqmm_1x03_P3.7mm_D0.48mm_OD1mm | J3, J12 |
| 2 | Conn_02x01 | Connector_Wire:SolderWire-0.75sqmm_1x02_P4.8mm_D1.25mm_OD2.3mm | J1, J2 |
| 2 | RED | LED_SMD:LED_Kingbright_APFA3010_3x1.5mm_Horizontal | D1, D2 |
| 1 | 0R | Resistor_SMD:R_0603_1608Metric | R25 |
| 1 | 330R | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | ADS1115IDGS | Package_SO:TSSOP-10_3x3mm_P0.5mm | U1 |
| 1 | Fiducial | custom:el-botto | FID1 |
| 1 | GREEN | Diode_SMD:D_0603_1608Metric | D6 |
| 1 | IDK | Inductor_SMD:L_0603_1608Metric | FB1 |
| 1 | LDL212PU50R | Package_DFN_QFN:DFN-6-1EP_3x3mm_P0.95mm_EP1.7x2.6mm | U13 |
| 1 | MOUDLE-SEEEDUINO-XIAO | XIAO_PCB:MOUDLE14P-SMD-2.54-21X17.8MM | U4 |
| 1 | MPU-6050 | Sensor_Motion:InvenSense_QFN-24_4x4mm_P0.5mm | U3 |
| 1 | MountingHole | MountingHole:MountingHole_4.3mm_M4_DIN965 | H1 |
| 1 | PCA9685PW | Package_SO:TSSOP-28_4.4x9.7mm_P0.65mm | U6 |
| 1 | RED | Diode_SMD:D_0603_1608Metric | D5 |
Similar boards
- 6 layers122 × 98 mm

- 4 layers

RasterGenerator
LukasReil/SEM_Dev
This project describes a fully open-source electron microscope.
15 parts - 4 layers64 × 40 mm

- 4 layers81.3 × 52.8 mm

- 2 layers67.3 × 96.9 mm

WaterQualityControl
Hasatio/WaterQualityControl
The circuit taken as an example while designing the board Adafruit PCA9685
142 parts - 4 layers73 × 56 mm

- 4 layers100.1 × 100 mm

- 2 layers145 × 108 mm

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