Router 4G jako uniwersalny serwer dla IoT

Router 4G jako uniwersalny serwer dla IoT
Seria routerów ICR-3200 zaprojektowany z myślą o zastąpieniu klasycznej kombinacji: komputer jednopłytkowy + modem + router. Teraz możesz uruchomić całą niezbędną logikę bezpośrednio na routerze. Dzięki mocnemu procesorowi ARM, 512 MB RAM i ~2 GB wbudowanej pamięci flash, możesz nawet uruchomić na routerze serwer nodejs!

Interfejsy szeregowe RS-232/485 są również wbudowane w router i są natychmiast dostępne w systemie operacyjnym z pełnym dostępem roota. Dostępne jest również otwarte środowisko do tworzenia własnych programów i bibliotek C/C++ do pracy ze sprzętowymi interfejsami API niskiego poziomu.
Funkcja głębokiego uśpienia oszczędza energię podczas pracy na zasilaniu akumulatorowym: router można aktywować tylko wtedy, gdy komunikacja jest naprawdę konieczna.

W tym artykule przeanalizujemy ciekawe funkcje urządzenia i spróbujemy w praktyce pracować z interfejsem wejścia-wyjścia ze skryptów powłoki.

Технические характеристики

Seria routerów ICR-3200 wykonane są na jednej platformie sprzętowej i prezentowane są w pięciu modelach, różniących się zakresami częstotliwości LTE, obecnością Wi-Fi i geolokalizacją (GNSS). Urządzenia pozycjonowane są jako zamienniki kombinacji komputera jednopłytkowego i routera. Mocny procesor i duża ilość pamięci RAM pozwala na uruchamianie aplikacji użytkownika wymagających dużych zasobów bezpośrednio na routerze.

  • Procesor Cortex-A8 — częstotliwość taktowania 1 GHz, architektura 32-bitowa
  • 512MB RAM
  • Pamięć flash od 1,5 do 4 GB - do przechowywania danych użytkownika
  • Porty we/wy — Interfejsy RS-232/485 i cyfrowe porty we/wy są dostępne do wykorzystania przez programy użytkownika

Osobno warto model ICR-3211B, działający w standardzie LTE Cat. M1 (NB-Internet przedmiotów). Protokół LTE Cat M1 został specjalnie zaprojektowany do rozwiązań M2M, charakteryzuje się niską szybkością przesyłania danych (375 kb/s), a także dużym zasięgiem i zwiększoną stabilnością w trudnych warunkach komunikacji wewnętrznej. Router ma wbudowany jonizator (superkondensator), umożliwiając pracę urządzenia przez krótki czas po całkowitej przerwie w dostawie prądu.

Tryb głębokiego uśpienia

Tryb głębokiego uśpienia pozwala wprowadzić router w stan, w którym wszystkie procesy są zawieszone, a sprzęt wyłączony w celu oszczędzania energii, podczas gdy wszystkie funkcje urządzenia są wyłączone i z zewnątrz będzie wyglądać na całkowicie wyłączone. Zużycie energii w tym 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 musisz obudzić router, aby przesłać dane, to budzi się za ~3 sekundy. Oczywiście rejestracja modemu w sieci komórkowej zajmie dodatkowy czas, ale jest to znacznie szybsze niż ładowanie routera od zera. Ta opcja jest przydatna w przypadku systemów z własnym zasilaniem, które przez większość czasu są bezczynne i są czasami aktywowane w celu wykonania aktywnych działań, takich jak alarm lub jednostka zapasowa.

Budzenie się i zasypianie

Kontrola zasypiania i budzenia odbywa się poprzez moduł Tryb uśpienia.

Istnieją 2 sposoby kontrolowania trybu uśpienia:

  • Przez wejście cyfrowe — w tym trybie routerem steruje urządzenie zewnętrzne, np. mikrokontroler. Gdy na wejście cyfrowe zostanie wysłany sygnał NISKI, router przechodzi w tryb uśpienia, a gdy otrzyma sygnał WYSOKI, budzi się lub odwrotnie. Można także ustawić limit czasu wyzwalania, aby zabezpieczyć się przed przypadkowym przełączeniem.
  • Przez wewnętrzny timer — router odlicza czas i budzi się/zasypia o właściwej porze. Jest to wygodne w użyciu do wykonywania jednorazowych operacji lub pobierania danych przez określony czas.

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

