Skip to content

Latest commit

 

History

History
118 lines (93 loc) · 5.32 KB

File metadata and controls

118 lines (93 loc) · 5.32 KB

PS2 to Bluetooth Controller - Схема подключения

Схема подключения PS2 контроллера к ESP32

Необходимые компоненты:

  • ESP32-WROOM модуль
  • PS2 контроллер с портом
  • 10x резистор 1kΩ (для voltage divider - по 5 штук на каждый сигнал)
  • Источник питания 5V для PS2 контроллера
  • Breadboard и провода

Voltage Divider схема с резисторами 1kΩ:

PS2 5V сигнал ----[1kΩ]----[1kΩ]----+----[1kΩ]----[1kΩ]----[1kΩ]---- GND
                                    |
                                ESP32 pin (~3.0V)

Расчет: R1 = 2kΩ (два 1kΩ последовательно), R2 = 3kΩ (три 1kΩ последовательно) Теоретический результат: 5.05V × 3kΩ/(2kΩ+3kΩ) = 5.05V × 0.6 = 3.03V Практический результат: ~3.5-3.6V (из-за толерантности резисторов) ✓

Примечание: Расхождение в +0.5V обычно связано с толерантностью резисторов ±10% и может быть даже лучше для стабильности ESP32.

Альтернативные схемы с доступными резисторами:

Вариант A: 1kΩ + 1kΩ последовательно

R1 = 1kΩ, R2 = 1kΩ → 2.5V (приемлемо, но на грани)

Вариант B: Использование 220Ω резисторов (рекомендуется!)

R1 = 220Ω + 220Ω = 440Ω (два резистора последовательно)
R2 = 220Ω × 5 = 1100Ω (пять резисторов последовательно)  
Результат: 5.05V × 1100Ω/(440Ω+1100Ω) = 5.05V × 0.714 = 3.61V ✓

Схема: PS2_pin--[220Ω]--[220Ω]--+--[220Ω]--[220Ω]--[220Ω]--[220Ω]--[220Ω]--GND
                                |
                            ESP32_pin

Вариант C: Точное соотношение 2:3 с 220Ω

R1 = 220Ω + 220Ω = 440Ω
R2 = 220Ω + 220Ω + 220Ω = 660Ω
Результат: 5.05V × 0.6 = 3.03V ✓

Распиновка подключения:

PS2 Pin Назначение ESP32 Pin Схема подключения
1 (GND) Земля GND Прямое
2 (5V) Питание 5V/VIN Прямое
3 (SS) Attention GPIO 5 Прямое (3.3V безопасно)
4 (CLK) Clock GPIO 18 Через voltage divider
5 (MISO) Data GPIO 19 Через voltage divider
6 (MOSI) Command GPIO 23 Прямое (3.3V безопасно)

Почему voltage divider работает для PS2:

  1. Цифровой протокол: PS2 использует SPI-подобный цифровой протокол
  2. Низкая частота: ~250 kHz - достаточно медленно для RC-задержки voltage divider
  3. Только входные сигналы: Нужен только для CLK и MISO (от контроллера к ESP32)
  4. Выходные сигналы: MOSI и SS от ESP32 (3.3V) обычно распознаются 5V устройствами

Принцип работы:

  1. ESP32 читает сигналы с PS2 контроллера через voltage divider
  2. Обрабатывает данные кнопок и аналоговых стиков
  3. Передает через Bluetooth как HID геймпад
  4. ПК видит стандартный Bluetooth контроллер

Альтернативы voltage divider:

  1. Logic Level Converter (bi-directional 3.3V-5V)

    • Более надежно для высоких частот
    • Дороже чем резисторы
  2. Резистивный делитель с буферизацией

    • Добавить буферный усилитель
    • Для критичных приложений

Код использования:

Загрузите src/ps2_bluetooth_controller.cpp на ESP32. Контроллер автоматически:

  • Инициализирует PS2 в аналоговом режиме
  • Запустит Bluetooth HID
  • Будет передавать все кнопки и стики

Тестирование:

  1. Подключите схему
  2. Загрузите код на ESP32
  3. Включите Bluetooth на ПК
  4. Найдите "PS2-ESP32-Controller" в устройствах
  5. Подключитесь и тестируйте в играх

Маппинг кнопок:

PS2 Кнопка Bluetooth Button
Square Button 1
X Button 2
Circle Button 3
Triangle Button 4
L1 Button 5
R1 Button 6
L2 Button 7
R2 Button 8
Select Button 9
Start Button 10
L3 Button 11
R3 Button 12
D-Pad HAT Switch
Left Stick Left Thumb
Right Stick Right Thumb