Skip to content

owenpkent/alpha-stick

Repository files navigation

🎮 Alpha Stick

Open-Source Adaptive Gaming Joystick

A 3D-printable, ESP32-powered joystick designed for gamers with limited mobility.
Inspired by commercial solutions like QuadStick and Feather — but fully open and hackable.

Firmware CI Models CI License: MIT (firmware) / CERN-OHL-P (hardware) Status: Phase 0 bench validation PRs welcome Join the discussions

Tetra II spherical flexure joint — the primary pivot mechanism

The pivot is a Tetra II spherical flexure: bearing-free, frictionless, and self-centering — the first gram of input already moves it.

Tetra II flexure — front view   Tetra II flexure — side view


New here? Read the Executive Summary (one page) or the Whitepaper (the full technical story). Want to help? See CONTRIBUTING.md.

Status

Phase 0: Bench Validation — V2 design baseline complete; proving the physics (force, noise, latency) before any product claims.

Area Status
Pivot mechanism Tetra II spherical flexure (primary) — CAD in models/tetra2-flexure/; ball-in-PTFE pod kept as the alternative
V2 First-Principles Design 🔄 Baseline written: docs/DESIGN_V2.md
Hardware Design ⏳ Planning (flexure pod + main board)
3D Print Files 🔄 Flexure STEP/STL in repo; pod bodies in progress
Firmware ⏳ Planning
Documentation 🔄 In Progress
Project Nimbus Integration ⏳ Planned

Why Alpha Stick?

Commercial adaptive controllers are expensive ($200–$500+) and often proprietary. Gamers with disabilities deserve affordable, customizable options they can build, modify, and repair themselves.

Alpha Stick aims to provide:

  • Affordable — 3D-printed enclosure + off-the-shelf electronics (~$30–50 BOM)
  • Open Source — Hardware, firmware, and documentation all freely available
  • Customizable — Modular design adaptable to different needs and abilities
  • Updateable — OTA firmware updates via ESP32
  • Compatible — Works with Xbox Adaptive Controller, PlayStation Access Controller, PC, and Project Nimbus

Inspiration

Alpha Stick draws from the best features of existing adaptive controllers:

Product Key Features We're Inspired By
QuadStick Mouth-operated joystick, sip/puff input, multi-platform support
Feather Ultra-light force (<5g), magnetic sensing, tremor filter, adjustable sensitivity
Xbox Adaptive Controller 3.5mm jack inputs, USB hub, profile switching, 3D-printable accessories
PlayStation Access Swappable button caps, adjustable stick length, expandable inputs
Titan Two Cross-platform compatibility, scripting, keyboard/mouse support

Planned Features

Hardware

  • ESP32-S3 microcontroller with Bluetooth LE and USB HID
  • Tetra II spherical flexure pivot — bearing-free, frictionless, self-centering; no springs, no break-away force
  • Contactless dual-Hall sensing — a tilting magnet read by two TMAG5273 sensors; immune to temperature and creep
  • Ultra-low force — under 5 grams full deflection, set by the flexure's blade geometry
  • 3.5mm input jacks — connect external switches and buttons
  • Modular enclosure — 3D-printed, designed for different mounting options
  • Sip/puff interface (optional) — pressure sensor input

Firmware

  • USB HID gamepad — plug-and-play on PC/consoles
  • Bluetooth LE gamepad — wireless connection
  • XInput/DirectInput modes — broad game compatibility
  • OTA updates — update firmware over WiFi
  • Web-based configuration — adjust sensitivity, deadzone, button mapping via browser
  • Profile system — save and switch between configurations
  • Tremor filter — configurable smoothing for users with tremors

Software Integration

  • Project Nimbus integration — use Alpha Stick with the virtual controller interface
  • Xbox Adaptive Controller companion — connect via 3.5mm or USB
  • Configuration app — desktop/mobile app for settings (future)

Target Platforms

  • PC — Windows (USB/Bluetooth), Linux, macOS
  • Xbox — Via Xbox Adaptive Controller (3.5mm jack or USB)
  • PlayStation — Via PS Access Controller or adapter
  • Nintendo Switch — Via USB or Bluetooth (with appropriate mode)
  • Mobile — Android/iOS via Bluetooth

Project Structure

alpha-stick/
├── README.md                 # This file
├── LICENSE                   # MIT License
├── TODO.md                   # Task tracking
├── LLM_ONBOARDING.md         # AI assistant reference
├── docs/
│   ├── EXECUTIVE_SUMMARY.md  # One page: what and why
│   ├── WHITEPAPER.md         # The full technical narrative
│   ├── DESIGN_V2.md          # V2 design baseline (working doc)
│   ├── WORKFLOW.md           # Development loops & conventions
│   ├── HARDWARE.md           # Build reference & BOM
│   ├── FIRMWARE.md           # Firmware architecture (ESP-IDF)
│   ├── PHASE0_PARTS.md       # Bench parts list
│   ├── BENCH_LOG.md          # Measured results
│   ├── PRINTING.md           # 3D printing guide
│   ├── ASSEMBLY.md           # Assembly instructions
│   └── CONFIGURATION.md      # Configuration guide
├── hardware/
│   ├── schematics/           # KiCad or EasyEDA files
│   ├── pcb/                  # PCB design files
│   └── bom/                  # Bill of materials
├── firmware/
│   ├── main/                 # Entry point, mode supervisor
│   ├── components/           # Sensing, pipeline, HID, AS-Link, config
│   ├── web/                  # Web config UI source
│   └── sdkconfig.defaults    # ESP-IDF configuration
├── models/
│   ├── tetra2-flexure/       # Primary pivot: Tetra II flexure STEP + STL (CC-BY)
│   ├── stl/                  # Ready-to-print STL files (alternative pod)
│   ├── step/                 # STEP files for modification
│   └── source/               # FreeCAD/Fusion360 source files
├── software/
│   ├── web-config/           # Web-based configuration UI
│   └── tools/                # Utility scripts
└── examples/
    └── profiles/             # Example configuration profiles

