>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
C

Come Costruire uno Switch KVM Hardware per 11 Euro Usando Due Schede Raspberry Pi Pico

Hai mai avuto due computer sulla scrivania ma spazio solo per un set di tastiera e mouse? Di solito ci sono due modi per gestire questa situazione. Il primo è basato su software (come Barrier o Input Leap). Ma poi iniziano i problemi: cadute di rete, la VPN aziendale blocca il traffico locale, oppure il tuo computer di lavoro non ti permette di installare software di terze parti. La seconda opzione è uno switch USB economico da AliExpress. Premi un pulsante sulla piccola scatola, aspetti un paio di secondi che il sistema operativo reinizializzi i dispositivi, e ripeti questo decine di volte al giorno.

Lo sviluppatore hrvach si è trovato esattamente in questa situazione frustrante e ha deciso di costruire il proprio hardware. Il progetto si chiama DeskHop. È un dispositivo aperto che passa la tua tastiera e il mouse tra due computer istantaneamente. Puoi passare tramite hotkey o semplicemente trascinando il cursore del mouse oltre il bordo dello schermo, proprio come avere un monitor collegato a due PC.

DeskHop case and board

Come funziona internamente

Il circuito è costruito attorno a due schede Raspberry Pi Pico standard basate sul chip RP2040. Ogni scheda si collega al proprio computer tramite USB. I microcontrollori comunicano tra loro tramite UART attraverso un chip di isolamento galvanico (TI ISO7721DR o ADuM1).

Open Source Hardware Logo

L'isolamento elettrico qui è reale: le linee di massa e di alimentazione dei due PC sono completamente isolate l'una dall'altra. Se un computer si brucia o produce un picco di tensione, l'altro rimane al sicuro.

La magia USB lato host arriva dalla libreria Pico-PIO-USB. Il PIO (programmable I/O) nel chip RP2040 trasforma i normali pin GPIO in porte USB complete. Una scheda Pico funziona come host USB dove colleghi tastiera e mouse, mentre entrambe le schede emulano dispositivi HID standard per i computer collegati.

Passaggio fluido tra schermi

La migliore caratteristica di DeskHop è l'emulazione desktop fluida. Quando sposti il cursore del mouse verso il bordo destro del monitor del primo computer, DeskHop passa istantaneamente il routing del segnale al secondo computer, e il cursore appare sul bordo sinistro del suo schermo alla stessa altezza.

DeskHop Mouse Demo

La tastiera segue automaticamente il mouse. Stai scrivendo codice su Linux, sposti il mouse a destra verso lo schermo Mac, e il tuo prossimo tasto premuto va a macOS.

DeskHop Typing Demo

Per tracciare la posizione del cursore, DeskHop cambia il descrittore del mouse HID in coordinate assolute. Il dispositivo internamente somma i movimenti relativi per calcolare la posizione esatta sullo schermo.

Se passare con il mouse non è comodo, la hotkey Left Ctrl + Caps Lock funziona sempre.

Extra utili e modalità di funzionamento

L'autore ha aggiunto diverse modalità specializzate al firmware per affrontare i problemi comuni quando si lavora con due sistemi:

  • Modalità rallentamento mouse (Right Ctrl + Right Alt). Quando premi la combinazione, la sensibilità del mouse scende bruscamente. Utile quando devi afferrare un singolo pixel in un editor grafico o spostare con precisione un cursore in un video.
  • Modalità gaming (Left Ctrl + Right Shift + G). Le coordinate assolute del mouse rompono i controlli in molti giochi 3D e macchine virtuali. In modalità gaming, DeskHop disabilita il passaggio automatico dello schermo e torna al posizionamento relativo standard.
  • Blocco passaggio (Right Ctrl + K). Blocca il controllo al computer corrente così un movimento accidentale della mano non fa volare il cursore al secondo monitor durante una chiamata.
  • Modalità screensaver (Left Ctrl + Right Shift + S). Il cursore inizia a saltare casualmente intorno allo schermo come una pallina da Pong, impedendo al computer di andare in standby.

