Allumer et éteindre un port 3G (ou tout port USB)?


13

J'ai un projet qui nécessitera l'utilisation d'un Raspberry Pi dans un environnement basse consommation, mais il faudra également une connexion 3G. Je n'ai pas encore fait de tests, mais je suppose (et corrigez-moi si je me trompe) qu'un modem 3G branché sur un Raspberry Pi et connecté à un réseau consommera de l'énergie et, compte tenu de l'environnement, de toute puissance supplémentaire l'utilisation n'est pas obligatoire. Alors, comment, par programme, puis-je allumer et éteindre un modem 3G ou le connecteur USB d'un Raspberry Pi?


1
AFAIK Vous ne pouvez pas désactiver un port USB, il dépendrait donc du dongle 3G ayant un mode d'économie d'énergie - il utilise probablement moins d'énergie lorsqu'il n'est pas connecté ... mais il utilise probablement une quantité raisonnable d'énergie pour se connecter / déconnecter.
Alex Chamberlain

1
Ce sera une unité complètement autonome et distante ... elle devrait allumer et éteindre la 3G au besoin ... il n'y aura personne pour la débrancher ou la brancher ... d'où la partie programmatique ...
TiernanO

3
Comme l'a dit Alex, il n'y a pas de mécanisme pour contrôler l'alimentation des ports USB du Pi à partir du logiciel - ils sont directement connectés au rail d'alimentation avec seulement un limiteur de courant passif. Donc, à moins que vous ne puissiez dire au périphérique lui-même de s'arrêter / de dormir, vous aurez besoin d'un dispositif de commutation d'alimentation externe, que vous contrôlez via USB lui-même ou via une broche GPIO.
Chris Stratton

Réponses:


8

Malheureusement, il n'y a aucun moyen d'éteindre complètement avec un logiciel seul. Vous devrez ajouter un circuit de commutation connecté via les broches GPIO pour déclencher une «déconnexion matérielle» en coupant l'alimentation de votre matériel.

Éditer:

Pour passer avec GPIO, c'est juste un simple circuit à transistors.

entrez la description de l'image ici

Best attaché à votre broche GPIO. Selon qu'il est HAUT ou BAS, le transistor est passant ou non. Cet Evous mettez la ligne d'alimentation sur le périphérique USB (R L ).

Pour des informations plus détaillées, regardez mieux ce site: http://www.kpsec.freeuk.com/trancirc.htm#switching et spécialement sur http://www.kpsec.freeuk.com/trancirc.htm#ic


Pensez-vous pouvoir entrer plus en détail sur la façon de procéder?
Jivings

Sûr. Je vais modifier
Mose

oui c'est bien - vous pouvez mettre ce transistor dans un câble d'extension USB court. Vous devrez le couper et intercepter les lignes électriques dont vous avez parlé ici. Ensuite, vous pouvez brancher la 3G à l'extension et contrôler l'alimentation. Je l'aime +1
Piotr Kula

Cela semble prometteur! Merci! devra avoir une conversation avec mon ami en génie électrique pour aider à cela, mais les doigts croisés! Merci encore!
TiernanO

5

Je ne vous conseillerais pas d'allumer / éteindre un périphérique USB simplement en utilisant un interrupteur à base de transistor car le protocole de mise sous / hors tension et l'interface électrique appropriés doivent être utilisés conformément aux spécifications USB.

Je préfère utiliser un concentrateur USB commutable qui vous permet d'activer / désactiver l'un de ses ports en aval via un logiciel à l'aide d'une simple commande.

Quelque chose comme ce hub USB commutable devrait fonctionner pour ce que vous voulez.


1
Ça a l'air super cool! Je dois essayer ça ... Je pense que cela pourrait aussi être utile pour une recharge intelligente des téléphones ... Hmmm .... Merci!
TiernanO

2
Avertissement: je travaille maintenant chez Yepkit. Vous pouvez donc me considérer comme partial sur ce sujet.
electrfunch

1
Comme un périphérique peut être branché par un utilisateur à tout moment, les spécifications USB stipulent que cela doit être géré par les pilotes et les périphériques. Je ne vois donc pas l'intérêt de dépenser 29 € lorsque vous pouvez construire une électronique simple pour cent avec le même résultat et également soutenu par des spécifications.
Mose

3

Vous pouvez utiliser mon outil uhubctl , il prend en charge les modèles Raspberry Pi B +, 2B, 3B, 3B + et 4B - ces modèles ont la capacité matérielle d'activer et de désactiver l'alimentation USB. Mais gardez à l'esprit que ce matériel ne prend en charge que la désactivation ou l'activation de tous les ports USB à la fois, pas indépendamment. Cependant, les rails d'alimentation USB et Wifi + Ethernet peuvent être contrôlés indépendamment (à l'exception de 4B, qui n'utilise pas d'interface USB pour la mise en réseau).

Utilisez-le comme ceci:

Coupez l'alimentation de tous les ports USB (vous devez utiliser le port 2):

sudo uhubctl -p 2 -a 0

Mettez tous les ports USB sous tension (vous devez utiliser le port 2):

sudo uhubctl -p 2 -a 1

Coupez l'alimentation de Wifi + Ethernet (vous devez utiliser le port 1):

sudo uhubctl -p 1 -a 0

Notez que le Raspberry Pi 4 est très différent des modèles précédents car il possède une puce USB3. Vous utiliseriez une commande comme celle-ci pour éteindre (vous devez utiliser le port 4):

sudo uhubctl -l 2 -p 4 -a 0

Si votre Raspberry Pi ne prend pas en charge la commutation d'alimentation USB, vous pouvez connecter un concentrateur USB externe qui le fait (voir la liste des modèles compatibles ) et contrôler l'alimentation sur ce concentrateur externe en utilisant uhubctl.


2

Salut, je suis d'accord avec @electrfunch car je travaille sur un projet de contrôle de périphériques sur les ports USB. Au lieu du circuit électronique intégré proposé par @Mose, j'ai créé ma propre carte d'isolement à l'aide de relais et ressemble au concentrateur de commutation USB , ce qui est logique car même s'il était initialement ignoré - les courants dans le Raspberry Pi commenceront à devenir un critère sur un plus long qui pourrait affecter vos performances Pi.

Pour ce que je veux dire, vous pouvez consulter ces manuels pour les mesures à faible courant:

Référence 1

Référence 2

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.