4G usmerjevalnik kot univerzalni strežnik za IoT

4G usmerjevalnik kot univerzalni strežnik za IoT
Serija usmjerivača ICR-3200 namijenjeni su da zamijene klasičnu kombinaciju: jednopločasti računar + modem + usmjerivač. Sada je moguće pokrenuti svu potrebnu logiku direktno na usmjerivaču. Zahvaljujući snažnom ARM procesoru, 512 MB radne memorije i ~2GB ugrađene fleš memorije, na usmjerivaču se može čak pokrenuti nodejs server!

Serijski interfejsi RS-232/485 takođe su ugrađeni u usmjerivač i dostupni odmah u operativnom sistemu sa punim root pristupom. Otvoreno okruženje za izradu vlastitih programa i C/C++ biblioteke za rad sa niskonivelskim hardverskim API-jem takođe su dostupni.
Funkcija dubokog sna omogućava uštedu energije pri radu na bateriji: usmjerivač se može aktivirati samo kada je konekcija stvarno potrebna.

U članku ćemo razmotriti zanimljive funkcije uređaja i pokušati u praksi raditi sa interfejsom za unos/izlaz iz shell skripti.

Tehnični podatki

Serija usmjerivača ICR-3200 pravljena su na jedinstvenoj hardverskoj platformi i predstavljena su u pet modela, koji se razlikuju po frekvencijskom opsegu LTE, prisutnosti Wi-Fi i geolokacije (GNSS). Uređaji se pozicioniraju kao zamjena za kombinaciju jednopločastog računara i usmjerivača. Snažni procesor i velika količina radne memorije omogućavaju pokretanje resursno zahtevnih korisničkih aplikacija direktno na usmjerivaču.

  • Cortex-A8 procesor — taktokna frekvencija 1 GHz, 32-bitna arhitektura
  • 512 MB RAM
  • Fleš memorija od 1,5 do 4 GB — za skladištenje korisničkih podataka
  • Ulazno-izlazni portovi — RS-232/485 interfejsi i digitalni ulazno-izlazni portovi su dostupni za korišćenje korisničkim programima

Posebno se izdvaja model ICR-3211B, koji radi prema standardu LTE Cat. M1 (NB-IoT). LTE Cat. M1 protokol je specijalno razvijen za M2M rješenja, ima nisku brzinu prenosa podataka (375 kb/s), kao i veliku domet i poboljšanu stabilnost u teškim uvjetima veze unutar prostora. Usmerivač ima ugrađeni ionistor (superkondenzator), koji omogućava uređaju da radi kratko vrijeme nakon potpunog isključenja.

Režim dubokog sna

Režim dubokog sna omogućava da se usmjerivač stavi u stanje kada su svi procesi zamrznuti i hardverski deo isključen, radi uštede energije, pri čemu su sve funkcije uređaja isključene i izgleda potpuno isključeno. Potrošnja energije u ovom režimu iznosi ne više od 10 mW.

4G usmerjevalnik kot univerzalni strežnik za IoT
V načinu spanja usmerjevalnik skoraj ne porabi energije in se zbudi v 3 sekundah.

Ko bo treba zbuditi usmerjevalnik za prenos podatkov, se zbudi v približno 3 sekundah.. Seveda bo potrebno dodatno čas za registracijo modema v mobilni mreži, vendar je to bistveno hitreje kot zagon usmerjevalnika od nič. Ta možnost je uporabna za sisteme z avtonomno napajalno enoto, ki večino časa preživijo v stanju mirovanja in se občasno aktivirajo za izvajanje aktivnih dejanj, kot so alarmi ali rezerva napajanja.

Prebujanje in spanje

Nadzor spanja in prebujanja poteka preko modula Režim spanja.

Obstajata 2 načina za nadzor režima spanja:

  • Prek digitalnega vhoda — v tem načinu usmerjevalnik nadzoruje zunanji aparat, na primer mikrokrmilnik. Ob signalu LOW na digitalni vhod usmerjevalnik zaspi, ob prejemu HIGH — se zbudi, ali obratno. Lahko nastavite tudi časovno omejitev za zaščito pred slučajnimi preklopi.
  • Prek notranjega časovnika — usmerjevalnik odšteva čas in se zbudi/zaspati ob pravem času. To je priročno za izvajanje enkratnih operacij ali prenos podatkov v določenem obdobju.

4G usmerjevalnik kot univerzalni strežnik za IoT
Vmesnik za nastavitev globokega spanja

Funkcija 'zadnji vzdih'

Okvara napajanja na oddaljenem objektu je lahko še posebej neprijetna, saj ni jasno, zakaj povezava z objektom ni na voljo. Funkcija 'Zadnji vzdih' omogoča usmerjevalniku, da deluje nekaj časa po popolnem izklopu napajanja in pošlje sporočilo, da je prišlo do okvare in rezervno napajanje se ni vklopilo. Zaradi vgrajenega superkondenzatorja, katerega življenjska doba je precej daljša od baterij, ne zahteva vzdrževanja in zamenjave. To je koristno za sisteme rezervnega napajanja, kjer lahko pride do izpadov in kjer je pomembno spremljati trenutek popolne izgube napetosti.

4G usmerjevalnik kot univerzalni strežnik za IoT
Usmerjevalnik bo poslal signal o okvari napajanja tudi po popolnem izklopu napajanja.

Da bi pravilno reagirali na dogodek izgube napajanja, je treba nekako izvedeti o tem.
Trenutno napetost napajanja je mogoče pridobiti bodisi s pomočjo shell-ukaza 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 # ← napetost
Temperature      : 37 C   # ← temperatura notranjosti ohišja
Time             : 2019-08-16 16:21:18
Uptime           : 0 dni, 11 ur, 43 minut

