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

Amidala drive system sketch for ESP32 S3 Amidala Board
AmidalaShield is an open-source printed circuit board by thePunderWoman, from the thePunderWoman/Amidala repository on GitHub, published under the GPL-2.0 licence. It is a 4-layer board of 99.9 × 74.9 mm with 40 parts on 32 nets, routed with 333 tracks and 355 vias.
It is built around the ESP32-S3-DEVKITC-1-N8. Its parts include 8 capacitors, 4 resistors and 2 connectors. It belongs with the ESP32 boards of this library.
A custom KiCad PCB shield designed specifically for the Amidala Firmware — a control system for astromech and similar droid builds. This board provides all the I/O the firmware needs in a single, purpose-built package.
Designed by thePunderWoman
The electrical design is written in Stackup KDL, using the pinned
Stackup parts library plus board-specific parts. The
KiCad PCB is linked to it through AmidalaShield.stackup_sch;
sync it with the Stackup KiCad plugin after changing the design. See
stackup/README.md.
The AmidalaShield is a carrier/breakout board for the ESP32-S3 N16R8 DevKit. It breaks out and conditions the ESP32-S3's peripherals for the specific needs of the Amidala Firmware: wireless XBee communication, multi-channel servo control, RC receiver input, SD card storage, and expansion headers for additional peripherals.
config.txt at startup (matches Amidala Firmware config system)| File/Folder | Description |
|---|---|
stackup/board.kdl | Electrical design (Stackup KDL), replacing the KiCad schematics |
stackup/parts.kdl | Parts the Stackup library doesn't have (DevKitC, microSD socket, screw terminal, 3-way jumper) |
AmidalaShield.kicad_pcb | PCB layout, synced from the Stackup design |
gerbers/ | Production-ready Gerber files |
libraries/ | Project-specific KiCad symbol/footprint libraries |
images/ | Board renders and screenshots |
AmidalaShield.kicad_pro in KiCad 8+.gerbers/ to order PCBs from your preferred fab.config.txt on the microSD card — see the firmware repo for a full annotated example.V1.1 — Updated GPIO assignments for ESP32-S3 WROOM-1 N8R2/N16R2 (Quad flash/PSRAM). Avoid GPIO35–37 on R8 (Octal) variants. GPIO48 reserved for onboard RGB LED.
| Function | GPIO | DevKit Side | Notes |
|---|---|---|---|
| SPI MOSI | GPIO11 | Left | Native FSPI, shared bus |
| SPI MISO | GPIO13 | Left | Native FSPI, shared bus |
| SPI SCK | GPIO12 | Left | Native FSPI, shared bus |
| SD Card CS | GPIO10 | Left | |
| XBee CS | GPIO7 | Left | |
| SPI Spare CS | GPIO14 | Left | Exposed header |
| XBee ATTN | GPIO16 | Left | |
| XBee SLEEP | GPIO15 | Left | |
| I2C SDA | GPIO8 | Left | Native I2C default |
| I2C SCL | GPIO9 | Left | Native I2C default |
| UART0 TX | GPIO43 | Right | Shared w/ USB — do not use simultaneously. Silkscreen "Serial 0"; fixed, carries the main serial-out/WCB mesh path |
| UART0 RX | GPIO44 | Right | Shared w/ USB — do not use simultaneously |
| UART1 TX | GPIO17 | Right | Silkscreen "Serial 1". Reassignable between the dome/drive serial link (default: dome) |
| UART1 RX | GPIO18 | Right | |
| UART2 TX | GPIO21 | Right | Silkscreen "Serial 2". Real hardware UART, not software serial. Reassignable between the dome/drive serial link (default: drive) |
| UART2 RX | GPIO38 | Right | |
| PPMIN | GPIO47 | Right | |
| Analog 1 | GPIO1 | Right | ADC1_0, WiFi-safe |
| Analog 2 | GPIO2 | Right | ADC1_1, WiFi-safe |
| Servo 1 | GPIO3 | Left | Strapping pin (JTAG source), safe after boot |
| Servo 2 | GPIO4 | Left | |
| Servo 3 | GPIO5 | Left | |
| Servo 4 | GPIO6 | Left | |
| Digital 1 | GPIO39 | Right | Goes HIGH after reset (not LOW like most GPIOs) |
| Digital 2 | GPIO40 | Right | |
| Digital 3 | GPIO41 | Right | |
| Digital 4 | GPIO42 | Right | Transitions low on reset slightly slower |
| RGB LED | GPIO48 | Right | Reserved — onboard DevKit RGB LED |
| NC | GPIO8 | Left | Reserved |
| GPIO | Reason |
|---|---|
| GPIO0 | Strapping pin — boot mode |
| GPIO3 | Strapping pin — JTAG source (used for Servo 1, safe after boot) |
| GPIO19/20 | USB D-/D+ |
| GPIO26–32 | Internal SPI flash/PSRAM — never use |
| GPIO35–37 | Internal on Octal (R8) variants — safe on R2 only |
| GPIO45 | Strapping pin — VDD_SPI voltage |
| GPIO46 | Strapping pin |
This hardware design is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
You are free to share and adapt this design for non-commercial purposes, as long as you give appropriate credit and distribute any adaptations under the same license.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10kΩ | Resistor_SMD:R_0603_1608Metric | R1, R2, R3, R5 |
| 3 | 100nF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3 |
| 2 | 10µF | Capacitor_SMD:C_0805_2012Metric | C4, C7 |
| 1 | 1 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Servo1 |
| 1 | 100µF | Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A | C9 |
| 1 | 1µF | Capacitor_SMD:C_0603_1608Metric | C5 |
| 1 | 2 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Servo2 |
| 1 | 3 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Servo3 |
| 1 | 4 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Servo4 |
| 1 | 8.2pF | Capacitor_SMD:C_0603_1608Metric | C6 |
| 1 | A1 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Analog1 |
| 1 | A2 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Analog2 |
| 1 | Aux I2C | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | I2C1 |
| 1 | D1 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Digital1 |
| 1 | D2 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Digital2 |
| 1 | D3 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Digital3 |
| 1 | D4 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_Digital4 |
| 1 | ESP32-S3-DevKitC | ExpressIf:ESP32-S2-DevKitC-1 | ESP32-S3 |
| 1 | Jumper_3_Open | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | JP1 |
| 1 | LOGO | Amidala:amidala-silkscreen | G*** |
| 1 | LOGO | Amidala:amidala-logo | G*** |
| 1 | LOGO | Amidala:R2Builders | G*** |
| 1 | Micro_SD_Card | Connector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5 | J3 |
| 1 | PPMIN | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J_PPMIN1 |
| 1 | SPI | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | SPI1 |
| 1 | Screw_Terminal_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_Horizontal | J1 |
| 1 | Serial0 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | Serial0 |
| 1 | Serial1 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | Serial1 |
| 1 | Serial2 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | SWSerial1 |
| 1 | XB3-24Z8UT-J | Xbee3:XB324Z8UTJ | XBee3 |
The 36 most common of 40 parts.

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

jazzmonger/Traeger-PID-Controller
Traeger Smoker/Grill Controller based on an

ohasanov-hbrw/tribit32-advanced
A tri-microcontroller, overengineered GameBoy Advance clone. More value was given to the controls and the exterior look, which is cool!



FIPATECH/CDFR26_PAMI
Open source firmware and PCB for a differential mobile robot (PAMI) based on ESP32-S3 - Coupe de France de Robotique

dnhutchins/ETC_Express_Reverse_Eng
The ultimate goal of this work is to develop an interface to use the control surface from a legacy ETC Express 24/48 lighting controller as a modern EOSNomad compatible programming and fader wing.

heckler/esphome-device-configs
Configuration definitions for local ESPHome files
It measures 99.9 × 74.9 mm and has 4 copper layers, 1.6 mm thick.
40 parts, built around the ESP32-S3-DEVKITC-1-N8. 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 thePunderWoman/Amidala repository on GitHub, at the commit this page was made from: the board is PCB/AmidalaShield.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-2.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).