Hardware Overview

Core Components

Component Purpose Est. Cost
ESP32-S3 module Main controller $4–10
Sensor pod (Tetra II flexure pivot + dual Hall + magnet) Position input, <5 g force, self-centering $5–7
3.5mm jacks (x4) External switch inputs $2
Buttons (x2–4) Direct button inputs $1–2
3D-printed enclosure Housing $2–5 (filament)
USB-C connector Power/data $1
Misc (wires, screws) Assembly $2–3
Total ~$20–30

Optional Add-ons

Component Purpose Est. Cost
Hall-effect joystick Ultra-smooth input $10–20
Pressure sensor Sip/puff interface $5–10
LiPo battery + charger Wireless operation $10–15
OLED display Status/config display $5

Getting Started

Note: Hardware and firmware are still in development. Check back soon!

Prerequisites

  • 3D Printer — Any FDM printer (Ender 3, Prusa, etc.)
  • Soldering iron — Basic through-hole soldering
  • ESP-IDF 5.x — For firmware development (install)
  • ESP32-S3 board — DevKitC or similar

Quick Start (Coming Soon)

# Clone the repository
git clone https://github.com/owenpkent/alpha-stick.git

# Navigate to firmware directory
cd alpha-stick/firmware

# Build and flash (ESP-IDF PowerShell)
idf.py set-target esp32s3; idf.py build flash

# Open web configuration
# Connect to "AlphaStick" WiFi network, navigate to http://192.168.4.1

Project Nimbus Integration

Alpha Stick is designed to work seamlessly with Project Nimbus — a virtual controller interface for accessibility.

Integration Options

  1. Direct USB — Alpha Stick appears as a standard gamepad; Project Nimbus can combine it with mouse input
  2. Bluetooth — Wireless connection to PC running Project Nimbus
  3. Hybrid mode — Use Alpha Stick for analog input, Project Nimbus for buttons and additional controls
  4. Configuration sync — Share sensitivity curves and profiles between projects

Use Cases

  • Alpha Stick + Project Nimbus — Physical joystick for one hand, on-screen buttons for the other
  • Dual Alpha Sticks — Two joysticks for flight sim or dual-stick shooters
  • Alpha Stick + Xbox Adaptive Controller — Use Alpha Stick as an external joystick input

Accessibility Features

Designed with input from the disability gaming community:

  • Ultra-light force — under 5 g full deflection from the flexure; swap to a stiffer-blade flexure (or the adjustable ball-pivot pod) to retune
  • Configurable deadzone — Accommodate tremors and limited precision
  • Tremor filtering — Smooth out unintended movements
  • Button debouncing — Adjustable for different switch types
  • One-handed operation — Compact form factor, all controls accessible
  • Voice/switch control — External switch inputs for additional buttons
  • Custom mounting — Designed for RAM mounts, Magic Arms, and wheelchair trays

Contributing

We welcome contributions from everyone! Areas where we especially need help:

  • 3D modeling — Enclosure designs for different needs
  • PCB design — If you have KiCad/EasyEDA experience
  • Firmware development — ESP32, ESP-IDF, Bluetooth HID
  • Testing — Especially from users with disabilities
  • Documentation — Tutorials, translations, videos

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Make your changes with clear commit messages
  4. Submit a pull request

See CONTRIBUTING.md for detailed guidelines.


Roadmap

Phase 1: Foundation (Current)

  • Define hardware requirements
  • Select core components
  • Create initial 3D model
  • Basic firmware scaffold

Phase 2: Prototype

  • Working breadboard prototype
  • USB HID functionality
  • Basic web configuration
  • First printable enclosure

Phase 3: Refinement

  • Bluetooth support
  • OTA updates
  • Sip/puff option
  • Community testing

Phase 4: Release

  • Documentation complete
  • Multiple enclosure options
  • Profile library
  • v1.0 release

Community

  • GitHub Issues — Bug reports, feature requests, questions
  • Discussions — Share your builds, ask for help
  • Discord — (Coming soon)

Related Projects


License

  • Code & firmwareMIT License.
  • Original hardware designs (the pod, bench rig, bodies, toppers) — CERN-OHL-P v2 (permissive), see LICENSE-CERN-OHL-P-2.0.txt.
  • Tetra II spherical flexure (the primary pivot) — third-party design by Jelle Rommers under Creative Commons Attribution (CC BY 3.0), used unmodified; credit is required if you share or build on it. See models/tetra2-flexure/LICENSE.

Bundled third-party components and their attribution are listed in NOTICE.md.


Acknowledgments

  • The disability gaming community for feedback and inspiration
  • AbleGamers and SpecialEffect for advocacy
  • Owen — project creator, wheelchair user with muscular dystrophy
  • Everyone building accessible gaming solutions

Gaming is for everyone. Let's build it together.

About

Open-source, 3D-printable adaptive gaming joystick — an ESP32-S3 stick that moves with under 5 g of force on a bearing-free flexure pivot. USB/Bluetooth gamepad, mouse, keyboard, and wheelchair input, for gamers with limited mobility.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors