Niedawno zbudowałem w pełni funkcjonalny moduł śledzący GPS / GSM IoT z Pi Zero do projektu na uczelnię, a teraz, gdy jest już ukończony, chciałbym zminimalizować aktualny pobór całego systemu, ponieważ dwie baterie 2500 mAh mogą go tylko zasilać najwyżej przez jeden do dwóch dni. Jednak wciąż jestem nowy w tych urządzeniach i chciałbym uzyskać pomoc dotyczącą zmian sprzętu i technik.
Mój cel: urządzenie zdolne do uruchamiania skryptów Pythona, które ma minimalistyczny współczynnik kształtu (szczególnie wysokość) z możliwie najniższym poborem mocy.
Moja obecna konfiguracja wykorzystuje:
- Raspberry Pi Zero
- Adafruit Fona 808 GPS i GSM
- Adafruit LSM303 Akcelerometr i magnetometr
Wiem o zasilaniu Arduinos i MSP430, ale nie wiem, czy można zrobić to, czego potrzebuję, z tymi mikrokontrolerami.
Moje pytania to:
- Jak stroma jest krzywa uczenia się, aby przejść z Raspberry Pi na bardziej pozbawione kości tablice?
- Czy jest możliwe, aby te inne płyty działały jednocześnie z GSM / GPS / akcelerometrem?
- Czy są jakieś inne moduły, które zapewniają tę samą funkcjonalność, ale zużywają mniej energii? (Nie mogę znaleźć konkretnych numerów mocy dla tych modułów)
- Czy moje obecne moduły będą działać na przykład z MSP430?
- Jakieś rekomendacje / komentarze?
hardware
sensors
microcontrollers
raspberry-pi
power-consumption
Byłem zabawny
źródło
źródło
Odpowiedzi:
Zakładam, że wymagania dotyczące przetwarzania na urządzeniu są bliskie zeru. Wygląda na to, że używasz wejścia przyspieszającego, aby określić, jak często budzisz urządzenie GSM.
Najlepiej, jeśli chcesz, aby MCU, które można uruchomić z akcelerometru, obudziło się ze snu, a następnie określiło, kiedy wysłać ping lokalizacji. Każde urządzenie oparte na mikropytonie powinno być dobrym punktem wyjścia.
Jako przykład zmniejszenia poboru mocy przez małą płytkę, mikrobit BBC wydaje się używać kilku miliamperów, gdy wyświetlacz jest wyłączony (pracujący z częstotliwością 16 MHz i przy włączonym wbudowanym akcelerometrze / magentometrze).
Micropython obsługuje funkcję „uśpienia”, ale to zależy od platformy docelowej, ile energii to oszczędza. Realistycznie, dla tego rodzaju aplikacji, wbudowany system operacyjny C ++ nie będzie trudniejszy do kodowania i zapewni większą elastyczność w celu zaoszczędzenia nieco więcej energii.
Pierwszym etapem obliczania zużycia energii jest identyfikacja różnych trybów i przypisanie kosztu energii do każdego zadania. Pozwala to porównać koszt wiadomości GPS / GSM z wyjściową dzienną mocą bezczynności (bez pracy). Następnie możesz zobaczyć, jakie oszczędności są dostępne dla każdego komponentu. Pod warunkiem, że moduł GSM jest aktywny tylko przez kilka minut dziennie, jego zużycie energii może być dość nieznaczne.
źródło
Z mojego doświadczenia wynika, że moduły GSM i GPS pobierają znacznie więcej energii niż procesor. Należy się tego spodziewać, ponieważ oba zawierają wiele obwodów RF, a moduł GSM musi zarówno nadawać, jak i odbierać.
Pierwszym krokiem będzie zmiana konfiguracji prototypu, aby można było monitorować zużycie energii przez każdą część. Gdy już to określisz, prawdopodobnie będziesz musiał zaimplementować zespół obwodów sterowania mocą, aby włączyć moduły GPS i GSM tylko wtedy, gdy jest to wymagane. Im dłużej możesz sobie pozwolić na ich trzymanie z dala, tym lepsza żywotność baterii.
Jednym z problemów zarówno z protokołami GSM, jak i GPS jest to, że jeśli urządzenie jest wyłączone na dłuższy okres czasu, ponowne ustanowienie połączeń zajmuje więcej czasu, co wydłuży czas do pierwszej naprawy GPS i dostępności obwodu danych dla GSM.
źródło
Korzystając z MicroPython, możesz ewentualnie przejść z konsumującego Pi Zero na inną platformę. Oficjalny PyBoard to STM32F405RG, który może być wystarczająco dobry, ale istnieje również wsparcie dla niskiej mocy serii STM32L4.
Obecnie używasz Pi Zero z częstotliwością 1 GHz, aby użyć UART i urządzenia peryferyjnego I2C do połączenia SIM808 i LSM303. Pi zużywa około 80 mA na biegu jałowym, nie mówiąc o tym, kiedy tak nie jest.
Jeśli możesz obniżyć częstotliwość taktowania procesora, możesz również zmniejszyć zużycie energii. Do tego zadania wystarczy kilka MHz.
Możesz więc przejść na PyBoard, który zużywa tylko kilka mA poniżej 10 MHz w trybie pracy z włączonymi wszystkimi urządzeniami peryferyjnymi.
Znacznie mniej 0,4 mA w trybie stop i 2,4 uA w trybie czuwania.
Być może będziesz musiał przenieść swoje skrypty do MicroPython, ale byłoby to łatwiejsze niż przeniesienie ich do C.
źródło