Wybór mikrokontrolera dla projektu gromadzenia danych na baterie


18

Planuję mierzyć poziom wody w studni o głębokości około 10 m przy maksymalnym poziomie wody do 5 m. Moim planem jest użycie czujnika ultradźwiękowego HC SR04 do pomiaru głębokości, przesłanie go przez ZigBee do Raspberry Pi w moim domu.

Jak omówiono w poprzednim pytaniu , muszę wybrać mikrosterownik, aby połączyć czujnik ultradźwiękowy i moduł ZigBee.

Parametry do wyboru to:

  1. Niska moc: Planuję uruchomić to na baterii, więc niskie zużycie energii jest priorytetem. Na razie nie mam żadnych celów dotyczących zużycia energii ani dni między wymianami baterii, ani nawet której baterii użyć. Ponieważ jest to bardziej projekt edukacyjny i jest w moim domu, jestem elastyczny, ale niższe zużycie energii jest lepsze.

  2. Niski koszt: To dla mnie projekt edukacyjny i nie chcę wydawać na to skandalicznej kwoty, więc niższy koszt jest lepszy.

  3. Praca wewnątrz studni: Cały projekt będzie działał od wewnątrz studni i będzie narażony na ostre światło słoneczne i deszcz. Zapewnię jednak dobrą sprawę i ochronę.

  4. Łatwy do zaprogramowania.

Wybrałem ZigBee, ponieważ jest prosty, spełnia mój przypadek użycia i ma niską moc. Ale moim wymaganiem jest transport danych z czujnika i jestem otwarty na inne transporty. Odległość od mojej studni do Raspberry Pi wynosi około 6 metrów ze ścianą pośrodku. Planuję mierzyć głębokość wody co 10 minut i dwa razy na minutę, gdy pompa wodna pracuje (około 20 minut dziennie).


2
Wydaje się to dość szerokie, a może nie na temat. Każde małe MCU na płycie byłoby odpowiednie. Jeśli nie zdecydowałeś się na Zigbee, proponuję spojrzeć na BBC micro: bit, który ma BLE na pokładzie i złącze baterii.
Sean Houlihane

2
Jeśli chcesz radio zigbee, powinieneś przynajmniej ocenić części, które łączą to z procesorem MCU (zazwyczaj ARM Cortex-M). Nie oznacza to, że musisz iść tą drogą, ale jeśli zdecydujesz się tego nie robić, powinieneś mieć dobry powód.
Chris Stratton

2
Co rozumiesz przez „wnętrze studni”? Czy skrzynia będzie pod wodą? Nie należy oczekiwać transmisji ani odbioru z modułów Xbee pod wodą. Wielu działa w paśmie 2,4 GHz, które jest dobrze absorbowane przez wodę; inne działają na częstotliwości około 900 MHz, co prawdopodobnie również nie może dobrze penetrować wody. Jeśli obudowa nie znajduje się pod wodą, ściana 6 m + powinna być w porządku z xbees.
Jonas Schäfer

„w studni” oznacza, że ​​urządzenie zostanie umieszczone w studni, ale nad wodą.
Raj

Odpowiedzi:


20

Ogólny proces wyboru mikrokontrolera.

  1. Podsumuj swoje wymagania względem mikrokontrolera. Na przykład w tym przypadku:

    • 1 sprzętowy zegar do pomiaru czasu między impulsami wyzwalania i echa.
    • 2 piny GPIO do interfejsu czujnika Echo i piny Trigger.
    • Prawdopodobnie UART do połączenia modułu komunikacyjnego RF.
    • 1 wejście ADC do monitorowania napięcia akumulatora.


    Możesz do tego dogadać się z 8-pinowym kontrolerem, co może wymagać użycia pinów programatora również do celów ogólnych.

  2. Wybierz wymaganą wydajność procesora i wymagania dotyczące pamięci . Czy wystarczy użyć 8-bitowego MCU, czy zamiast tego potrzebujesz 32-bitowego? Jakie prędkości taktowania procesora są wystarczające? Wystarczy dziesiątki MHz lub 1 MHz? Ile potrzeba pamięci programu, pamięci RAM i ROM?

    Biorąc pod uwagę opisaną aplikację, nie potrzebujesz wysokiej wydajności obliczeniowej. Prawdopodobnie wystarczy 8-bitowy kontroler (choć nie będzie znacznie tańszy niż 32-bitowy, więc możesz tu zdecydować o cenie).

  3. Niski pobór mocy . Gdy nie ma to większego znaczenia, prawdopodobnie możesz dogadać się z prawie każdym rodzajem kontrolera, używając jego trybu niskiej mocy z najniższym napięciem zasilania i częstotliwością zegara systemowego. Jeśli jest to ważniejsze, możesz zacząć zawężać listę wyszukiwania, zaczynając od dedykowanych rdzeni MCU o niskiej mocy, takich jak (rdzenie ARM® Cortex®-M0 lub M0 + CPU). Zwykle arkusze danych zawierają tabele dla większości trybów niskiej mocy / częstotliwości VCC / SysClk , lepsze będą wyświetlać również zużycie każdego urządzenia peryferyjnego.

  4. Narzędzia programistyczne . Uważam to za bardzo ważny aspekt. Dedykowane narzędzia programistyczne mogą kosztować fortunę, więc zwykle trzymam się MCU, dla których już miałem programistów. Po przejściu na inną rodzinę lub markę dobrze jest zainwestować w płytę programistyczną, która ma wbudowany programator, którego można później użyć do zaprogramowania własnych kart. Zasadniczo zawsze najpierw sprawdź, ile będzie kosztowało pobieranie programów do mikrokontrolera.

