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

Rally Shifter Pro is a fully open DIY sim-racing sequential shifter based on a mechanical design sourced from GrabCAD. It integrates a custom ESP32-S3 firmware exposing a native USB HID Gamepad, analog Hall effect sensing (SS49E), and a polished Python desktop application for real-time telemetry, calibration, and configuration.
Shifter is an open-source printed circuit board by LMHDPRO, from the LMHDPRO/open-sequential-shifter repository on GitHub. It is a 2-layer board of 36.7 × 75.2 mm with 3 parts on 39 nets, routed with 40 tracks and 0 vias.
It is built around the ESP32-S3-DEVKITC-1-N8. Its parts include 2 connectors and 1 IC. It belongs with the ESP32 boards of this library.
██████╗ █████╗ ██╗ ██╗ ██╗ ██╗ ███████╗██╗ ██╗██╗███████╗████████╗███████╗██████╗
██╔══██╗██╔══██╗██║ ██║ ╚██╗ ██╔╝ ██╔════╝██║ ██║██║██╔════╝╚══██╔══╝██╔════╝██╔══██╗
██████╔╝███████║██║ ██║ ╚████╔╝ ███████╗███████║██║█████╗ ██║ █████╗ ██████╔╝
██╔══██╗██╔══██║██║ ██║ ╚██╔╝ ╚════██║██╔══██║██║██╔══╝ ██║ ██╔══╝ ██╔══██╗
██║ ██║██║ ██║███████╗███████╗██║ ███████║██║ ██║██║██║ ██║ ███████╗██║ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
Open DIY Sequential Shifter — ESP32-S3 · Hall Sensor · USB HID
Open-source, plug-and-play USB sequential shifter with analog Hall sensing and pro-grade desktop calibration software.
Compact mechanical design (80×80×5 mm), CNC-machined aluminum body, and a clean Python UI — assembled in minutes, no drivers required.
Rally Shifter Pro is a fully open DIY sim-racing sequential shifter based on a mechanical design sourced from GrabCAD. It integrates a custom ESP32-S3 firmware exposing a native USB HID Gamepad, analog Hall effect sensing (SS49E), and a polished Python desktop application for real-time telemetry, calibration, and configuration.
Mechanical design source: GrabCAD — Mini Sequential Shifter and Handbrake (80×80×5 mm)
All credit to the original mechanical designer.
[ Mechanical Assembly — CNC Al 6061 + Printed Parts ]
↓
[ SS49E Hall Sensor + M6x10 Neodymium Magnet ]
↓
[ ESP32-S3 — 12-bit ADC · Moving Average ]
↓
[ Normalize → Dead Zone → Hysteresis ]
↓
┌─────────────────┴─────────────────┐
│ │
[ USB HID Gamepad ] [ USB CDC Serial ]
leftStick axis X CONFIG / CAL / STATUS
Button 0 = Shift Down
Button 1 = Shift Up
│ │
└─────────────────┬─────────────────┘
↓
[ Rally Shifter Pro — Python UI ]
Live telemetry · Tuning · Flash| Parameter | Value |
|---|---|
| MCU | ESP32-S3 DevKit-C 1 |
| Framework | Arduino (PlatformIO) |
| USB | Native HID + CDC (simultaneous) |
| ADC | 12-bit (0–4095), 3.3V |
| Hall pin | GPIO 9 (ADC capable) |
| Pin | Connection |
|---|---|
| VCC | 3.3V |
| GND | GND |
| OUT | GPIO 9 (ADC) |
Full wiring details:
docs/wiring.md
| Part | Material |
|---|---|
| Main body plates | CNC Aluminum 6061 |
| Bushing (M8-10×12) | Graphite self-lubricating bronze |
| Fasteners | Stainless steel |
| 3D printed brackets / covers | PLA or PETG |
| Optional enclosure panels | Acrylic |
See hardware/bom/bom.csv and hardware/bom/bom_explained.md
Built with PlatformIO for ESP32-S3.
# Install PlatformIO (VS Code extension recommended)
# Clone and open the repo, then:
pio run # build
pio run --target upload # flash
pio device monitor # serial monitor (115200)PING → PONG:RallyShifter:1.0
STATUS → STATUS:<raw>,<axis>,<hyst_state>
CONFIG:{json} → ACK:CONFIG | ERR:JSON
CAL:0..3 → ACK:CAL:<n>
DEFAULTS → ACK:DEFAULTSFull protocol: docs/protocol.md
Desktop companion app — calibration, tuning, and live telemetry.
pip install -r software/requirements.txt
python software/src/main.py| Library | Purpose |
|---|---|
| PySide6 | Desktop UI framework |
| pygame | USB HID Gamepad reading |
| pyserial | CDC serial config/calibration |
docs/wiring.md)rally-shifter-pro/
├── README.md
├── LICENSE
├── .gitignore
├── CONTRIBUTING.md
│
├── docs/
│ ├── images/ ← device photos, UI screenshots
│ ├── protocol.md ← serial CDC protocol reference
│ ├── wiring.md ← hall sensor wiring + pinout
│ ├── calibration.md ← calibration procedure
│ └── design_notes.md ← technical decisions
│
├── hardware/
│ ├── mechanical/
│ │ ├── source.md ← GrabCAD credits + link
│ │ └── modifications.md
│ ├── pcb/ ← (future — schematic + gerbers)
│ └── bom/
│ ├── bom.csv
│ └── bom_explained.md
│
├── firmware/
│ ├── platformio.iniThe firmware applies a 4-stage pipeline on every ADC sample:
ADC Read (12-bit) → Moving Average (12 samples) → Normalize (-1.0..+1.0)
→ Dead Zone removal → Hysteresis shift detection| Parameter | Default | Description |
|---|---|---|
dz_low | -0.13 | Dead zone lower bound |
dz_high | +0.13 | Dead zone upper bound |
thr_down | -0.62 | Shift-down threshold |
thr_up | +0.62 | Shift-up threshold |
hysteresis | 0.10 | Return-to-neutral margin |
All values are tunable live via the desktop app and persisted to NVS.
MIT License — see LICENSE
This project uses and credits the mechanical design published on GrabCAD. All firmware, electronics, and software are original work released under MIT.
Mechanical design: GrabCAD contributor
| Role | Name |
|---|---|
| Electronics, Firmware & Software | José Pardiñaz |
| Contributor | Álvaro Martínez |
| Contributor | Natalia McDonald |
| Contributor | Alberto Negrete |
Made with ☕ in Mérida, Yucatán, MX
DIY project. No warranty expressed or implied. Build and use at your own risk.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | Conn_01x03_Socket | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J1, J2 |
| 1 | ESP32-S3-DevKitC | PCM_Espressif:ESP32-S3-DevKitC | U1 |
It measures 36.7 × 75.2 mm and has 2 copper layers, 1.6 mm thick.
3 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 LMHDPRO/open-sequential-shifter repository on GitHub, at the commit this page was made from: the board is hardware/pcb/Shifter/Shifter.kicad_pcb and its schematic hardware/pcb/Shifter/Shifter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask LMHDPRO before reusing the design.

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