Domanda:
Riattiva il PC Windows tramite evento USB da un Raspberry Pi
seveves
2015-07-13 14:58:07 UTC
view on stackexchange narkive permalink

È possibile riattivare un PC Windows dalla modalità standby / ibernazione tramite un evento USB proveniente da un Raspberry Pi?

Quando il mio PC Windows è in standby e muovo il mouse, il PC si riattiva . Questo è esattamente quello che voglio fare con un'applicazione in esecuzione sul mio Raspberry Pi (se collego il Raspberry Pi alla porta USB del mio PC).

Aggiungerò presto la mia soluzione @ppumkin ... Ho elaborato qualcosa di simile in base alle risposte attuali. Grazie a tutti! Ovviamente accetterò una risposta
Cinque risposte:
#1
+4
Greenonline
2015-07-13 16:06:28 UTC
view on stackexchange narkive permalink

Hai, potenzialmente, tre opzioni:

  • Da USB a USB (non possibile in quanto RPi può agire solo in modalità Host);
  • Da USB ad Arduino a GPIO ( Vedi sotto)
  • Da USB a GPIO (Vedi NOTA)

NOTA: se intendi collegare GPIO a USB, devi utilizza optoaccoppiatori o livellatori di tensione, come il buffer esadecimale 74HC4050, poiché l'USB funziona a 5 V e il GPIO è a 3 V, quindi senza di essi rischieresti di friggere l'RPi

Se usi un Arduino (Leonardo, Due o Micro) come interfaccia, allora sì. Esistono librerie di mouse e tastiera, che consentono ad Arduino di inviare eventi di tasti e / o mouse a RPi.

Se utilizzi un Arduino Pro Mini progettato per funzionare a 3,3 V, i requisiti per gli accoppiatori ottici o i livellatori di tensione sono ridotti. Su instructables.com è disponibile un piano per collegare un Arduino Mini a un RPi, creando una felpa con cappuccio. Ho realizzato questo dispositivo e funziona alla grande.

Hoody - Arduino Micro to a Pi

Dopo aver costruito Hoody, con l'aggiunta di un'interfaccia FTDI a USB e le librerie dovresti essere a posto.

FTDI to USB interface

Arduino Pro Mini collegato a (e alimentato da) una scheda breakout base FTDI SparkFun e USB Cavo Mini-B. Si noti che sulle precedenti schede Pro Mini l'orientamento dell'intestazione a 6 pin può essere invertito; controlla che le parole GRN e BLK siano allineate su Pro Mini e FTDI Basic Breakout.

Come ho già affermato, l'ho già costruito - per meno di £ 10, acquistando materiali da eBay.

Attenzione, prendi un Pro Mini da 3,3 V e NON il 5 V, altrimenti saranno necessari lo spostamento del livello di tensione e gli accoppiatori ottici.

ADDENDUM: Non sono sicuro al 100% che le librerie Tastiera / Mouse funzioneranno con un Pro Mini (poiché richiedono dispositivi 32u4), tuttavia, sarebbe abbastanza facile scrivere uno schizzo che invii i segnali appropriati all'FTDI.

Come David Freitag sottolinea nei commenti seguenti, Pro Micro è compatibile con le librerie e funziona anche a 3,3 V e così farebbe la scelta più adatta.

AGGIORNAMENTO: ho appena acquistato uno di questi cloni 3.3V Pro Micro, da quel noto sito di aste, per scherzare, emulando clic del mouse.

