Router 4G jako uniwersalny serwer dla IoT

Router 4G jako uniwersalny serwer dla IoT
Routery serii ICR-3200 Przeznaczone do zastąpienia tradycyjnego połączenia: komputer jednopłytkowy + modem + router. Teraz można uruchomić całą logikę bezpośrednio na routerze. Dzięki potężnemu procesorowi ARM, 512 MB pamięci RAM i ~2 GB wbudowanej pamięci flash, na routerze można nawet uruchomić serwer nodejs!

Interfejsy szeregowe RS-232/485 są również wbudowane w router i dostępne od razu w systemie operacyjnym z pełnym dostępem root. Otwarta przestrzeń do budowy własnych programów i biblioteki C/C++ do pracy z niskopoziomowym API sprzętowym są również dostępne.
Funkcja głębokiego snu pozwoli zaoszczędzić energię podczas pracy z akumulatora: router można aktywować tylko wtedy, gdy połączenie jest rzeczywiście potrzebne.

W artykule omówimy ciekawe funkcje urządzenia i spróbujemy w praktyce pracować z interfejsem wejścia-wyjścia z shell-scriptów.

Specyfikacje techniczne

Routery serii ICR-3200 Wykonane na wspólnej platformie sprzętowej i oferowane w pięciu modelach, które różnią się zakresami częstotliwości LTE, dostępnością Wi-Fi oraz geolokalizacją (GNSS). Urządzenia są pozycjonowane jako zamiana połączenia komputera jednopłytkowego i routera. Potężny procesor i duża ilość pamięci RAM pozwala na uruchamianie zasobożernych aplikacji użytkowych bezpośrednio na routerze.

  • Procesor Cortex-A8 — częstotliwość taktowania 1 GHz, architektura 32 bity
  • 512 MB RAM
  • Pamięć flash od 1,5 do 4 GB — do przechowywania danych użytkowników
  • Porty wejścia-wyjścia — interfejsy RS-232/485 oraz cyfrowe porty wejścia-wyjścia dostępne do użytku przez programy użytkowników

Warto wyróżnić model ICR-3211B, działający zgodnie ze standardem LTE Cat. M1 (NB-IoT). Protokół LTE Cat. M1 został specjalnie zaprojektowany dla rozwiązań M2M, ma niską prędkość transmisji danych (375 kb/s), jak również dużą zasięg i zwiększoną stabilność w trudnych warunkach łączności wewnątrz budynków. Router ma wbudowany superkondensator, który pozwala urządzeniu pracować przez krótki czas po całkowitym odłączeniu zasilania.

Tryb głębokiego snu

Tryb głębokiego snu pozwala wprowadzić router w stan, w którym wszystkie procesy są wstrzymane, a część sprzętowa jest wyłączona, aby oszczędzać energię; przy tym wszystkie funkcje urządzenia są wyłączone i z zewnątrz wygląda jakby było całkowicie wyłączone. Zużycie energii w takim trybie wynosi nie więcej niż 10 mW.

Router 4G jako uniwersalny serwer dla IoT
W trybie uśpienia router prawie nie zużywa energii i budzi się w ciągu 3 sekund

Kiedy zajdzie potrzeba obudzenia routera do przesyłania danych, on obudzi się w około 3 sekundy. Oczywiście będzie potrzebny dodatkowy czas na rejestrację modemu w sieci komórkowej, jednak jest to znacznie szybsze niż uruchamianie routera od zera. Taka opcja jest przydatna dla systemów z autonomicznym zasilaniem, które przez większość czasu są w stanie uśpienia i aktywują się sporadycznie, aby wykonać aktywne zadania, takie jak alarmowanie czy blokowanie rezerwowe.

Obudzenie i uśpienie

Zarządzanie uśpieniem i obudzeniem odbywa się za pomocą modułu Tryb uśpienia.

Istnieją 2 sposoby zarządzania trybem uśpienia:

  • Za pomocą wejścia cyfrowego — w tym trybie router jest sterowany przez zewnętrzne urządzenie, na przykład mikrokontroler. Przy sygnale LOW na wejściu cyfrowym router przechodzi w stan uśpienia, a po otrzymaniu HIGH — się budzi, lub odwrotnie. Można również ustawić tryb czasowy dla ochrony przed przypadkowymi przełączeniami.
  • Za pomocą wewnętrznego timera — router odmierza czas i budzi się/uśpia w odpowiednim czasie. Jest to wygodne do wykonywania jednorazowych operacji lub pobierania danych w określonym okresie.

