
Seria routerów 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 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 , działający w standardzie LTE Cat. M1 (). 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 , 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.

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

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

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

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 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 .
Moduły instaluje się ręcznie poprzez pobranie pliku pakietu poprzez interfejs WWW:

Obecnie dostępnych jest 73 modułów. Oto kilka interesujących:
- - popularne narzędzie do łączenia różnych protokołów przemysłowych w całościowy system
- — 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!
- — umożliwia pracę w konsoli poprzez przeglądarkę.
- — 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 и na stronie internetowej firmy. Dla wygody montażu pakietów dostępny jest gotowy pakiet .
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: .
- Przykład użycia routera jest w naszym pierwszym artykule: .
- Możesz zapoznać się z cenami produktów w ogóle . Nasza własna strona internetowa w języku rosyjskim nie jest jeszcze gotowa.
Zapraszamy na forum partnerskie Advantech

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