Как собрать аппаратурный KVM-переключатель за 11 евро на двух Raspberry Pi Pico

02 авг 2026
7,890
297
60
2 месяца

Знакома ситуация, когда на столе стоят два компьютера, а место есть только под один комплект из мыши и клавиатуры? Обычно проблему решают двумя путями. Первый — программный (вроде Barrier или Input Leap). Но тут начинаются танцы с бубном: сеть отвалилась, корпоративный VPN заблокировал локальный трафик, или рабочая машина вообще запрещает ставить сторонние программы. Второй путь — недорогой USB-свитч с AliExpress. Нажимаешь кнопку на коробочке, ждешь пару секунд, пока операционная система переинициализирует устройства, и так по кругу десятками раз за день.

Разработчик с ником hrvach столкнулся ровно с этой болячкой и решил сделать собственное железо. Проект получил название DeskHop. Это открытое устройство, которое переключает клавиатуру и мышь между двумя компьютерами мгновенно. Причем переключать можно как хоткеем, так и просто перетаскиванием курсора мыши за край экрана, словно у вас один монитор на два ПК.

DeskHop case and board

Как это устроено внутри

В основе схемы лежат две стандартные платы Raspberry Pi Pico на чипе RP2040. Каждая плата подключается к своему компьютеру через USB. Между собой микроконтроллеры общаются по UART через микросхему гальванической развязки (TI ISO7721DR или ADuM1201).

Open Source Hardware Logo

Реклама

Разделение питания здесь честное: земля и питающие линии двух ПК полностью изолированы друг от друга. Если один компьютер сгорит или выдаст скачок напряжения, второй не пострадает.

Секрет работы со стороны USB заключается в библиотеке Pico-PIO-USB. Программируемый ввод-вывод (PIO) в чипе RP2040 превращает обычные GPIO-пины в полноценные USB-порты. Одна плата Pico работает как USB-хост, куда вы втыкаете клавиатуру и мышь, а обе платы эмулируют стандартные HID-устройства для подключенных компьютеров.

Бесшовный переход между экранами

Самая приятная фича DeskHop — это эмуляция непрерывного рабочего стола. Когда вы доводите курсор мыши до правого края монитора первого компьютера, DeskHop мгновенно переключает передачу сигналов на второй компьютер, а курсор появляется у левого края его экрана на той же высоте.

DeskHop Mouse Demo

Клавиатура автоматически следует за мышью. Печатаете код на Linux, перевели мышку вправо на экран Mac, и следующее нажатие клавиши уже уходит в macOS.

DeskHop Typing Demo

Для отслеживания положения курсора DeskHop меняет дескриптор HID-мыши на абсолютные координаты. Устройство под капотом суммирует относительные смещения и считает точную позицию на экране.

Если переключаться мышью неудобно, всегда работает сочетание клавиш Left Ctrl + Caps Lock.

Полезные мелочи и режимы работы

Автор добавил в прошивку несколько специфических режимов, которые закрывают типичные боли при работе с двумя системами:

  • Режим замедления мыши (Right Ctrl + Right Alt). При нажатии комбинации чувствительность мыши резко падает. Удобно, когда надо выцепить пиксель в графическом редакторе или точно передвинуть ползунок на видео.
  • Игровой режим (Left Ctrl + Right Shift + G). Абсолютные координаты мыши ломают управление во многих 3D-играх и виртуальных машинах. В игровом режиме DeskHop отключает автоматический переход между экранами и возвращается к стандартному относительному позиционированию.
  • Блокировка переключения (Right Ctrl + K). Фиксирует управление на текущем компьютере, чтобы случайное движение рукой не унесло курсор на второй монитор во время созвона.
  • Заставка-скринсейвер (Left Ctrl + Right Shift + S). Курсор начинает хаотично прыгать по экрану как шарик в Pong, не давая компьютеру уйти в спящий режим.

Железо и сборка своими руками

Проект изначально проектировался так, чтобы его мог собрать любой желающий на кухонном столе. Двухслойная печатная плата разведена с минимальным количеством компонентов.

PCB Image

Компоненты для сборки (версия PCB v1.1):

| Компонент | Количество | Примерная цена | | --- | --- | --- | | Raspberry Pi Pico | 2 шт. | ~8.20 € | | Разъем USB-A на плату | 2 шт. | ~0.40 € | | Изолятор TI ISO7721DR | 1 шт. | ~1.40 € | | Конденсаторы и резисторы (0805) | 8 шт. | ~0.44 € | | Чипы ESD-защиты TPD4E1U06DBVR | 2 шт. | ~0.62 € |

Итоговая себестоимость комплектующих получается в районе 11-12 евро. Корпус печатается на 3D-принтере за пару часов, фиксация платы идет на защелках без единого винта.

DeskHop with 3D Printed Case

Для тех, кто не хочет паять самостоятельно, гербер-файлы выложены в репозитории. Плату в сборе или в виде конструктора можно заказать на Elecrow.

PCB Assembly Guide

Прошивка и настройка

Собирать проект из исходников можно через CMake или Docker:

docker-compose -f misc/docker.yml run --rm build_container

Если собирать лень, в разделе релизов есть готовый файл firmware.uf2. Чтобы прошить устройство, достаточно зажать комбинацию Left Ctrl + Right Shift + C + O. DeskHop перезагрузится и притворится виртуальным накопителем "DESKHOP", куда нужно просто скинуть .uf2 файл.

Для калибровки высоты перехода между мониторами разного размера предусмотрено сочетание Right Shift + F12 + Y.

Border height difference

Настройка конфигурации сделана с акцентом на безопасность. Никаких веб-серверов или облаков. При входе в режим настройки на виртуальном диске появляется файл config.htm. Вы открываете его локально в Chrome или Yandex Browser и редактируете параметры через WebHID прямо в браузере.

Multiple screens per output

Web Browser with URL

Web Config

Вопросам безопасности автор посвятил отдельный блок:

  • Никакого общего буфера обмена или передачи файлов между системами.
  • Никаких сетевых интерфейсов, Wi-Fi или Bluetooth.
  • Компьютер не может принудительно обновить прошивку устройства без нажатия физических клавиш на клавиатуре.

Ограничения и подвохи

Проект получился отличный, но идеальных вещей не бывает. Перед сборкой стоит знать о нескольких нюансах:

  1. Многомониторные конфигурации. В Windows 10 начиная с обновления KB5003637 сломалось поведение абсолютных координат HID для нескольких мониторов. Курсор может магнитить к первому экрану. В прошивке есть экспериментальные костыли, но проблему пока решают.
  2. Сложная периферия. Клавиатуры с экранами, макро-пады и мыши с 20 дополнительными кнопками могут работать некорректно. Простые офисные и механики без странных экзотических энкодеров работают без проблем.
  3. Питание. Оба компьютера должны подавать питание на свои USB-порты. Если один ПК полностью обесточен, устройство не запустится без подключения внешнего хаба.

Mouse polling rate

Частота опроса мыши достигает 1000 Гц, так что задержек при движении вы не почувствуете.

Стоит ли делать

DeskHop — отличный проект выходного дня для любителей DIY. Если вы работаете за двумя рабочими станциями одновременно и устали от задержек программных KVM или кликов кнопками на китайских коммутаторах, эта коробочка окупает затраченные 15 евро в первый же день. Исходный код C и чертежи печатных плат полностью открыты под лицензией GPL-3.0.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.