Skip to the content
PCBKitNew board
2 layersBalancerBot, the printed circuit board in 3D

A two-wheeled robot that uses a PID-controller with accelerometer data to stay in balance.

Copper layers
2
Thickness
1.6 mm
Parts
2
Nets
63
Pads
117
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 10.0 (file 20260206)
Created
26 Apr 2026
Updated
20 Oct 2026

Overview

BalancerBot is an open-source printed circuit board by eelivaan, from the eelivaan/BalancerBot repository on GitHub. It is a 2-layer board with 2 parts on 63 nets.

It belongs with the sensors and measurement and robots and motor control boards and the ESP32, RP2040 and AVR (ATmega, ATtiny) boards of this library.

README

README.md

About

A two-wheeled robot that uses PID-controller with accelerometer and gyroscope data to stay in balance. The project also features desktop user interfaces for tuning the PID parameters wirelessly and for remote control. The source code is Micropython extended with some custom c++ modules that are frozen into the binary.

Control options

  • BLE remote control from desktop
  • Follow a predefined path
  • Follow hand or other target that is kept in its field of view

Program flow

  1. Power on switch ⟶ 1 s delay ⟶ led lits up
  2. Led starts flashing ⟶ Bot in idle mode (BLE active)
  3. Lift into balance position by hand or run RemoteControl.py ⟶ Bot in active balancing mode (BLE active)
  4. Press on-board button or terminate from UI ⟶ Bot stops balancing, connects to local network and goes into file transfer mode (BLE inactive, WLAN active)
  5. Connect http://<ip>:2323 via browser or via TCP_client.py to upload/download files wirelessly (WLAN active)
  6. Press on-board button or send QUIT command to shutdown, or send BOOT command to restart from 2. (WLAN inactive)
  7. Power off switch

UI dependencies

bash
pip install bleak numpy matplotlib opencv-python pillow

Native modules

  1. Getting Micropython (into WSL folder):

    bash
    # using the latest stable release tag
    git clone --branch v1.29.0 --single-branch --sparse https://github.com/micropython/micropython.git
    cd micropython
    # git sparse-checkout init --cone
    git sparse-checkout set drivers extmod lib mpy-cross ports/rp2 py shared tools
    git checkout v1.29.0
    git submodule update --init --recursive
  2. After modifications, run src/copy-native-modules.bat (Alt-V shortcut in VS Code) to copy the c/c++ source code next to micropython repository in WSL.

  3. Build micropython with the custom modules freezed:

    bash
    cd micropython
    # When building the first time
    make -C mpy-cross
    cd ports/rp2
    make BOARD=RPI_PICO2_W submodules
    # Each time the module source is changed
    make BOARD=RPI_PICO2_W clean
    make BOARD=RPI_PICO2_W USER_C_MODULES=../../../modules/micropython.cmake # MICROPY_C_HEAP_SIZE=4096
    make BOARD=RPI_PICO2_W copy
  4. Now the micropython.uf2 binary is found under BalancerBot/bin/ ready for deployment into Pico

(https://docs.micropython.org/en/latest/develop/cmodules.html)

TODO: https://docs.micropython.org/en/latest/develop/cmodules.html#specifying-c-modules-via-a-manifest

Parts

2
QtyValueFootprintReferences
1Arduino_Nano_ESP32Module:Arduino_NanoA1
1RaspberryPi_Pico_WModule:RaspberryPi_Pico_W_SMD_HandSolderA2

Questions

What parts does the BalancerBot use?

2 parts. 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 BalancerBot KiCad files?

From the eelivaan/BalancerBot repository on GitHub, at the commit this page was made from: the board is schematics/BalancerBot.kicad_pcb and its schematic schematics/BalancerBot.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the BalancerBot design in my own project?

Its repository states no licence, so its author keeps all rights: ask eelivaan before reusing the design.

Similar boards

  • 2 layers37 × 19 mmPassive rpi hub75-adapter, the printed circuit board in 3D

    Passive rpi hub75-adapter

    hzeller/rpi-rgb-led-matrix

    Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO

    2 parts4.4kGPL-2.0
  • 2 layersDiode template, the printed circuit board in 3D

    Diode template

    adamws/kicad-kbplacer

    KiCad plugin for automatic keyboard's key placement and routing

    2 parts547GPL-3.0
  • 2 layers20.3 × 15.2 mmL0 button, the printed circuit board in 3D

    L0 button

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    2 parts546MIT
  • 2 layers35.1 × 46.8 mmSDEX2M2 Breakout Board, the printed circuit board in 3D

    SDEX2M2 Breakout Board

    NVNTLabs/switch2-SDEX2M2

    Micro SD Express to M.2 NVME Adapter for Nintendo Switch 2

    2 parts542GPL-3.0
  • 2 layers59.3 × 36.6 mmExpansionBoardTemplate, the printed circuit board in 3D

    ExpansionBoardTemplate

    BlueSCSI/BlueSCSI-v2

    BlueSCSI v2/Ultra - an open source, open hardware, SCSI emulator using the Pi Pico PR2040 and Pico 2 RP2350

    2 parts459GPL-3.0
  • 2 layersAlpha.9mm.wire, the printed circuit board in 3D

    Alpha.9mm.wire

    ohmtech-rdi/eurorack-blocks

    Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust

    2 parts410
  • 2 layers26.7 × 64 mmGpu power, the printed circuit board in 3D

    Gpu power

    dennisss/dacha

    Monorepo for awesome tools/projects/libraries

    2 parts397Apache-2.0