Ali z uporabo strojne Unix I/O kontrolne funkcije (ioctl) ter programa v C/C++ ali drugem jeziku.
Tabel je prikazana potrebna naslova strojnih registrov. Trenutna napetost se vrača kot celo število, v milivoltih. Uporaba nizko nivojskega API-ja je v tem primeru prednostna pred shell skripti zaradi hitrejše odzivnosti. Podrobne informacije o delu z strojno opremo so na voljo v priročniku razvijalca.

4G usmerjevalnik kot univerzalni strežnik za IoT
Zahteva ioctl, ki vrača trenutno napetost.

Serijski vmesniki

Usmerjevalnik vključuje dva serijska vmesnika: RS-232 in RS-485. Ti omogočajo neposredno povezavo perifernih naprav z usmerjevalnikom, brez dodatne opreme. Pri tem lahko na usmerjevalniku deluje celoten strežnik Node-RED ali Nodejs, kar omogoča, da se enako napravo uporablja za vzpostavitev preprostega avtomatizacijskega sistema, brez dodatnih računalnikov in krmilnikov.

4G usmerjevalnik kot univerzalni strežnik za IoT

Privzeto sta oba vmesnika na voljo za delo kot standardne serijske naprave 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 # ← ni razveden

Vse standardne knjižnice bodo podpirale te naprave brez dodatnih nastavitev, vključno z modulom Modbus-RTU2TCP in druge.

Uporabniški moduli

Funkcionalnost naprave je mogoče razširiti z uporabo uporabniških modulov: to je poenostavljena različica paketov, le brez upravitelja paketov. Celoten seznam razpoložljivih modulov je na voljo na spletni strani https://advantech-bb.cz/products/software/user-modules.

Moduli se namestijo ročno, z nalaganjem datoteke paketa prek spletnega vmesnika:

4G usmerjevalnik kot univerzalni strežnik za IoT

Trenutno je na voljo 73 modulov. Tukaj je nekaj zanimivih:

  • Node-RED — priljubljeno orodje za povezovanje različnih industrijskih protokolov v celovit sistem
  • Nodejs — celoten strežnik nodejs. Velika količina pomnilnika in močan procesor omogočata zagon zahtevnih aplikacij neposredno na usmerjevalniku!
  • Python2/3
  • Spletna lupina — omogoča delo v konzoli prek brskalnika.
  • Azure IoT SDK Python — orodjarni komplet za razvoj programov za Microsoft Azure IoT Hub.

Ker je programska oprema usmerjevalnikov odprta, lahko razvijalci pišejo svoje module, vključno z moduli z večjim vmesnikom. Referenčni materiali so na voljo v priročniku za pisanje modulov in in v razdelku za razvijalce na spletni strani podjetja. Za enostavno sestavljanje paketov je na voljo pripravljena okolje za križno prevajanje.

Strojni viri preko shell skript

Za preproste naloge avtomatizacije je enostavno uporabiti shell skripte, s katerimi lahko upravljate s svetlobno indikacijo in pridobivate/določate stanje digitalnih pinov.

Svetlobna indikacija je priročna za prikaz trenutnega stanja izvajanja ukazov. Na primer, indikacija prenosa podatkov — pogosto utripanje, poskus povezovanja — redko utripanje, mirno — neprekinjeno sveti. Oglejmo si ukaz led. Na vhodu sprejme samo en argument — tip utripanja LED dioda.

# led
led on|off|fast|slow

Tako to izgleda v resničnem življenju:


Prikaz načinov delovanja uporabniškega indikatorja preko shell ukazov

Za delo z digitalnimi pini se uporablja ukaz io.

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

io set out0 1 # Nastavite digitalni izhod OUT0 v stanje 1 (LOW)
io get bin0   #  Pridobite vrednost digitalnega vhoda BIN0

Pomembno je vedeti, da je logika v tem primeru inverzno. Tako je 1=LOW, 0=HIGH. Z uporabo ukaza io lahko enostavno delamo z digitalnimi pini iz bash skriptov in gradimo preprosto logiko za avtomatizacijo in upravljanje.

Kot prikaz enostavnosti dela z digitalnimi vhodi in indikacijo bomo napisali neuporaben skript, ki prikazuje stanje digitalnega vhoda s pomočjo LED diode.

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

Načelo delovanja skripta je preprosto: če je BIN0 v stanju 0, se dioda hitro sveti, drugače sveti neprekinjeno. Tako to izgleda v živo:


Prikaz delovanja bash skripta, ki prikazuje stanje digitalnega vhoda s pomočjo indikatorja.

Kljub enostavnosti tega skripta jasno prikazuje, kako lahko v eni vrstici, brez dodatne programske opreme, knjižnic in nastavitev pridobivamo vhodne podatke z digitalnih vhodov in na njih reagiramo.

Povezave

Vabimo vas na partnerski forum Advantech

4G usmerjevalnik kot univerzalni strežnik za IoT
Forum Advantech bo edinstvena platforma za razpravo o lokalnih in globalnih trendih v domeni Interneta stvari. Tukaj se boste lahko izmenjali izkušnje pri uporabi novih tehnoloških rešitev in izdelkov ter našli nove stranke in partnerje. Imeli boste priložnost videti izdelke, ki smo jih opisovali v člankih, in še več. Nastopili bodo voditelji panoge in predstavniki ključnih partnerjev – NVidia, Intel in drugih podjetij, ki aktivno sodelujejo pri razvoju industrijskega Interneta stvari v naslednjih letih. Veseli bomo, da na dogodku vidimo vse strokovnjake s področja industrijske avtomatizacije in Interneta stvari. Udeležba na dogodku je brezplačna! Število mest je omejeno. Ne zamudite registracije.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster