All
SOLID MODELLaser Cutting & Engraving19-Aug-2026

ESP32-S3 Wireless Twin-Stick Controller PCB

RuneHarlyk
1 File
stl Format

Description

A handheld twin-stick radio controller built around the ESP32-S3 Super Mini.

It reads two analog joysticks plus their push-switches, applies per-axis calibration, deadzone, inversion and an expo curve, and broadcasts the normalized state over ESP-NOW at 50 Hz.

Any ESP32 receiver that adds the broadcast address as an ESP-NOW peer on the same channel hears the packets immediately, so binding a new robot, rover or camera gimbal is a matter of flashing the receiver firmware and powering up.

BILL OF MATERIALS

  • ESP32-S3 Super Mini module (native USB-C)
  • 2x analog thumbstick module with push-switch
  • Slide power switch, 2-pin battery connector
  • Roll of adhesive copper tape, 0.05mm thick, 50mm wide
  • A fresh scalpel or craft knife blade

PRINTING

Board dimensions are 160 x 106 mm, 2.2 mm thick. Print flat with the traces facing upward.

No supports required. A 0.4 mm nozzle is sufficient given the 1.5 mm minimum feature width.

At 0.2 mm layer height each ridge is three layers tall, which is adequate; 0.15 mm produces a cleaner edge to cut against.

PETG or ABS is recommended over PLA. Soldering conducts heat into the substrate through the foil, and PLA softens near 60 C, which allows pads to shift.

FIRMWARE AND CONFIGURATION

ESP-IDF firmware provides a line-based CLI over the native USB port. Deadzone,

per-axis inversion, expo strength, telemetry rate and a guided min/max/center

calibration sweep are adjustable at runtime and stored in flash.

A browser app connects over the Web Serial API, displays both sticks live, and exposes the calibration flow as controls:

https://runeharlyk.github.io/esp-now-controller/

WIRE FORMAT

The broadcast packet is a versioned packed struct: version byte, button bitfield, four signed axes normalized to -1000..1000, and a sequence counter.

Receivers include the same header file and copy the incoming bytes into it.

The version field allows the format to be extended without breaking existing receivers.

KiCad project, ESP-IDF firmware, browser app, and the script that generates this STL from the PCB file:

https://github.com/runeharlyk/esp-now-controller

Downloads

esp-controller-pcb.stl
2.9 MB