Funkcja ostatniego oddechu

Awaria zasilania w odległej lokalizacji może być szczególnie nieprzyjemna, ponieważ nie jest jasne, dlaczego komunikacja z lokalizacją jest niedostępna. Funkcja „Last Gasp” pozwala routerowi pracować przez pewien czas po całkowitym zaniku zasilania i wysłać komunikat o wystąpieniu sytuacji awaryjnej i nie zostało włączone zasilanie rezerwowe. Dzięki wbudowanemu jonizatorowi, którego żywotność jest znacznie dłuższa niż baterii, nie wymaga konserwacji ani wymiany. Jest to przydatne w systemach zasilania awaryjnego, w których możliwe są awarie i ważne jest śledzenie momentu całkowitej utraty napięcia.

Router 4G jako uniwersalny serwer dla IoT
Router wyśle ​​sygnał o awarii zasilania nawet po całkowitej przerwie w dostawie prądu

Aby właściwie zareagować na zdarzenie związane z utratą zasilania, trzeba w jakiś sposób o tym wiedzieć.
Aktualne napięcie zasilania można uzyskać za pomocą polecenia powłoki 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 # ← напряжение питания
Temperature      : 37 C   # ← температура внутри корпуса
Time             : 2019-08-16 16:21:18
Uptime           : 0 days, 11 hours, 43 minutes

Albo przy użyciu sprzętowego sterowania we/wy Uniksa (ioctl) i programu w C/C++ lub innym języku.
Tabela pokazuje adresy wymaganych rejestrów sprzętowych. Aktualne napięcie zasilania jest zwracane jako liczba całkowita w miliwoltach. W tym przypadku lepiej jest używać interfejsu API niskiego poziomu niż skryptów powłoki, aby uzyskać szybszą reakcję. Szczegółowe informacje na temat pracy ze sprzętem dostępne są w przewodnik dewelopera.

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

Interfejsy szeregowe

Router posiada wbudowane dwa interfejsy szeregowe: RS-232 i RS-485. Umożliwiają podłączenie urządzeń peryferyjnych bezpośrednio do routera, bez konieczności stosowania dodatkowego okablowania. Jednocześnie na routerze może działać pełnoprawny serwer Node-RED lub Nodejs, co pozwala za pomocą jednego urządzenia wdrożyć prosty system automatyki, 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 Linux:

ls -la /dev/ttyS*
crw-------    1 root     root      251,   0 Jan  1  1970 /dev/ttyS0 # ← порт rs-232
crw-------    1 root     root      251,   1 Jan  1  1970 /dev/ttyS1 # ← порт rs-485 
crw-------    1 root     root      251,   5 Jan  1  1970 /dev/ttyS5 # ← не разведен

Wszystkie standardowe biblioteki będą obsługiwać te urządzenia bez dodatkowych ustawień, łącznie z modułem Modbus-RTU2TCP i inne.

Niestandardowe moduły

Funkcjonalność urządzenia można rozszerzyć za pomocą niestandardowych modułów: jest to uproszczona wersja pakietów, ale bez menedżera pakietów. Cała lista dostępnych modułów dostępna jest na stronie internetowej https://advantech-bb.cz/products/software/user-modules.

Moduły instaluje się ręcznie poprzez pobranie pliku pakietu poprzez interfejs WWW:

Router 4G jako uniwersalny serwer dla IoT

Obecnie dostępnych jest 73 modułów. Oto kilka interesujących:

  • Węzeł-CZERWONY - popularne narzędzie do łączenia różnych protokołów przemysłowych w całościowy system
  • nodejs — pełnoprawny serwer nodejs. Duża ilość pamięci RAM i mocny procesor pozwala na uruchamianie wymagających dużej ilości zasobów aplikacji bezpośrednio na routerze!
  • Python2/3
  • Webshell — umożliwia pracę w konsoli poprzez przeglądarkę.
  • Python w zestawie SDK platformy Azure IoT — zestaw narzędzi do tworzenia programów dla Microsoft Azure IoT Hub.

