Ligar e desligar uma porta 3G (ou qualquer USB)?

13

Eu tenho um projeto que exigirá o uso de um Raspberry Pi em um ambiente de baixo consumo de energia, mas também exigirá uma conexão 3G. Ainda não testei, mas estou sob a suposição (e me corrija se estiver errado) de que um modem 3G conectado a um Raspberry Pi e conectado a uma rede consumirá energia e, ao ambiente, qualquer energia extra o uso não é obrigatório. Então, como, programaticamente, posso ligar e desligar um modem 3G ou o conector USB em um Raspberry Pi?

TiernanO
fonte
1
AFAIK Você não pode desligar uma porta USB, portanto, o dongle 3G tem um modo de economia de energia - provavelmente usa menos energia quando não está conectado ... mas provavelmente usa uma quantidade razoável de energia para conectar / desconectar.
Alex Chamberlain
1
o problema é que essa será uma unidade completamente autônoma e remota ... deve ligar e desligar o 3G conforme necessário ... não haverá ninguém para desconectá-lo ou conectá-lo ... daí a parte programaticamente ...
TiernanO 12/10/12
3
Como Alex disse, não há mecanismo para controlar a energia das portas USB do Pi a partir do software - elas são conectadas diretamente ao trilho de suprimento com apenas um limitador de corrente passivo. Portanto, a menos que você possa dizer ao próprio periférico para desligar / adormecer, precisará de um dispositivo externo de comutação de energia, que você controla pela própria USB ou por meio de um pino GPIO.
22612 Chris Stratton

Respostas:

8

Infelizmente, não há como desligar totalmente o software sozinho. Você precisará adicionar um circuito de comutação conectado pelos pinos do GPIO para acionar uma "desconexão do hardware" cortando a energia do seu hardware.

Editar:

Para mudar com o GPIO, é apenas um circuito de transistor simples.

insira a descrição da imagem aqui

Bestá anexado ao seu pino GPIO. Dependendo se é ALTO ou BAIXO, o transistor está ligado ou desligado. Ce Evocê coloca a linha de força no dispositivo USB (R L ).

Para obter informações mais detalhadas, consulte este site: http://www.kpsec.freeuk.com/trancirc.htm#switching e especialmente em http://www.kpsec.freeuk.com/trancirc.htm#ic

Mose
fonte
Pense que você poderia entrar em mais detalhes sobre como fazer isso?
Jivings
Certo. Eu vou editar
Mose
sim, isso é bom - você pode colocar esse transistor em um curto cabo de extensão USB. Você precisará abri-lo e interceptar as linhas de energia mencionadas aqui. Em seguida, você pode conectar o 3G à extensão e controlar a energia. Eu gosto +1
Piotr Kula
Isso parece promissor! Obrigado! terá que ter uma conversa com meu amigo de engenharia elétrica para ajudar com isso, mas dedos cruzados! Obrigado novamente!
TiernanO
5

Eu não aconselho que você LIGUE / DESLIGUE um dispositivo USB apenas usando uma chave de base do transistor, pois o protocolo ON / OFF de alimentação e a interface elétrica adequados devem ser usados ​​conforme definido pelas especificações USB.

Prefiro usar um hub USB comutável que permita ativar / desativar qualquer uma de suas portas downstream através do software usando um comando simples.

Algo como este hub comutável USB deve funcionar para o que você deseja.

electrfunch
fonte
1
Isso parece tão legal! Eu tenho que tentar isso ... Estou pensando que isso também pode ser útil para carregamento inteligente de telefones ... Hmmm .... Obrigado!
precisa saber é o seguinte
2
Disclaimer: Agora estou trabalhando no Yepkit. Então você pode me considerar tendencioso sobre esse assunto.
electrfunch
1
Como um dispositivo pode ser conectado por um usuário a qualquer momento, as especificações USB indicam que isso deve ser tratado por drivers e dispositivos. Portanto, não vejo o objetivo de gastar 29 € quando você pode criar eletrônicos simples por centavos com o mesmo resultado e também com especificações.
mose
3

Você pode usar minha ferramenta uhubctl , ela suporta os modelos Raspberry Pi B +, 2B, 3B, 3B + e 4B - esses modelos possuem capacidade de hardware para desligar e ligar a energia USB. Mas lembre-se de que este hardware suporta apenas desligar ou ligar todas as portas USB de uma só vez, não de forma independente. No entanto, os trilhos de alimentação USB e Wifi + Ethernet podem ser controlados independentemente (exceto o 4B, que não usa a interface USB para rede).

Use-o assim:

Desligue a energia de todas as portas USB (deve usar a porta 2):

sudo uhubctl -p 2 -a 0

Ligue a energia de todas as portas USB (deve usar a porta 2):

sudo uhubctl -p 2 -a 1

Desligue a energia do Wifi + Ethernet (deve usar a porta 1):

sudo uhubctl -p 1 -a 0

Observe que o Raspberry Pi 4 é muito diferente dos modelos anteriores, pois possui chip USB3. Você usaria um comando como este para desligar (deve usar a porta 4):

sudo uhubctl -l 2 -p 4 -a 0

Se o seu Raspberry Pi não suportar comutação de energia USB, você poderá conectar um hub USB externo compatível (consulte a lista de modelos compatíveis ) e controlar a energia nesse hub externo usando uhubctl.

mvp
fonte
2

Oi Concordo com @electrfunch, pois estou trabalhando em um projeto de controle de dispositivos nas portas USB. Em vez do circuito eletrônico integrado proposto pelo @Mose, criei minha própria placa de isolamento usando relés e parecido com o USB Switch Hub, e isso faz sentido, pois, embora inicialmente ignorado, as correntes no Raspberry Pi começarão a se tornar um critério em um execução mais longa, o que pode afetar o desempenho do seu Pi.

Para o que quero dizer, você pode consultar estes manuais para medições de baixa corrente:

Referência 1

Referência 2

Shan-Desai
fonte