4G router jako univerzální server pro IoT

4G router jako univerzální server pro IoT
Routery série ICR-3200 jsou určeny k nahrazení klasické kombinace: jednodeskový počítač + modem + router. Nyní je možné spustit veškerou potřebnou logiku přímo na routeru. Vzhledem k výkonnému ARM procesoru, 512 MB operační paměti a přibližně 2 GB vestavěné flash paměti lze na routeru dokonce spustit server nodejs!

Sekvenční rozhraní RS-232/485 jsou také integrována do routeru a jsou okamžitě dostupná v operačním systému s plným root přístupem. Otevřené prostředí pro vytváření vlastních programů a knihovny C/C++ pro práci s nízkoúrovňovým hardwarovým API jsou také k dispozici.
Funkce hlubokého spánku umožňuje šetřit energii při práci na baterii: router může být aktivován pouze tehdy, když je skutečně potřeba spojení.

V článku se podíváme na zajímavé funkce zařízení a pokusíme se prakticky pracovat s rozhraním pro vstup a výstup ze shell skriptů.

Technické specifikace

Routery série ICR-3200 jsou realizovány na jednotné hardwarové platformě a jsou zastoupeny pěti modely, které se liší rozsahy frekvencí LTE, přítomností Wi-Fi a geolokace (GNSS). Zařízení jsou prezentována jako náhrada za kombinaci jednodeskového počítače a routeru. Výkonný procesor a velký objem operační paměti umožňují spouštět náročné uživatelské aplikace přímo na routeru.

  • Procesor Cortex-A8 — taktní frekvence 1 GHz, architektura 32 bit
  • 512 MB RAM
  • Flash paměť od 1,5 do 4 GB — pro ukládání uživatelských dat
  • Vstupní a výstupní porty — rozhraní RS-232/485 a digitální porty vstupu a výstupu jsou dostupné pro použití uživatelskými programy

Samostatně stojí model ICR-3211B, který pracuje podle standardu LTE Cat. M1 (NB-IoT). Protokol LTE Cat. M1 byl speciálně vyvinut pro M2M řešení, má nízkou rychlost přenosu dat (375 kb/s), stejně jako velký dosah a zvýšenou stabilitu v obtížných podmínkách spojení uvnitř budov. Router má vestavěný ionistor (superkapacitor), který umožňuje zařízení pracovat krátkou dobu po úplném vypnutí napájení.

Režim hlubokého spánku

Režim hlubokého spánku umožňuje uvést router do stavu, kdy jsou všechny procesy pozastaveny a hardwarová část je vypnuta, aby se šetřila energie, přičemž všechny funkce zařízení jsou vypnuty a zvenčí vypadá zcela vypnuté. Spotřeba energie v tomto režimu činí ne více než 10 mW.

4G router jako univerzální server pro IoT
V režimu spánku router téměř nepoužívá energii a probouzí se za 3 sekundy

Když bude potřeba probudit router pro přenos dat, on se probudí za ~3 sekundy. Samozřejmě bude třeba další čas na registraci modemu v mobilní síti, nicméně to je podstatně rychlejší než spuštění routeru od nuly. Tato volba je užitečná pro systémy s autonomním napájením, které většinu času zůstávají v klidu a aktivují se jen občas pro provádění aktivních činností, jako je například signalizace nebo rezervační blok.

Probuzení a usínání

Správa usínání a probouzení probíhá prostřednictvím modulu Sleep Mode.

Existují 2 způsoby řízení režimu spánku:

  • Přes digitální vstup — v tomto režimu router ovládá externí zařízení, například mikrořadič. Na signál LOW na digitálním vstupu router usíná, a při obdržení HIGH — probouzí se, nebo naopak. Můžete také nastavit časový limit aktivace, aby se zabránilo náhodným přepínáním.
  • Přes interní časovač — router odpočítává čas a probouzí se/usíná ve stanovenou dobu. To je užitečné pro provádění jednorázových operací nebo stahování dat během určitého období.

4G router jako univerzální server pro IoT
Rozhraní pro nastavení režimu hlubokého spánku

Funkce „poslední nádech“

Porucha napájení na vzdáleném objektu může být obzvlášť nepříjemná, protože není jasné, z jakého důvodu není spojení s objektem dostupné. Funkce „Poslední nádech“ umožňuje routeru pracovat nějakou dobu po úplném vypnutí napájení a poslat zprávu o tom, že došlo k poruše a záložní napájení se nezapnulo. Díky integrovanému superkapacitoru, jehož kapacita je mnohem větší než u akumulátorových baterií, nevyžaduje údržbu a výměnu. To je užitečné pro systémy záložního napájení, v nichž mohou nastat poruchy a je důležité sledovat okamžik úplné ztráty napětí.

4G router jako univerzální server pro IoT
Router zašle signál o poruše napájení i po úplném vypnutí napájení

Aby na událost ztráty napájení mohla správně reagovat, je potřeba se o tom nějak dozvědět.
Aktuální napětí napájení lze získat buď prostřednictvím shell příkazu 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 # ← napětí napájení
Temperature      : 37 C   # ← teplota uvnitř skříně
Time             : 2019-08-16 16:21:18
Uptime           : 0 days, 11 hours, 43 minutes

Buď pomocí hardwarového Unix I/O control (ioctl) a programu v C/C++ nebo jiném jazyce.
V tabulce jsou uvedeny adresy potřebných hardwarových registrů. Aktuální napětí napájení se vrací jako celé číslo, v milivoltech. Použití nízkoúrovňového API je v tomto případě výhodnější než shell skripty pro rychlejší reakci. Podrobné informace o práci s hardwarem jsou k dispozici v příručce pro vývojáře.

