ЭЭлектроПоиск/Готовые устройства/Пульты и устройства ввода/Геймпад USB HID из пары Joy-Con на ESP32-S3 (в стиле Xbox)
Готовое устройство · источник OSHWLab

Геймпад USB HID из пары Joy-Con на ESP32-S3 (в стиле Xbox)

Открытый проект со схемой, платой и документацией.

Геймпад USB HID из пары Joy-Con на ESP32-S3 (в стиле Xbox)

Карточка проекта

Автор
scavenrage
Лицензия
Public Domain
ESP32LED
Источник
https://oshwlab.com/scavenrage/gamepad_tablet_pro
Лицензия: Public Domain · атрибуция автора

Проект превращает пару оригинальных контроллеров Nintendo Switch Joy-Con в полноценный USB HID-геймпад на плате ESP32-S3 (Waveshare Zero). Цель — единый проводной контроллер без задержек, ведущий себя как профессиональный геймпад и совместимый с системами, ожидающими раскладку в стиле Xbox.

Оба Joy-Con подключены к ESP32-S3 по независимым интерфейсам UART на 1 Мбит/с. Каждый полностью декодируется собственным конечным автоматом: начальное «рукопожатие», высокочастотный опрос статуса, извлечение данных стиков (полное 12-битное разрешение), декодирование матрицы кнопок, сторожевой таймер и восстановление после ошибок, автоматическое повторное обнаружение при отключении.

Через нативный USB-OTG ESP32-S3 (TinyUSB) устройство определяется как USB HID-геймпад. Собственная HID-раскладка переводит входы Joy-Con в стандартные органы управления: левый стик → X/Y, правый → RX/RY, ZL/ZR → триггеры, крестовина → HID Hat (8 направлений). Матрица бит кнопок переработана под логику в стиле Xbox — это потребовало детального реверс-инжиниринга ожидаемых позиций кнопок.

Аналоговые стики Joy-Con (диапазон 0–4095) нормализуются в знаковые 8-битные оси HID (−127…+127) с центрированием, мёртвой зоной, инверсией оси Y, плавным масштабированием и ограничением по краям. На плате есть адресный RGB-светодиод WS2812 (GPIO21) для индикации состояния (например, фиолетовый — оба Joy-Con подключены и опрашиваются).

Это краткое изложение проекта. Полную версию с подробностями смотрите на сайте оригинала: https://oshwlab.com/scavenrage/gamepad_tablet_pro

Схема и печатная плата

Файлы проекта · состав документации

Joycons_Joystick_ESP32S3.inoHTML
Заметили ошибку?