Jak zauważył @Sean w komentarzach, możliwym i opłacalnym rozwiązaniem byłoby poszukiwanie takich modułów RF, które są dostarczane ze zintegrowaną, programowalną aplikacją MCU, która może uruchamiać oprogramowanie układowe również podczas obsługi części komunikacyjnej RF. Takie moduły istnieją dla BLE, WiFi i ZigBee i ewentualnie dla wielu innych technologii.

Ponadto, o tym, jak MCU przetrwa w studni. Wszystko sprowadza się do obudowy, którą dostaniesz dla urządzenia. Na przykład nie będzie miało większego znaczenia, który MCU wybierzesz, jeśli obudowa nie będzie w 100% wodoodporna.


TL; DR; Oto część dotycząca konkretnego produktu.

  1. Możesz wybrać ATtiny25, który kosztuje Farne 0,83 $ / 1 sztukę . 8-bit, 8-pin, więc nie zajmie dużo miejsca. W trybie wyłączania pobiera 0,2 μA z wyłączonym watchdog, przy 3 V. 2-4 μA, jeśli watchdog jest włączony. Jest kompatybilny z Arduino, więc programowanie nie kosztuje dużo (programator USBasp lub AVRdude kosztuje około 2 $ na eBayu). ( Pamiętaj, że : powinieneś użyć biblioteki Arduino Software Serial do interfejsu modułu komunikacyjnego RF, ponieważ ten MCU ma tylko SPI sprzętowo). W sumie jest mały, tani, przy stosunkowo niskim zużyciu energii, ale UART z bitami komplikuje to . Ma pamięć programu 2 kB, która powinna ci wystarczyć.

  2. Lub zastosuj ARM Cortex M0, który zużywa 2 μA w trybie gotowości i 5 μA w trybie zatrzymania. Takim MCU jest na przykład STM32F030F4, który kosztuje 1,09 $ / 1 sztukę . Jest to mocniejszy 32-bitowy kontroler z maksymalną częstotliwością taktowania systemu 48 MHz, ale jak widać tylko za + 0,2 $. Dostarczany jest z pamięcią programu 16 kB, znacznie więcej niż wystarcza do wykonania tego prostego zadania. Ma SPI, UART, I2C i wiele innych urządzeń peryferyjnych. Programowanie będzie kosztować więcej, dedykowany programista kosztuje 20 $ w Farnell. Moim zdaniem nie warto. Zamiast tego możesz zainwestować w płytę programistyczną dla rodziny F0, która ma wbudowany programator (ST-LINK) . STM32F0Discovery Board kosztuje ~ 10 $. Za pomocą tej płyty możesz rozpocząć prototypowanie i użyć go jako programisty później.


3
Zauważ, że ST-LINK odkrywczych i nukleonowych płyt może być często używany do innych MCU niż te na samej płytce. Nie jestem pewien co do tej konkretnej planszy, ale wygląda na to, że używa SWD i można ją odłączyć za pomocą zworek po prawej stronie. Zaletą tego jest to, że ST-LINK to nie tylko programiści, ale także debuggery wewnątrz obwodów , które znacznie ułatwiają rozwój .
Jonas Schäfer

3
Ponadto, jeśli nie przejmujesz się odpowiedziami z XBEE, możesz użyć Uniwersalnego Interfejsu Szeregowego ATtiny, aby uzyskać UART, który jest szybszy niż implementacja oprogramowania bit-banged.
Jonas Schäfer

3
Warto zauważyć, że moduły radiowe często są dostarczane z niewydzielonym zasobem MCU (i istnieją moduły upraszczające typ approcal). Procesor jest zwykle współdzielony ze stosem RF, więc musisz akceptować okresowe przerwania itp.
Sean Houlihane

3
ULPBENCH jest dobrym zasobem, gdy ważne jest działanie przy niskim zużyciu energii (akumulator).
neonzeon

5

Patrząc na łatwość programowania i niski koszt, prawdopodobnie zacznę od jakiegoś modułu Arduino (lub taniego klonu). Kod czujnika ultradźwiękowego już istnieje, podobnie jak przykładowy kod dla ZigBee, na przykład przy użyciu modułów Digi XBee. W tym drugim przypadku podłączasz XBee do portu szeregowego, a po nawiązaniu połączenia ze starym, czcigodnym interfejsem poleceń „AT”, masz kanał typu punkt-punkt, z którego możesz wysyłać dowolny tekst w dół (do Raspberry Pi ). ZigBee nie jest najtańszym rodzajem komunikacji bliskiego zasięgu, ale moduły XBee spadły w cenach realnych w ciągu ostatnich 5 lat.

Wiem, że niektórzy ludzie mają problem z językiem opartym na C / C ++ używanym na Arduino, ale w tym przypadku w dużej mierze łączylibyście już istniejące skrypty innych użytkowników.

Jeśli rozejrzysz się za „trybem uśpienia Arduino”, znajdziesz przykłady tego, jak ustawić Arduino w tryb niskiego poboru mocy i budzić się sporadycznie, aby dokonać odczytu, przekazać go, a następnie ponownie przejść do trybu uśpienia.


1
Podczas gdy możliwe jest dobre zarządzanie energią z układem ATmega, typowa płyta Arduino ma pasożytnicze pobory mocy, które znacznie ograniczają żywotność baterii.
Chris Stratton
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.