Router 4G jako uniwersalny serwer dla IoT
Interfejs ustawień trybu głębokiego uśpienia

Funkcja «ostatni oddech»

Awaria zasilania w zdalnym obiekcie może być szczególnie kłopotliwa, ponieważ nie wiadomo, dlaczego brak jest komunikacji z obiektem. Funkcja «Ostatni oddech» pozwala routerowi pracować przez pewien czas po pełnym odłączeniu zasilania i wysyłać komunikat o tym, że doszło do awarii i zasilanie rezerwowe nie zostało włączone. Dzięki wbudowanemu superkondensatorowi, którego żywotność jest znacznie większa niż akumulatorów, nie wymaga on konserwacji ani wymiany. Jest to przydatne w systemach zasilania rezerwowego, w których mogą wystąpić awarie i ważne jest, aby śledzić moment całkowitej utraty napięcia.

Router 4G jako uniwersalny serwer dla IoT
Router wyśle sygnał o awarii zasilania nawet po pełnym odłączeniu zasilania

Aby prawidłowo zareagować na zdarzenie utraty zasilania, trzeba jakoś się o tym dowiedzieć.
Aktualne napięcie zasilania można uzyskać albo za pomocą polecenia shell status sys:

$ status sys
Firmware Version : 6.1.10 (2019-07-02)
Serial Number    : ACZ1100000623519
Profile          : Standard
RTC Battery      : Ok
Supply Voltage   : 12.3 V # ← napięcie zasilania
Temperature      : 37 C   # ← temperatura wewnątrz obudowy
Time             : 2019-08-16 16:21:18
Uptime           : 0 dni, 11 godzin, 43 minuty

Albo za pomocą sprzętowego sterowania wejściem/wyjściem Unix (ioctl) oraz programu w C/C++ lub innym języku.
W tabeli przedstawiono adresy potrzebnych rejestrów sprzętowych. Aktualne napięcie zasilania zwracane jest jako liczba całkowita w miliwoltach. Użycie niskopoziomowego API jest w tym przypadku preferowane w porównaniu do skryptów powłoki dla szybszej reakcji. Szczegółowe informacje dotyczące pracy ze sprzętem dostępne są w dokumentacji dewelopera.

Router 4G jako uniwersalny serwer dla IoT
Zapytanie ioctl zwracające aktualne napięcie zasilania.

Interfejsy szeregowe

Router ma wbudowane dwa interfejsy szeregowe: RS-232 i RS-485. Pozwalają one na podłączenie urządzeń peryferyjnych bezpośrednio do routera, bez użycia dodatkowego okablowania. W routerze może działać pełnoprawny serwer Node-RED lub Node.js, co pozwala na wykorzystanie jednego urządzenia do stworzenia prostego systemu automatyzacji, bez dodatkowych komputerów i kontrolerów.

Router 4G jako uniwersalny serwer dla IoT

Domyślnie oba interfejsy są dostępne do pracy jako standardowe urządzenia szeregowe w systemie Linux:

ls -la /dev/ttyS*
crw-------    1 root     root      251,   0 Jan  1  1970 /dev/ttyS0 # ← port rs-232
crw-------    1 root     root      251,   1 Jan  1  1970 /dev/ttyS1 # ← port rs-485 
crw-------    1 root     root      251,   5 Jan  1  1970 /dev/ttyS5 # ← niezaprojektowany

Wszystkie standardowe biblioteki będą wspierać te urządzenia bez dodatkowej konfiguracji, w tym moduł Modbus-RTU2TCP i inni.

Moduły niestandardowe

Funkcjonalność urządzenia można rozszerzyć dzięki modułom niestandardowym: to uproszczona wersja pakietów, tylko bez menedżera pakietów. Cała lista dostępnych modułów znajduje się na stronie https://advantech-bb.cz/products/software/user-modules.

Moduły instalowane są ręcznie przez przesyłanie pliku pakietu za pośrednictwem interfejsu webowego:

Router 4G jako uniwersalny serwer dla IoT

Na ten moment dostępnych jest 73 modułów. Oto niektóre z nich:

  • Node-RED — popularne narzędzie do integrowania różnych protokołów przemysłowych w jedną spójną system.
  • Node.js — pełnoprawny serwer node.js. Duża ilość pamięci RAM i potężny procesor pozwalają na uruchomienie wymagających aplikacji bezpośrednio na routerze!
  • Python2/3
  • Web-shell — pozwala na pracę w konsoli przez przeglądarkę.
  • Azure IoT SDK Python — zestaw narzędzi do tworzenia aplikacji dla Microsoft Azure IoT Hub.

Ponieważ oprogramowanie routerów jest otwarte, deweloperzy mogą pisać własne moduły, w tym z interfejsem internetowym. Materiały referencyjne są dostępne w podręczniku pisania modułów i oraz w sekcji dla deweloperów na stronie internetowej firmy. Aby ułatwić tworzenie pakietów, dostępne jest gotowe środowisko do cross-kompilacji..

Zasoby sprzętowe można zarządzać za pomocą skryptów shell.

Do prostych zadań automatyzacji wygodnie jest wykorzystać skrypty shell, z których można zarządzać diodami sygnalizacyjnymi oraz uzyskiwać/ustawiać stan pinów cyfrowych.

Dioda sygnalizacyjna może wygodnie pokazywać aktualny stan wykonywania poleceń. Na przykład, dioda sygnalizująca przesyłanie danych — częste miganie, próba połączenia — rzadkie miganie, brak aktywności — świeci ciągle. Rozważmy polecenie led. Przyjmuje ono tylko jeden argument — typ migania diody LED.

# led
led on|off|fast|slow

Oto jak to wygląda w prawdziwym życiu:


Prezentacja trybów pracy wskaźnika użytkownika za pomocą poleceń shell.

Do pracy z pinami cyfrowymi używana jest komenda io.

$ io
Usage: io [get ] | [set  ]

io set out0 1 # Ustawić cyfrowe wyjście OUT0 w stan 1 (LOW)
io get bin0   #  Uzyskać wartość cyfrowego wejścia BIN0

Ważne jest, aby pamiętać, że logika w tym przypadku jest odwrócona. Odpowiednio 1=LOW, 0=HIGH. Używając komendy io możemy łatwo pracować z pinami cyfrowymi w skryptach bash i budować prostą logikę do automatyzacji i zarządzania.

Jako demonstrację prostoty pracy z pinami cyfrowymi i sygnalizacją, napiszemy bezsensowny skrypt, który wyświetla status cyfrowego wejścia za pomocą diody LED.

#!/bin/bash
while true
do
	[ $(io get bin0) -eq 0 ] && led fast || led on
done

Zasada działania skryptu jest prosta: jeśli BIN0 ma stan 0, dioda świeci często, w przeciwnym razie świeci ciągle. Oto jak to wygląda na żywo:


Demonstracja działania skryptu bash, wyświetlającego stan cyfrowego wejścia za pomocą wskaźnika.

Pomimo prymitywności tego skryptu, wyraźnie pokazuje, jak w jednym wierszu, bez dodatkowego oprogramowania, bibliotek i ustawień, można uzyskiwać dane wejściowe z cyfrowych wejść i na nie reagować.

Linki

Zapraszamy na forum partnerskie Advantech

Router 4G jako uniwersalny serwer dla IoT
Forum Advantech stanie się unikalną platformą do omawiania lokalnych i globalnych trendów w dziedzinie Internetu rzeczy. Będziesz mógł wymieniać się doświadczeniami w zakresie stosowania nowych rozwiązań technologicznych i produktów, znaleźć nowych klientów i partnerów. Będziesz miał szansę zobaczyć produkty, które opisywaliśmy w artykułach i nie tylko. Na wydarzeniu wystąpią liderzy branży oraz przedstawiciele kluczowych partnerów – NVidia, Intel i inne firmy, które aktywnie uczestniczą w rozwoju przemysłowego Internetu rzeczy w nadchodzących latach. Będziemy szczęśliwi mogąc zobaczyć wszystkich specjalistów w dziedzinie automatyzacji przemysłowej i Internetu rzeczy. Udział w wydarzeniu jest bezpłatny! Liczba miejsc jest ograniczona. Nie zwlekaj, zarejestruj się.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster