Пристрій для перемикання двох USB пристроїв в одному порту комп’ютера: загальна інформація
Цей пристрій побудовано для перемикання USB під час програмування та відладки пристроїв з USB, які програмуються USB программатором, як то USB-пристрій на базі STM32F1013, який програмується программатором ST-Link через інтерфейс SWIM. Під час розробки потрібно підключити програматор, залити прошивку, відключити програматор з порта USB комп’ютера, підключити сам пристрій в USB, і для подальшого циклу відключати пристрій, підключати програматор знову, і так по кругу. Перемикач USB дозволяє зробити це одним натиском кнопки.
Згідно специфікації USB, потрібно першими вимикати лінії даних D+ та D-, і тільки потім – живлення, тому в пристрої реалізоване перемикання через реле з управлінням мікроконтроллером. Реле обрані сигнальні з двома групами контактів, що перемикаються – два на кожну лінію даних, і одне для перемикання лінії живлення. У якості управляючого мікроконтроллера – одна з найдешевших плат розробки, які можна купити в Україні – модуль налагодження STM8S003F3P6. Мікроконтроллер керує електромагнітними реле через ключі на біполярних транзисторах.
Всього пристрій містить 2 порти USB A для пристроїв, один USB B mini для кабелю підключення до комп’ютера, кнопку для перемикання, та два світлодіоди для відображення поточного каналу.
Файли:
Схема:
свердління отворів плати і корпуса:
Проект з кодом на GitHub:
https://github.com/constrkh/arduino-two-way-usb-switch
Проект FreeCad:
STEP 3D:
Симуляція в TinkerCAD: https://www.tinkercad.com/things/bpxpZaQPrPq
Список матеріалів:
# | Назва | Кількість |
1 | Мікроконтроллер – модуль STM8S003F3P6 | 1 |
2 | Перехідник адаптер USB Type B mini – DIP | 1 |
3 | Перехідник адаптер гніздо USB Type A – DIP | 2 |
4 | Плата макетна двостороння 5×7 | 1 |
5 | Реле DPDT 5V DC (напр. QY4078-005DC-2ZS, JRC-19F-5VDC, DS2Y-S-DC5V) | 3 |
6 | Кнопка тактова 6×6-5.0 | 1 |
7 | Ковпачок для кнопки A17-3.4мм | 1 |
8 | Транзистор NPN (S9018H) | 3 |
9 | Світлодіод 3мм жовтий | 2 |
10 | Світлодіод 3мм зелений | 1 |
11 | Резистор 220R | 3 |
12 | Резистор 2k | 3 |
13 | Діод 1N4001 | 3 |
14 | Стійка M3x12 MF | 2 |
15 | Шайба M3x6x1 | 2 |
16 | Гайка М3 | 2 |
17 | Гвинт М3х6мм напівкруглий | 2 |
18 | Стійка M2x8 TFM-M2x8+4мм | 4 |
19 | Гайка М2 | 4 |
20 | Шайба M2x5x1 пластикова | 8 |
21 | Гвинт М2х6мм напівкруглий | 4 |
22 | Шуруп 3х5х7мм напівкруглий з буртиком | 4 |
23 | Корпус D65A | 1 |
24 | Шуруп 3×30 для корпусу | 1 |
25 | Кабель USB AM-BM | 1 |
Збірка
Програмування:
Для програмування знадобиться програматор STLink v2/v3, та Arduino IDE версії 1 (2.x.x не підходить). Код перевірено в Arduino IDE версії 1.8.19. Потрібно встановити підтримку платформи STM8 з https://github.com/tenbaht/sduino/tree/development#installation, та обрати плату “STM8S103F3”.
Файл з кодом для STM8: https://github.com/constrkh/arduino-two-way-usb-switch/blob/main/src/arduino-two-way-usb-switch/arduino-two-way-usb-switch.ino