Ponieważ oprogramowanie routerów jest otwarte, programiści mogą pisać własne moduły, w tym także te z interfejsem WWW. Materiały referencyjne są dostępne pod adresem przewodnik pisania modułu и oraz sekcja dla programistów na stronie internetowej firmy. Dla wygody montażu pakietów dostępny jest gotowy pakiet środowisko do kompilacji krzyżowej.

Zasoby sprzętowe za pośrednictwem skryptów powłoki

Do prostych zadań automatyzacyjnych wygodnie jest używać skryptów powłoki, za pomocą których można sterować sygnalizacją świetlną oraz uzyskać/ustawić stan pinów cyfrowych.

Wskaźnik świetlny w wygodny sposób pokazuje aktualny stan wykonania polecenia. Np. sygnalizacja transmisji danych - szybkie miganie, próba połączenia - rzadkie miganie, bezczynność - świeci ciągle. Weź pod uwagę zespół doprowadziło. Jako wejście przyjmuje tylko jeden argument - rodzaj migania diody LED.

# led
led on|off|fast|slow

Oto jak to wygląda w prawdziwym życiu:


Demonstracja niestandardowych trybów działania wskaźników za pomocą poleceń powłoki

Aby pracować z pinami cyfrowymi, użyj polecenia io.

$ io
Usage: io [get <pin>] | [set <pin> <value>]

io set out0 1 # Установить цифровой выход OUT0 в состояние 1 (LOW)
io get bin0   #  Получить значение цифрового входа BIN0

Należy pamiętać, że logika w tym przypadku jest odwrotna. Odpowiednio, 1 = NISKI, 0 = WYSOKI. Korzystanie z polecenia io możemy łatwo pracować z pinami cyfrowymi ze skryptów bashowych i budować prostą logikę do automatyzacji i zarządzania.

Aby zademonstrować łatwość pracy z wejściami cyfrowymi i wyświetlaczami, napiszmy bezużyteczny skrypt, który wyświetli stan wejścia cyfrowego 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 jest w stanie 0, to dioda świeci często, w przeciwnym razie świeci ciągle. Oto jak to wygląda w prawdziwym życiu:


Demonstracja skryptu bash, który wyświetla stan wejścia cyfrowego za pomocą wskaźnika.

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

referencje

  • W tym artykule nie poruszamy funkcji sieciowych routerów, takich jak równoważenie, przełączanie awaryjne, VPN itp., ponieważ wszystkie te tematy zostały już omówione w naszym innym artykule: Przemysłowe routery 4G SmartMotion.
  • Przykład użycia routera ICR-3211B jest w naszym pierwszym artykule: Witaj Habr, jesteśmy Advantech.
  • Możesz zapoznać się z cenami produktów w ogóle sklep internetowy. Nasza własna strona internetowa w języku rosyjskim nie jest jeszcze gotowa.

Zapraszamy na forum partnerskie Advantech

Router 4G jako uniwersalny serwer dla IoT
Forum Advantech będzie wyjątkową platformą dyskusji na temat lokalnych i globalnych trendów w Internecie Rzeczy. Tutaj możesz wymienić się doświadczeniami w korzystaniu z nowych rozwiązań technologicznych i produktów, znaleźć nowych klientów i partnerów. Będziesz miał okazję zobaczyć produkty, które opisaliśmy w artykułach i nie tylko. Prelegentami będą liderzy branży oraz przedstawiciele kluczowych partnerów – NVidia, Intel i innych firm, które w nadchodzących latach będą aktywnie zaangażowane w rozwój Przemysłowego Internetu Rzeczy. Będzie nam miło gościć na wydarzeniu wszystkich specjalistów z dziedziny automatyki przemysłowej i Internetu Rzeczy. Udział w wydarzeniu jest bezpłatny! Liczba miejsc jest ograniczona. Pośpiesz się z rejestracją.

Źródło: www.habr.com

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster