>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C

Jak zbudować sprzętowy przełącznik KVM za 11 euro przy użyciu dwóch płytek Raspberry Pi Pico

Kiedy masz na biurku dwa komputery, a miejsca wystarczy tylko na jedną klawiaturę i mysz? Zazwyczaj są dwa sposoby, aby sobie z tym poradzić. Pierwszy to rozwiązanie programowe (jak Barrier czy Input Leap). Ale wtedy zaczynają się problemy: sieć się rozłącza, korporacyjny VPN blokuje ruch lokalny, albo komputer służbowy nie pozwala na instalację oprogramowania zewnętrznego. Drugą opcją jest tani przełącznik USB z AliExpress. Naciskasz przycisk na małym pudełku, czekasz kilka sekund na ponowną inicjalizację urządzeń przez system operacyjny i powtarzasz to dziesiątki razy dziennie.

Developer hrvach napotkał dokładnie tę frustrację i postanowił zbudować własne urządzenie. Projekt nazywa się DeskHop. To otwarte urządzenie, które błyskawicznie przełącza klawiaturę i mysz między dwoma komputerami. Możesz przełączać za pomocą kombinacji klawiszy lub po prostu przeciągając kursor myszy poza krawędź ekranu, tak jakbyś miał jeden monitor podłączony do dwóch PC-tów.

DeskHop case and board

Jak to działa od środka

Obwód zbudowany jest wokół dwóch standardowych płytek Raspberry Pi Pico opartych na chipie RP2040. Każda płytka podłączona jest do swojego komputera przez USB. Mikrokontrolery komunikują się ze sobą przez UART za pomocą chipa izolacji galwanicznej (TI ISO7721DR lub ADuM1).

Open Source Hardware Logo

Izolacja zasilania jest tutaj prawdziwa: linie masy i zasilania dwóch PC-tów są całkowicie odizolowane od siebie. Jeśli jeden komputer się spali lub wygeneruje przepięcie, drugi pozostaje bezpieczny.

Magia USB po stronie hosta pochodzi z biblioteki Pico-PIO-USB. Programowalny interfejs I/O (PIO) w chipie RP2040 zamienia zwykłe piny GPIO w pełnoprawne porty USB. Jedna płytka Pico działa jako host USB, do którego podłączasz klawiaturę i mysz, podczas gdy obie płytki emulują standardowe urządzenia HID dla podłączonych komputerów.

Bezproblemowe przełączanie ekranów

Najlepszą funkcją DeskHop jest bezproblemowa emulacja pulpitu. Gdy przesuwasz kursor myszy do prawej krawędzi monitora pierwszego komputera, DeskHop natychmiast przełącza routing sygnału do drugiego komputera, a kursor pojawia się na lewej krawędzi jego ekranu na tej samej wysokości.

DeskHop Mouse Demo

Klawiatura automatycznie podąża za myszą. Piszesz kod na Linuksie, przesuwasz mysz w prawo na ekran Maca, a następne naciśnięcie klawisza trafia do macOS.

DeskHop Typing Demo

Aby śledzić pozycję kursora, DeskHop przełącza deskryptor myszy HID na współrzędne bezwzględne. Urządzenie wewnętrznie sumuje ruchy względne, aby obliczyć dokładną pozycję na ekranie.

Jeśli przełączanie myszą nie jest wygodne, kombinacja klawiszy Left Ctrl + Caps Lock zawsze działa.

Przydatne dodatki i tryby pracy

Autor dodał do firmware'u kilka specjalnych trybów, aby rozwiązać częste problemy przy pracy z dwoma systemami:

  • Tryb spowolnienia myszy (Right Ctrl + Right Alt). Gdy naciśniesz kombinację, czułość myszy gwałtownie spada. Przydatne, gdy musisz chwycić pojedynczy piksel w edytorze graficznym lub precyzyjnie przesunąć suwak w wideo.
  • Tryb gier (Left Ctrl + Right Shift + G). Bezwzględne współrzędne myszy psują sterowanie w wielu grach 3D i maszynach wirtualnych. W trybie gier DeskHop wyłącza automatyczne przełączanie ekranów i wraca do standardowego pozycjonowania względnego.
  • Blokada przełączania (Right Ctrl + K). Blokuje sterowanie na bieżącym komputerze, więc przypadkowy ruch ręki nie wyśle kursora na drugi monitor podczas rozmowy.
  • Tryb wygaszacza ekranu (Left Ctrl + Right Shift + S). Kursor zaczyna losowo skakać po ekranie jak piłeczka w Pongu, zapobiegając przejściu komputera w tryb uśpienia.

