
Routery serii 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 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 , działający zgodnie ze standardem LTE Cat. M1 (). 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 , 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.

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 .
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.

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 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

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.

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ł 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 .
Moduły instalowane są ręcznie przez przesyłanie pliku pakietu za pośrednictwem interfejsu webowego:

Na ten moment dostępnych jest 73 modułów. Oto niektóre z nich:
- — popularne narzędzie do integrowania różnych protokołów przemysłowych w jedną spójną system.
- — 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!
- — pozwala na pracę w konsoli przez przeglądarkę.
- — 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 i na stronie internetowej firmy. Aby ułatwić tworzenie pakietów, dostępne jest gotowe .
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
- W tym artykule nie poruszane są funkcje sieciowe routerów, takie jak równoważenie obciążenia, failover, VPN i inne, ponieważ wszystkie te tematy są już omówione w innym naszym artykule: .
- Przykład zastosowania routera znajdziesz w naszym pierwszym artykule: .
- Ceny produktów można znaleźć w ogólnym . Własna strona w języku rosyjskim jeszcze nie jest gotowa.
Zapraszamy na forum partnerskie Advantech

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. .
Źródło: habr.com