Hardware e assemblaggio fai-da-te

Il progetto è stato progettato dall'inizio perché chiunque potesse costruirlo su un tavolo di cucina. Il PCB a due strati usa un numero minimo di componenti.

PCB Image

Componenti per l'assemblaggio (PCB v1.1):

| Componente | Quantità | Prezzo approssimativo | | --- | --- | --- | | Raspberry Pi Pico | 2 pz | ~8,20 € | | Connettore USB-A per scheda | 2 pz | ~0,40 € | | Isolatore TI ISO7721DR | 1 pz | ~1,40 € | | Condensatori e resistori (0805) | 8 pz | ~0,44 € | | Chip di protezione ESD TPD4E1U06DBVR | 2 pz | ~0,62 € |

Il costo totale dei componenti è di circa 11-12 euro. L'involucro si stampa su una stampante 3D in un paio d'ore, e la scheda si incastra senza una singola vite.

DeskHop with 3D Printed Case

Per chi non vuole saldare da sé, i file gerber sono disponibili nel repository. Puoi ordinare una scheda assemblata o un kit da Elecrow.

PCB Assembly Guide

Firmware e configurazione

Puoi compilare il progetto da sorgente usando CMake o Docker:

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

Se compilare da sorgente sembra troppo lavoro, c'è un file UF2 già pronto nella sezione releases. Per flashare il dispositivo, basta tenere premuto BOOT. DeskHop si riavvierà e fingerà di essere un disco virtuale chiamato "DESKHOP" dove basta trascinare il file UF2.

Una combinazione di hotkey Right Shift + F12 + Y è fornita per calibrare l'altezza di transizione tra monitor di dimensioni diverse.

Border height difference

La configurazione è progettata tenendo a mente la sicurezza. Nessun server web o servizi cloud. Quando entri in modalità setup, appare un file CONFIG.TXT sul disco virtuale. Lo apri localmente in Chrome o Yandex Browser e modifichi i parametri tramite WebHID direttamente nel browser.

Multiple screens per output

Web Browser with URL

Web Config

L'autore ha dedicato una sezione separata alle preoccupazioni sulla sicurezza:

  • Nessuna clipboard condivisa o trasferimento file tra i sistemi.
  • Nessuna interfaccia di rete, Wi-Fi o Bluetooth.
  • I computer non possono forzare l'aggiornamento del firmware del dispositivo senza premere pulsanti fisici sulla tastiera.

Limitazioni e inconvenienti

Il progetto è venuto benissimo, ma niente è perfetto. Ecco alcune cose da sapere prima di iniziare a costruire:

  1. Configurazioni multi-monitor. A partire dall'aggiornamento Windows 10 KB5003687, il comportamento delle coordinate HID assolute si è rotto per i monitor multipli. Il cursore potrebbe bloccarsi sul primo schermo. Ci sono workaround sperimentali nel firmware, ma il problema è ancora in fase di risoluzione.
  2. Periferiche complesse. Tastiere con schermi, macro pad e mouse con 20 pulsanti extra potrebbero non funzionare correttamente. Tastiere da ufficio semplici e meccaniche senza encoder esotici funzionano bene.
  3. Alimentazione. Entrambi i computer devono alimentare le loro porte USB. Se un PC è completamente spento, il dispositivo non si avvia senza un hub esterno.

Mouse polling rate

Il polling rate del mouse raggiunge 1.000 Hz, quindi non sentirai alcun ritardo durante i movimenti.

Vale la pena costruirlo?

DeskHop è un ottimo progetto DIY per il fine settimana. Se lavori a due postazioni contemporaneamente e sei stanco dei ritardi del KVM software o di premere pulsanti su cheap Chinese switch, questa piccola scatola si ripaga il primo giorno. Il codice sorgente C e gli schemi PCB sono completamente aperti sotto licenza GPL-3.0.

Progetti correlati