Sprzęt i samodzielny montaż

Projekt od początku był zaprojektowany tak, aby każdy mógł go zbudować na kuchennym stole. Dwuwarstwowy PCB wykorzystuje minimalną liczbę komponentów.

PCB Image

Komponenty do montażu (PCB v1.1):

| Komponent | Ilość | Przybliżona cena | | --- | --- | --- | | Raspberry Pi Pico | 2 szt. | ~8,20 € | | Złącze USB-A na płytkę | 2 szt. | ~0,40 € | | Izolator TI ISO7721DR | 1 szt. | ~1,40 € | | Kondensatory i rezystory (0805) | 8 szt. | ~0,44 € | | Chipy ochronne ESD TPD4E1U06DBVR | 2 szt. | ~0,62 € |

Całkowity koszt komponentów wynosi około 11-12 euro. Obudowa drukuje się na drukarce 3D w ciągu kilku godzin, a płytka wskakuje na miejsce bez żadnej śruby.

DeskHop with 3D Printed Case

Dla tych, którzy nie chcą lutować samodzielnie, pliki gerber są dostępne w repozytorium. Możesz zamówić zmontowaną płytkę lub zestaw od Elecrow.

PCB Assembly Guide

Firmware i konfiguracja

Możesz zbudować projekt ze źródeł za pomocą CMake lub Docker:

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

Jeśli budowanie ze źródeł wydaje się zbyt dużym nakładem pracy, w sekcji releases znajduje się gotowy plik firmware.uf2. Aby wgrać firmware, wystarczy przytrzymać przycisk Left Ctrl + Right Shift + C + O. DeskHop uruchomi się ponownie i będzie udawać wirtualny dysk o nazwie "DESKHOP", gdzie wystarczy upuścić plik .uf2.

Kombinacja klawiszy Right Shift + F12 + Y służy do kalibracji wysokości przejścia między monitorami o różnych rozmiarach.

Border height difference

Konfiguracja została zaprojektowana z myślą o bezpieczeństwie. Żadnych serwerów WWW ani usług chmurowych. Gdy wchodzisz w tryb konfiguracji, na wirtualnym dysku pojawia się plik config.htm. Otwierasz go lokalnie w Chrome lub Yandex Browser i edytujesz parametry przez WebHID bezpośrednio w przeglądarce.

Multiple screens per output

Web Browser with URL

Web Config

Autor poświęcił osobną sekcję kwestiom bezpieczeństwa:

  • Brak współdzielonego schowka lub transferu plików między systemami.
  • Brak interfejsów sieciowych, Wi-Fi ani Bluetooth.
  • Komputery nie mogą wymusić aktualizacji firmware'u urządzenia bez naciśnięcia fizycznych przycisków na klawiaturze.

Ograniczenia i haczyki

Projekt wyszedł świetnie, ale nic nie jest idealne. Oto kilka rzeczy, które warto wiedzieć przed rozpoczęciem budowy:

  1. Konfiguracje z wieloma monitorami. Począwszy od aktualizacji Windows 10 KB5003637, zachowanie bezwzględnych współrzędnych HID zostało zepsute dla wielu monitorów. Kursor może utknąć na pierwszym ekranie. W firmware'ze istnieją eksperymentalne obejścia, ale problem wciąż jest rozwiązywany.
  2. Złożone urządzenia peryferyjne. Klawiatury z ekranami, pady makr i myszy z 20 dodatkowymi przyciskami mogą nie działać poprawnie. Proste klawiatury biurowe i mechaniczne bez egzotycznych enkoderów działają bez problemu.
  3. Zasilanie. Oba komputery muszą dostarczać zasilanie do swoich portów USB. Jeśli jeden PC jest całkowicie wyłączony, urządzenie nie uruchomi się bez zewnętrznego huba.

Mouse polling rate

Częstotliwość odświeżania myszy sięga 1000 Hz, więc nie odczujesz żadnego opóźnienia podczas ruchu.

Czy warto to zrobić?

DeskHop to świetny projekt DIY na weekend. Jeśli pracujesz jednocześnie przy dwóch stanowiskach i masz dość opóźnień programowych przełączników KVM lub klikania przycisków na tanich chińskich przełącznikach, to małe pudełko zwraca się w pierwszym dniu. Kod źródłowy w C i schematy PCB są w pełni otwarte na licencji GPL-3.0.

Powiązane projekty