
Cube motherboard
willem-pennings/balancing-cube
A cube that balances itself in a corner or edge using reaction wheels

Balancing robot
Axis pcb v3 is an open-source printed circuit board by MrQuaq, from the MrQuaq/AXIS repository on GitHub, published under the MIT licence. It is a 2-layer board of 140.5 × 91 mm with 31 parts on 43 nets, routed with 156 tracks and 11 vias.
It is built around the SS34. Its parts include 16 connectors, 5 capacitors, 2 diodes, 1 resistor and 1 fuse. It belongs with the robots and motor control boards and the ESP32 boards of this library.
AXIS is a dual wheeled self-balancing robot built around an ESP32 and custom PCB!
AXIS is a dual wheeled balancing robot, using a PID algorithm to keep its balance. The main microcontroller of the robot will be the ESP32. This enables the use of an Xbox controller for controlling the robot. Certain buttons on the controller will be mapped to the pid value settings so they can be changed on the fly, which should make the tuning process a lot easier.
As an additional feature that will be tested after the robot is already stable, 2 encoders that are already mounted on the motors will be added. Their data will be used in a second PID algorithm to hopefully get the robot to stay in a single place a lot easier. This feature is still completely optional and can easily be turned on by a button on the Xbox controller.
The goal of this project is to become more familiarized with electronics to get a good foundation for future projects. And to grasp the basics of PCB-design.
The goal for the robot itself is to make it balance without jittering too much and to make it drivable via a controller.
This PCB features lots of female header pins to mount existing breakout boards onto. This framework makes for more reliable connections and pcb-design experience.
To design the board I used KiCAD, a free open-source EDA.
The first step in the design process was coming up with the requirements and features of the board.
These include:
After setting these requirements, a schematic was designed before moving on to the actual tracing. This also enabled me to become even more familiarized with the design and the components.
With the schematic made, the pcb tracing was fairly easy. I paid special attention to the spacing between the female pin headers so the modules would fit properly. A ground plane was also added on the bottom of the PCB to make wiring easier. To disturb this plane as little as possible, I tried to lay out the PCB in such a way that I have almost no traces on the back side.
The final PCB features:
For the CAD I used a program I’m fairly familiar with; Fusion 360.
The frame is divided into 3 key parts:
The motor mount is made so that the motor has no room to shake. This results in a weird internal shape because of the irregular shape of the motor with right angle gearbox. Additionally the motor is able to be secured with 4 screws via the motor mount cover. This cover also features some cooling slots (but I doubt I need them).
Further up, we have the bottom compartment of the head. This houses the custom PCB. Connections to the encoders and motors pass through the bottom to the motor mount.
Above, there is the top compartment of the head. Here is the battery, LCD screen and switch. Again, their connections will pass through the bottom to the compartment below.
Finally a lid, secured with magnets for easy access, covers up the top.
What’s already been done:
What still needs to be done:
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 100nF | Capacitor_SMD:C_0805_2012Metric | C5, C6 |
| 1 | 100 µF | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C2 |
| 1 | 1000µF | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C1 |
| 1 | 1K | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 3A | Fuse:Fuseholder_Blade_Mini_Keystone_3568 | F1 |
| 1 | 470µF | Capacitor_THT:CP_Radial_D8.0mm_P3.50mm | C4 |
| 1 | 7.2V | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | J1 |
| 1 | ESP-32-LEFT | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | J6 |
| 1 | ESP-32-RIGHT | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | J8 |
| 1 | EncoderA | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4_1x04_P5.00mm_Horizontal | J12 |
| 1 | EncoderB | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4_1x04_P5.00mm_Horizontal | J15 |
| 1 | ICM0948 | Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical | J10 |
| 1 | LCD-2x16 | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J7 |
| 1 | LM2596-IN+ | Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical | J2 |
| 1 | LM2596-IN- | Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical | J3 |
| 1 | LM2596-OUT+ | Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical | J4 |
| 1 | LM2596-OUT- | Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical | J5 |
| 1 | LOGO | SilkscreenLogo.preety:A.SPACE_Logo | G*** |
| 1 | LOGO | SilkscreenLogo.preety:A.SPACE_Logo2 | G*** |
| 1 | MotorA | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | J13 |
| 1 | MotorB | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | J14 |
| 1 | Power_LED | LED_SMD:LED_0805_2012Metric | D1 |
| 1 | Power_Switch | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J16 |
| 1 | SS34 | Diode_SMD:D_SMA | D2 |
| 1 | TB6612FNG_LEFT | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J9 |
| 1 | TB6612FNG_RIGHT | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J11 |
| 1 | TestPoint-5V | TestPoint:TestPoint_Pad_D1.5mm | TP3 |
| 1 | TestPoint-7.2V | TestPoint:TestPoint_Pad_D1.5mm | TP1 |
| 1 | TestPoint-ESP-3.3V | TestPoint:TestPoint_Pad_D1.5mm | TP4 |
| 1 | TestPoint-GND | TestPoint:TestPoint_Pad_D1.5mm | TP2 |
It measures 140.5 × 91 mm and has 2 copper layers, 1.6 mm thick.
31 parts, built around the SS34. 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.
From the MrQuaq/AXIS repository on GitHub, at the commit this page was made from: the board is axis_pcb_v3/axis_pcb_v3.kicad_pcb and its schematic axis_pcb_v3/axis_pcb_v3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

willem-pennings/balancing-cube
A cube that balances itself in a corner or edge using reaction wheels

Arrow-air/project-quiver
Project Quiver documentation, designs, and project artifacts.


Arrow-air/project-caribou
Project Caribou documentation, designs, and project artifacts.

FujiNetWIFI/fujinet-hardware
Schematics and design files for FujiNet hardware


CrashOverride85/zc95
4 channel EStim box inspired by the mk312bt, with Lua scripting support