Hm non ho ancora un arduino ma un beaglebone nero. Ma in questo modo sembra molto promettente.
La tua aggiunta è corretta, le librerie USB non funzioneranno per Pro Mini perché utilizza un Atmega328 che non ha periferiche USB. La scheda che avresti dovuto suggerire è la Pro * Micro * 3.3V. https://www.sparkfun.com/products/12587
@DavidFreitag - Apparentemente c'è una certa confusione nella convenzione di denominazione utilizzata dai diversi produttori. Mi riferivo a [Pro Mini 3.3V] (https://www.arduino.cc/en/Main/ArduinoBoardProMini). Per essere onesti, probabilmente sono molto di una cosa, e il punto principale che stavo legando per trasmettere era che l'uso di un Arduino da 3,3 V richiede _logica senza colla _ ... Tuttavia, sì, Pro Micro sarebbe _molto_ più adatto come è compatibile con le librerie di chiavi e mouse. Grazie per la segnalazione. Cercherò di acquistarne uno. :-)
@Greenonline Non c'è davvero una confusione, la stessa parte esiste come un dispositivo Arduino. L'unico problema è che offrono solo un dispositivo 5V. Vedi qui: https://www.arduino.cc/en/Main/ArduinoBoardMicro
#2
+3
Piotr Kamoda
2015-07-13 15:09:12 UTC
view on stackexchange narkive permalink

Leggi questo. Sembra che raspi potrebbe non essere un dispositivo slave (funziona come un mouse - inviare tali dati tramite USB sarà impossibile). Ma ci sono altre opzioni per USB, alcuni PC hanno l'opzione "Wake via LAN", il che significa che è possibile riattivare il PC tramite segnale LAN, come qui.