4G router jako univerzální server pro IoT
Žádost ioctl vracející aktuální napětí napájení.

Sériové rozhraní

Router obsahuje dvě sériová rozhraní: RS-232 a RS-485. Umožňují přímo připojit periferní zařízení k routeru bez použití dalšího propojení. U routeru může běžet plnohodnotný server Node-RED nebo Nodejs, což umožňuje mít jedno zařízení pro nasazení jednoduchého automatizačního systému, bez dalších počítačů a kontrolerů.

4G router jako univerzální server pro IoT

Ve výchozím nastavení jsou obě rozhraní dostupná pro práci jako standardní sériová zařízení v Linuxu:

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 # ← není rozveden

Všechny standardní knihovny podporují tato zařízení bez dalších nastavení, včetně modulu Modbus-RTU2TCP a další.

Uživatelské moduly

Funkčnost zařízení lze rozšířit pomocí uživatelských modulů: je to zjednodušená verze balíčků, jen bez správce balíčků. Celý seznam dostupných modulů je na webu https://advantech-bb.cz/products/software/user-modules.

Moduly se instalují ručně pomocí nahrání souboru balíčku přes webové rozhraní:

4G router jako univerzální server pro IoT

V současné době je k dispozici 73 modulů. Zde je několik zajímavých z nich:

  • Node-RED — populární nástroj pro integraci různých průmyslových protokolů do uceleného systému
  • Nodejs — plnohodnotný server nodejs. Velké množství paměti a výkonný procesor umožňuje spouštět náročné aplikace přímo na routeru!
  • Python2/3
  • Web-shell — umožňuje práci v konzoli přes prohlížeč.
  • Azure IoT SDK Python — nástroj pro vývoj aplikací pro Microsoft Azure IoT Hub.

Jelikož je firmware routerů otevřený, mohou vývojáři psát vlastní moduly, včetně těch s webovým rozhraním. Referenční materiály jsou k dispozici v příručce pro psaní modulů a a v sekci pro vývojáře na webových stránkách společnosti. Pro pohodlí sestavení balíků je k dispozici hotové prostředí pro kross-kompilaci.

Hardwarové zdroje pomocí shell skriptů

Pro jednoduché úkoly automatizace je pohodlné použít shell skripty, pomocí nichž lze řídit světelnou indikaci a získávat/stanovovat stav digitálních pinů.

Světelnou indikací je pohodlné ukazovat aktuální stav vykonávání příkazů. Například, indikace přenosu dat — časté blikání, pokus o připojení — vzácné blikání, idle — svítí nepřetržitě. Podívejme se na příkaz led. Na vstupu přijímá pouze jeden argument — typ blikání LED.

# led
led on|off|fast|slow

Takto to vypadá v reálném životě:


Demonstrace režimů práce uživatelské indikace pomocí shell příkazů

Pro práci s digitálními piny se používá příkaz io.

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

io set out0 1 # Nastavit digitální výstup OUT0 do stavu 1 (LOW)
io get bin0   #  Získat hodnotu digitálního vstupu BIN0

Je důležité si pamatovat, že logika je v tomto případě invertovaná. Tedy 1=LOW, 0=HIGH. Použitím příkazu io můžeme snadno pracovat s digitálními piny z bash skriptů a stavět jednoduchou logiku pro automatizaci a řízení.

Jako demonstraci jednoduchosti práce s digitálními vstupy a indikací napíšeme zbytečný skript, který zobrazuje stav digitálního vstupu pomocí LED.

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

Princip fungování skriptu je jednoduchý: pokud je BIN0 ve stavu 0, LED často bliká, jinak svítí nepřetržitě. Takto to vypadá naživo:


Demonstrace fungování bash skriptu, který zobrazuje stav digitálního vstupu pomocí indikátoru.

I když je tento skript primitivní, názorně ukazuje, jak za jednu řádku, bez dodatečného softwaru, knihoven a nastavení, lze získávat vstupní data z digitálních vstupů a reagovat na ně.

Odkazy

  • V tomto článku nejsou zahrnuty síťové funkce routerů, jako je vyvažování zátěže, failover, VPN a podobně, protože všechna tato témata již byla podrobena jinému našem článku: Průmyslové 4G routery SmartMotion.
  • Příklad použití routeru ICR-3211B je v našem prvním článku: Ahoj, Habr, my jsme Advantech.
  • Ceny našich výrobků si můžete prohlédnout v našem online obchodě. Vlastní web v češtině zatím není hotový.

Zveme vás na partnerské fórum Advantech

4G router jako univerzální server pro IoT
Fórum Advantech se stane jedinečnou platformou pro diskusi o lokálních a globálních trendech v oblasti Internetu věcí. Zde můžete sdílet zkušenosti s novými technologickými řešeními a produkty, najít nové zákazníky a partnery. Budete mít příležitost vidět výrobky, které jsme popisovali v článcích, a nejen to. Na akci vystoupí lídři oboru a zástupci klíčových partnerů – NVidia, Intel a další společnosti, které se aktivně podílejí na rozvoji průmyslového Internetu věcí v následujících letech. Rádi bychom viděli všechny specialisty v oblasti průmyslové automatizace a Internetu věcí na této akci. Účast na akci je zdarma! Míst je omezený počet. Nezapomeňte se zaregistrovat.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster