Włączanie i wyłączanie portu 3G (lub dowolnego portu USB)?

13

Mam projekt, który będzie wymagał użycia Raspberry Pi w środowisku o niskim poborze mocy, ale wymaga również połączenia 3G. Nie wykonałem jeszcze żadnych testów, ale zakładam (i poprawię, jeśli się mylę), że modem 3G podłączony do Raspberry Pi i podłączony do sieci będzie zużywał moc, a biorąc pod uwagę otoczenie, każdą dodatkową moc użycie nie jest wymagane. Jak więc programowo mogę włączyć i wyłączyć modem 3G lub złącze USB w Raspberry Pi?

TiernanO
źródło
1
AFAIK Nie można wyłączyć portu USB, więc polegałby on na tym, że klucz 3G ma tryb oszczędzania energii - prawdopodobnie zużywa mniej energii, gdy nie jest podłączony ... ale prawdopodobnie zużywa rozsądną ilość energii do łączenia / rozłączania.
Alex Chamberlain,
1
Chodzi o to, że będzie to całkowicie autonomiczna i zdalna jednostka ... powinna w razie potrzeby włączać i wyłączać 3G ... nie będzie nikogo, kto mógłby ją odłączyć lub podłączyć ... stąd część programowa ...
TiernanO
3
Jak powiedział Alex, nie ma mechanizmu kontrolującego zasilanie portów USB Pi z poziomu oprogramowania - są one bezpośrednio podłączone do szyny zasilającej za pomocą tylko pasywnego ogranicznika prądu. Więc jeśli nie możesz powiedzieć samemu urządzeniu peryferyjnemu, aby zamknęło się / uśpiło, będziesz potrzebować zewnętrznego urządzenia do przełączania zasilania, które kontrolujesz przez sam USB lub przez pin GPIO.
Chris Stratton

Odpowiedzi:

8

Niestety nie ma możliwości pełnego wyłączenia samego oprogramowania. Konieczne będzie dodanie obwodu przełączającego podłączonego przez styki GPIO, aby wyzwolić „odłączenie sprzętu” poprzez odcięcie zasilania sprzętu.

Edytować:

Przełączanie za pomocą GPIO to tylko prosty obwód tranzystorowy.

wprowadź opis zdjęcia tutaj

Bjest podłączony do pinu GPIO. W zależności od tego, czy jest WYSOKI, czy NISKI, tranzystor jest włączony lub wyłączony. Ci Epodłączasz linię zasilania do urządzenia USB (R L ).

Aby uzyskać bardziej szczegółowe informacje, lepiej zajrzyj na tę stronę: http://www.kpsec.freeuk.com/trancirc.htm#switching, a zwłaszcza na http://www.kpsec.freeuk.com/trancirc.htm#ic

Mojżesz
źródło
Myślisz, że możesz bardziej szczegółowo opisać, jak to zrobić?
Jivings,
Pewnie. Zmienię
Mose,
tak, to dobrze - możesz umieścić ten tranzystor w krótkim przedłużaczu USB. Musisz go rozciąć i przechwycić mówione tutaj linie energetyczne. Następnie możesz podłączyć 3G do rozszerzenia i kontrolować zasilanie. Lubię to +1
Piotr Kula,
To wygląda obiecująco! Dzięki! będę musiał porozmawiać z moim przyjacielem inżynierii elektrycznej, aby pomóc w tym, ale kciuki! Dzięki jeszcze raz!
TiernanO
5

Nie radzę włączać / wyłączać urządzenia USB tylko za pomocą przełącznika bazowego tranzystora, ponieważ należy używać właściwego protokołu włączania / wyłączania zasilania i interfejsu elektrycznego zgodnie ze specyfikacją USB.

Wolałbym używać przełączalnego koncentratora USB, który pozwala włączyć / wyłączyć dowolny z portów pobierania danych za pomocą oprogramowania za pomocą prostego polecenia.

Coś w rodzaju przełączanego koncentratora USB powinno działać tak, jak chcesz.

electrfunch
źródło
1
To wygląda super! Muszę spróbować ... Myślę, że może to być przydatne do inteligentnego ładowania telefonów ... Hmmm .... Dzięki!
TiernanO,
2
Oświadczenie: Teraz pracuję w Yepkit. Możesz więc uznać mnie za stronniczego w tym temacie.
electrfunch
1
Ponieważ urządzenie może być podłączone przez użytkownika w dowolnym momencie, specyfikacje USB wskazują, że muszą to obsługiwać sterowniki i urządzenia. Nie widzę więc sensu wydawania 29 €, kiedy można zbudować prostą elektronikę za centy z takim samym wynikiem, a także popartą specyfikacjami.
Mose
3

Możesz użyć mojego narzędzia uhubctl , obsługuje modele Raspberry Pi B +, 2B, 3B, 3B + i 4B - modele te mają sprzętową zdolność do włączania i wyłączania zasilania USB. Należy jednak pamiętać, że ten sprzęt obsługuje tylko wyłączanie lub włączanie wszystkich portów USB jednocześnie, a nie niezależnie. Jednak szynami zasilania USB i Wifi + Ethernet można sterować niezależnie (z wyjątkiem 4B, który nie używa interfejsu USB do pracy w sieci).

Użyj tego w ten sposób:

Wyłącz zasilanie wszystkich portów USB (musisz użyć portu 2):

sudo uhubctl -p 2 -a 0

Włącz zasilanie wszystkich portów USB (musisz użyć portu 2):

sudo uhubctl -p 2 -a 1

Wyłącz zasilanie Wi-Fi + Ethernet (musisz użyć portu 1):

sudo uhubctl -p 1 -a 0

Pamiętaj, że Raspberry Pi 4 bardzo różni się od poprzednich modeli, ponieważ ma układ USB3. Użyłbyś takiego polecenia, aby wyłączyć zasilanie (musisz użyć portu 4):

sudo uhubctl -l 2 -p 4 -a 0

Jeśli Twój Raspberry Pi nie obsługuje przełączania zasilania USB, możesz podłączyć zewnętrzny hub USB, który to robi (patrz lista kompatybilnych modeli ) i kontrolować zasilanie tego zewnętrznego hubu za pomocą uhubctl.

mvp
źródło
2

Cześć Zgadzam się z @electrfunch, ponieważ pracuję nad projektem sterowania urządzeniami na portach USB. Zamiast wbudowanego obwodu elektronicznego zaproponowanego przez @Mose, stworzyłem własną płytkę izolacyjną za pomocą przekaźników i wygląda podobnie do koncentratora przełączników USB i ma to sens, ponieważ początkowo zignorowany - Prądy w Raspberry Pi zaczną być kryterium na dłuższy bieg, co może wpłynąć na wydajność Pi.

Dla tego, co mam na myśli, możesz zapoznać się z tymi instrukcjami dotyczącymi pomiarów niskiego prądu:

Odniesienie 1

Odnośnik 2

Shan-Desai
źródło