Naturalmente puoi provare ad abbattere il cavo USB su un'estremità e collegarlo a GPIO. Quindi puoi simulare quello che desideri, ma probabilmente richiede molta conoscenza.
Grazie per la tua risposta ma WoL o altre tecniche non sono consentite per il mio caso d'uso. In qualsiasi altro caso d'uso questa sarebbe anche la mia prima scelta :)
@Piotr - Tuttavia, se hai intenzione di collegare il GPIO a USB, dovresti utilizzare opto-accoppiatori o livellatori di tensione poiché l'USB funziona a 5 V e il GPIO è 3 V, quindi senza di essi corri il rischio di ** friggere ** il RPi
@Greenonline ringrazia per il chiarimento, ma quella era solo una proposta generale, non una soluzione completa.
Utilizzando un mouse esistente (interfaccia nascosta), abbattere il cavo USB e alimentarlo tramite GPIO non funzionerebbe?
@PiotrKamoda - Nessun problema ... La tua idea è davvero buona. Vedi la mia risposta per una soluzione estesa :-)
@Greenonline [tensioni di segnalazione USB] (https://en.wikipedia.org/wiki/USB#Signaling) non sono neanche lontanamente vicino a 5 V. La bassa / piena velocità (comune per HID) arriva fino a 3,6 V (a terra? .. Anche se la differenza potrebbe raggiungere i 7,2 V?), che un Pi dovrebbe essere in grado di gestire. Ho anche la sensazione che semplicemente non funzionerà perché la segnalazione USB è differenziale: nella migliore delle ipotesi, ti divertiresti molto a simularlo su GPIO. Potresti avere più fortuna con una periferica I2C, ma non sono sicuro che ne esista una che possa fungere anche da periferica USB.
@Bob - Grazie per averlo sottolineato. Stavo cercando nel posto sbagliato, la [sezione di alimentazione] (https://en.wikipedia.org/wiki/USB#Power) ...
#3
+3
Ghanima
2015-07-13 15:49:11 UTC
view on stackexchange narkive permalink

In realtà penso che questo sia possibile. Non voglio entrare nei dettagli cosa fare sul lato PC di questo piano, ma per il Pi:

La porta USB dell'RPi è tecnicamente un On-the-go (OTG) chip e dovrebbe supportare un insieme ridotto di funzionalità host e client e potrebbe quindi svolgere il ruolo di uno slave USB come un HID. Tuttavia, i tipi B / B + di RPi non supportano la modalità del dispositivo che è correlata all'hub USB incluso e al fatto che la Ethernet è sottoposta a tunneling tramite USB ( vedi).

Ma ... i dispositivi HID (Human Interface Device) come i mouse necessitano solo dell'USB 1.1 Bassa velocità con una velocità dati di 1,5 MBit / s. Quindi ci sono molte soluzioni là fuori che utilizzano stack USB basati su software per emulare un dispositivo USB. Questi esempi in genere utilizzano microcontrollori che sono molto meno "potenti" del RaspberryPi (ma ovviamente hanno anche un overhead significativamente inferiore). Gli esempi includono l'Igor Plug (un ricevitore per telecomando IR basato su un microcontrollore Atmel) o tastiere "false" basate su microcontrollore o "key logger". Dovrebbe essere davvero possibile farlo con un Pi.

Se crediamo Quanto sono veloci GPIO + DMA? Input I2S multiplo quindi 1,5 MBit / s dovrebbero essere possibili sul GPIO con DMA.

#4
  0
mephisto
2015-07-13 22:56:45 UTC
view on stackexchange narkive permalink

Windows e il bios di molti PC supportano gli eventi di "wake on LAN". Vedere le opzioni del menu del BIOS per vedere cosa c'è. Controlla anche che il tuo router non stia bloccando i messaggi di "riattivazione lan". Come inviarne uno da un raspberryPi B tramite ethernet mi è sconosciuto, ma sono molto più fiducioso che potrebbe di qualsiasi altra cosa usb.

Il motivo è che l'USB ha un'estremità "computer", di solito con il connettore flat-four della cassetta delle lettere e un'estremità "periferica" ​​per la fotocamera e altri dispositivi slave. Tagliare due cavi USB per creare un cavo con doppia terminazione master sarebbe fastidioso e dovrebbe essere non riconosciuto da almeno un'estremità. L'alimentazione micro-usb da 5 V al pi utilizza solo i cavi + 5 V CC e GND con gli altri due non collegati, quindi non perderei tempo a cercare di ottenere dati attraverso di esso.

L'altro modo è scaricare alcune cose sul pi fino a quando non puoi accendere un LED sulla bacheca dai pin GPIO sul pi. Avrai bisogno anche di un transister e impostalo sulla bacheca per cambiare una batteria da 5 V o 6 V e un altro LED. Quando è possibile accendere un dispositivo da 5 V sulla bacheca tramite il GPIO da 3,3 V, saldare alcuni cavi aggiuntivi parallelamente all'interruttore di alimentazione principale sulla parte anteriore del PC. Per la maggior parte del tempo, questi sono +5 e GND, tranne quando viene premuto l'interruttore. Ora, fai in modo che il tuo pi greco si accenda per 0,6 secondi, come se qualcuno avesse appena premuto l'interruttore principale della macchina Windows. Non sono ancora sicuro se questo farà quello che vuoi. Se devi fare lo stesso con un cavo USB il cui master è il PC, potrebbe esserci un modo.

#5
-1
cnnrznn
2015-07-14 04:50:52 UTC
view on stackexchange narkive permalink

Hai già lavorato con la cartella / dev in Linux? In caso contrario, c'è una tabella in questa pagina ( http://www.tldp.org/LDP/intro-linux/html/sect_03_01.html) che descrive bene ogni directory in root (/) .

La cartella / dev contiene i file linux che riguardano i tuoi dispositivi (ad esempio dischi rigidi, monitor, ram, ecc.). Quando colleghi un dispositivo, nel tuo caso l'USB, al computer dovrebbe apparire in questa cartella.

Io:

  1. ls nella cartella / dev prima e dopo aver collegato l'USB dal pi alla macchina Windows per capire quale file in / dev appartiene alla porta USB.

  2. Quindi, scrivi un semplice script per scrivere dati su questo file. Esempio:

    • echo "1234" >> {filename}
  3. Quindi, chiama questo file da un altro programma o ogni volta che vuoi riattivare il pc.

    • Per testarlo potresti digitare il comando manualmente nel terminale.

Vedi se funziona. La mia idea è che l'attività nell'USB attiverà il tuo computer Windows a svegliarsi. Sono curioso quindi se ne avrò la possibilità lo proverò con il mio computer pi / windows.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...