Accendere e spegnere una porta 3G (o qualsiasi porta USB)?


13

Ho un progetto che richiederà l'utilizzo di un Raspberry Pi in un ambiente a bassa potenza, ma richiederà anche una connessione 3G. Non ho ancora fatto alcun test, ma sono supposto (e correggimi se sbaglio) che un modem 3G collegato a un Raspberry Pi e collegato a una rete consumerà energia e, dato l'ambiente, qualsiasi potenza extra l'utilizzo non è un requisito. Quindi, come a livello di codice, posso accendere e spegnere un modem 3G o il connettore USB su un Raspberry Pi?


1
AFAIK Non è possibile disattivare una porta USB, quindi farebbe affidamento sul dongle 3G con una modalità di risparmio energetico: probabilmente utilizza meno energia quando non è collegato ... ma probabilmente utilizza una quantità ragionevole di energia per connettersi / disconnettersi.
Alex Chamberlain,

1
il fatto è che questa sarà un'unità completamente autonoma e remota ... dovrebbe accendere e spegnere il 3G secondo necessità ... non ci sarà nessuno lì a scollegarlo o collegarlo ... da qui la parte programmatica ...
TiernanO,

3
Come ha detto Alex, non esiste alcun meccanismo per controllare l'alimentazione delle porte USB del Pi dal software: sono direttamente collegati alla guida di alimentazione con solo un limitatore di corrente passiva. Quindi, a meno che non si possa dire alla periferica stessa di spegnersi / spegnersi, è necessario un dispositivo di commutazione dell'alimentazione esterno, che si controlla tramite USB stesso o tramite un pin GPIO.
Chris Stratton,

Risposte:


8

Purtroppo non c'è modo di spegnersi completamente con il solo software. Sarà necessario aggiungere un circuito di commutazione collegato tramite i pin GPIO per attivare una "disconnessione hardware" tagliando l'alimentazione all'hardware.

Modificare:

Per passare con GPIO è solo un semplice circuito a transistor.

inserisci qui la descrizione dell'immagine

Bè collegato al pin GPIO. A seconda che sia ALTO o BASSO il transistor è acceso o spento. Ce Esi mette la linea di alimentazione sul dispositivo USB (R L ).

Per informazioni più dettagliate guardare meglio questo sito: http://www.kpsec.freeuk.com/trancirc.htm#switching e specialmente su http://www.kpsec.freeuk.com/trancirc.htm#ic


Pensi di poter approfondire come fare?
Jivings,

Sicuro. Modificherò
Mosè il

sì, puoi mettere quel transistor in una breve prolunga USB. Dovrai tagliarlo e intercettare le linee elettriche qui parlate. Quindi è possibile collegare 3G nell'estensione e controllare l'alimentazione. Mi piace +1
Piotr Kula,

Sembra promettente! Grazie! dovrò fare una chiacchierata con il mio amico di ingegneria elettrica per aiutarlo, ma incrociamo le dita! Grazie ancora!
Tiernan,

5

Non consiglierei di accendere / spegnere un dispositivo USB semplicemente usando un interruttore di base a transistor perché si dovrebbero usare il protocollo di accensione / spegnimento e l'interfaccia elettrica adeguati come definito dalle specifiche USB.

Preferirei utilizzare un hub USB commutabile che ti consente di accendere / spegnere qualsiasi delle sue porte a valle attraverso il software usando un semplice comando.

Qualcosa di simile a questo hub commutabile USB dovrebbe funzionare per quello che vuoi.


1
Sembra fantastico! Devo provarlo ... Sto pensando che potrebbe essere utile anche per la ricarica intelligente dei telefoni ... Hmmm .... Grazie!
Tiernan,

2
Disclaimer: ora lavoro a Yepkit. Quindi potresti considerarmi di parte su questo argomento.
elettrfunch

1
Poiché un dispositivo può essere collegato da un utente in qualsiasi momento, le specifiche USB indicano che questo deve essere gestito da driver e dispositivi. Quindi non vedo il punto di spendere 29 € quando puoi costruire elettronica semplice per centesimi con lo stesso risultato e anche supportato da specifiche.
Mose,

3

Puoi usare il mio strumento uhubctl , supporta i modelli Raspberry Pi B +, 2B, 3B, 3B + e 4B - questi modelli hanno la capacità hardware di spegnere e accendere l'USB. Ma tieni presente che questo hardware supporta solo lo spegnimento o tutte le porte USB contemporaneamente, non in modo indipendente. Tuttavia, le rotaie di alimentazione USB e Wifi + Ethernet possono essere controllate in modo indipendente (ad eccezione di 4B, che non utilizza l'interfaccia USB per la rete).

Usalo in questo modo:

Spegnere tutte le porte USB (è necessario utilizzare la porta 2):

sudo uhubctl -p 2 -a 0

Accendi tutte le porte USB (devi utilizzare la porta 2):

sudo uhubctl -p 2 -a 1

Spegni Wi-Fi + Ethernet (devi utilizzare la porta 1):

sudo uhubctl -p 1 -a 0

Si noti che Raspberry Pi 4 è molto diverso dai modelli precedenti in quanto ha un chip USB3. Utilizzerai questo comando per spegnere (devi usare la porta 4):

sudo uhubctl -l 2 -p 4 -a 0

Se il tuo Raspberry Pi non supporta la commutazione dell'alimentazione USB, puoi collegare un hub USB esterno che lo fa (vedi l'elenco dei modelli compatibili ) e controllare l'alimentazione su tale hub esterno utilizzando uhubctl.


2

Ciao, sono d'accordo con @electrfunch poiché sto lavorando a un progetto di controllo dei dispositivi sulle porte USB. Invece del circuito elettronico di bordo proposto da @Mose, ho creato la mia scheda di isolamento utilizzando i relè e sembra simile all'hub switch USB e questo ha senso dal momento che, sebbene inizialmente ignorato, le correnti all'interno del Raspberry Pi inizieranno a diventare un criterio su un corsa più lunga che potrebbe influire sulle prestazioni del Pi.

Per quello che intendo, potresti fare riferimento a questi manuali per misurazioni a bassa corrente:

Riferimento 1

Riferimento 2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.