Skip to content

Latest commit

 

History

History
105 lines (66 loc) · 3.88 KB

File metadata and controls

105 lines (66 loc) · 3.88 KB

Hardware

← Back to README


Microcontroller

ESP32-S3 SuperMini — a compact dual-core 240 MHz board with integrated 2.4 GHz WiFi and Bluetooth. Chosen for its small footprint, built-in BOOT button (used for factory reset), and low cost.

ESP32 spec sheet

Note on antenna: The SuperMini's onboard antenna is marginal. In practice, reducing TX power to ~5 dBm (20 quarter-dBm units) improved reliability significantly over the default high-power setting.


Button Matrix

Up to 12 buttons arranged in a 4×3 grid, wired as a matrix to minimize GPIO pin usage. Each position in the matrix is individually addressable; the firmware reports the position index (0–11) along with the device ID when a button is pressed.

Button matrix wired on breadboard    Button matrix wiring diagram sketch

The number of buttons is flexible — a device might have 1 button, 4 buttons, or the full 12. Only buttons that are physically present and wired are reported.

Button Matrix Demo

This demo simulates a button press by connecting two matrix wires, then shows the event being received by the backend server.

Watch button matrix demo


Optional: OLED Display

A small I²C OLED screen (0.91 inch, 128×32 pixels) can be attached to show the currently selected mode from the server-defined mode list. The user scrolls through modes with the rotary encoder.

Small OLED display module

The display is entirely optional — devices without a display still function; they simply can't show mode feedback to the user.

OLED Mode Update Demo

This demo shows the OLED display working and the mode list being refreshed from the server.

Watch OLED mode update demo


Optional: Rotary Encoder

A standard KY-040-style rotary encoder with a push button. Used to scroll through the mode list displayed on the OLED. Rotating left/right moves through the list; the selected mode is sent with each subsequent button press.


Enclosure

SVG cut files for a laser-cut angled button enclosure are included in Documentation/buttonHousing/. Several iterations of the design exist; the latest version (v7) corrects edge alignment for clean assembly.

Blueprint sketch for enclosure

The enclosure is designed to sit at an angle so buttons face the user naturally when placed on a flat surface.


Wiring Summary

Component Connection
Button matrix rows/cols GPIO pins (exact mapping in Pins.h)
OLED display I²C (SDA/SCL)
Rotary encoder Two GPIO pins + interrupt
Factory reset BOOT button (GPIO 0), hold 3 s
Button input (single-button mode) GPIO 4 to GND

Inspiration

Some button styles and form factors considered during design:

Green button   Rotary dial   Custom button idea sick looking   Large arcade button

Prototype Lessons

  • The ESP32-S3 SuperMini antenna was less reliable at default transmit power.
  • A matrix layout reduced GPIO usage but required careful scanning/debounce behavior.
  • The enclosure angle mattered more than expected; flat boxes made the buttons less pleasant to press.