Router 4G ca server universal pentru IoT

Router 4G ca server universal pentru IoT
Routere din seria ICR-3200 sunt menite să înlocuiască configurația clasică: computer pe un singur placă + modem + router. Acum este posibil să rulezi toată logica necesară direct pe router. Datorită procesorului ARM puternic, 512 MB de RAM și ~2GB de memorie flash încorporată, pe router poate fi chiar rulată un server nodejs!

Interfețele seriale RS-232/485 sunt de asemenea integrate în router și sunt accesibile imediat în sistemul de operare cu acces root complet. Un mediu deschis pentru construirea propriilor programe și biblioteci C/C++ pentru lucrul cu API-ul hardware de nivel scăzut sunt disponibile de asemenea.
Funcția de adormire profundă va economisi energie când se lucrează pe baterie: routerul poate fi activat doar atunci când conexiunea este cu adevărat necesară.

În articol, vom analiza funcțiile interesante ale dispozitivului și vom încerca în practică să lucrăm cu interfața de intrare-ieșire din shell-scripturi.

Specificații tehnice

Routere din seria ICR-3200 sunt realizate pe o platformă hardware unificată și sunt prezentate în cinci modele, care diferă prin benzile de frecvență LTE, prezența Wi-Fi și geolocalizarea (GNSS). Dispozitivele sunt poziționate ca o înlocuire a configurației dintre un computer pe un singur placă și un router. Procesorul puternic și cantitatea mare de memorie RAM permit rularea aplicațiilor consumatoare de resurse direct pe router.

  • Procesor Cortex-A8 — frecvență de bază de 1 GHz, arhitectură de 32 de biți
  • 512 MB RAM
  • Memorie flash de la 1,5 la 4 GB — pentru stocarea datelor utilizatorului
  • Porturile de intrare-ieșire — interfețele RS-232/485 și porturile digitale de intrare-ieșire sunt disponibile pentru utilizarea programelor utilizatorului

Merită să menționăm modelul ICR-3211B, care funcționează conform standardului LTE Cat. M1 (NB-IoT). Protocolul LTE Cat. M1 a fost dezvoltat special pentru soluții M2M, având o viteză de transfer de date redusă (375 kb/s) și o distanță de acțiune mai mare, precum și o stabilitate crescută în condiții dificile de conexiune în interior. Routerul are încorporat un ultracapacitor, permițând dispozitivului să funcționeze timp scurt după o deconectare completă a alimentării.

Modul de adormire profundă

Modul de adormire profundă permite routerului să fie introdus într-o stare în care toate procesele sunt suspendate, iar partea hardware este deconectată, pentru a economisi energie, în acest timp toate funcțiile dispozitivului sunt dezactivate și din exterior va părea complet oprit. Consumul de energie în acest mod este de maximum 10 mW.

Router 4G ca server universal pentru IoT
În modul de repaus, routerul consumă aproape zero energie și se trezește în 3 secunde.

Când va fi necesar să trezească routerul pentru a transfera date, acesta se va trezi în aproximativ 3 secunde.. Desigur, va fi necesar timp suplimentar pentru înregistrarea modemului în rețeaua mobilă, totuși, acest lucru este considerabil mai rapid decât pornirea routerului de la zero. Această opțiune este utilă pentru sistemele cu alimentare autonomă, care petrec majoritatea timpului în stare de inactivitate și se activează rar pentru a efectua acțiuni active, cum ar fi semnalizarea sau blocul de rezervă.

Trezirea și adormirea

Controlul adormirii și trezirii se face prin intermediul modulului Mod de repaus.

Există 2 moduri de a controla modul de repaus:

  • Prin intrarea digitală — în acest mod, routerul este controlat de un dispozitiv extern, cum ar fi un microcontroler. La semnalul LOW pe intrarea digitală, routerul adoarme, iar la primirea HIGH — se trezește, sau invers. De asemenea, se poate configura un timeout pentru a proteja împotriva comutărilor accidentale.
  • Prin intermediul unui timer intern — routerul numără timpul și se trezește/adormește la momentul potrivit. Acest lucru este convenabil de folosit pentru a efectua operațiuni unice sau pentru a descărca date într-o anumită perioadă.

Router 4G ca server universal pentru IoT
Interfața de reglează modul de repaus profund

Funcția „ultimul suspin”

Oprirea alimentării la o locație îndepărtată poate fi deosebit de neplăcută, deoarece nu este clar din ce motiv nu există conectivitate cu obiectul. Funcția „Ultimul suspin” permite routerului să funcționeze o perioadă după oprirea completă a alimentării și să trimită un mesaj că a avut loc o defecțiune și alimentarea de rezervă nu s-a activat. Datorită condensatorului integrat, al cărui resursă este semnificativ mai mare decât a bateriilor, acesta nu necesită întreținere și înlocuire. Acest lucru este util pentru sistemele de rezervă de energie, unde pot apărea defecțiuni și este important să se monitorizeze momentul pierderii complete a tensiunii.

Router 4G ca server universal pentru IoT
Routerul va trimite un semnal în caz de defecțiune de alimentare chiar și după oprirea completă a alimentării.

Pentru a reacționa corect la evenimentul pierderii alimentării, trebuie să afli cumva despre acest lucru.
Tensiunea curentă a alimentării poate fi obținută fie printr-o comanda 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 # ← voltaj de alimentare
Temperature      : 37 C   # ← temperatura din interiorul carcasei
Time             : 2019-08-16 16:21:18
Uptime           : 0 zile, 11 ore, 43 minute

Ori prin control I/O hardware Unix (ioctl) și un program în C/C++ sau într-o altă limbă.
Tabelul prezintă adresele registrelor hardware necesare. Tensiunea de alimentare curentă este returnată sub formă de număr întreg, în milivolți. Utilizarea API-ului de nivel inferior este preferabilă scripturilor shell în acest caz pentru o reacție mai rapidă. Informații detaliate despre lucrul cu partea hardware sunt disponibile în manualul dezvoltatorului.

Router 4G ca server universal pentru IoT
Cererea ioctl care returnează tensiunea de alimentare curentă.

Interfețe seriale

Routerul include două interfețe seriale: RS-232 și RS-485. Acestea permit conectarea dispozitivelor periferice direct la router, fără a folosi echipamente suplimentare. În acest timp, pe router poate fi rulat un server complet Node-RED sau Nodejs, ceea ce permite utilizarea unui singur dispozitiv pentru implementarea unui sistem simplu de automatizare, fără computere și controllere suplimentare.

Router 4G ca server universal pentru IoT

În mod implicit, ambele interfețe sunt disponibile pentru utilizare ca dispozitive seriale standard în 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 # ← neconectat

Toate bibliotecile standard vor suporta aceste dispozitive fără configurații suplimentare, inclusiv modulul Modbus-RTU2TCP și altele.

Module personalizate

Funcționalitatea dispozitivului poate fi extinsă prin module personalizate: aceasta este o variantă simplificată a pachetelor, doar fără manager de pachete. Întreaga listă de module disponibile este disponibilă pe site-ul https://advantech-bb.cz/products/software/user-modules.

Modulele sunt instalate manual, prin încărcarea fișierului de pachet prin interfața web:

Router 4G ca server universal pentru IoT

În prezent sunt disponibile 73 de module. Iată câteva interesante dintre ele:

  • Node-RED — instrument popular pentru integrarea diferitelor protocole industriale într-un sistem unitar
  • Nodejs — server complet nodejs. O cantitate mare de memorie RAM și un procesor puternic permit rularea aplicațiilor care consumă multe resurse direct pe router!
  • Python2/3
  • Web-shell — permite lucrul în consolă prin browser.
  • Azure IoT SDK Python — un set de instrumente pentru dezvoltarea de aplicații pe Microsoft Azure IoT Hub.

Deoarece firmware-ul routerelor este deschis, dezvoltatorii pot scrie module proprii, inclusiv cu interfață web. Materialele de referință sunt disponibile în ghidul de scriere a modulelor și și secțiunea pentru dezvoltatori de pe site-ul companiei. Pentru comoditatea construirii pachetelor, este disponibil un mediu gata pentru cross-compilare.

Resursele hardware prin scripturi shell

Pentru sarcini simple de automatizare, este convenabil să folosești scripturi shell, din care poți controla iluminarea și obține/stabili starea pinilor digitali.

Iluminarea este utilă pentru a arăta starea curentă a executării comenzilor. De exemplu, indicația de transfer de date — blink frecvent, încercarea de conectare — blink rar, inactiv — aprins continuu. Să luăm în considerare comanda led. La intrare, acceptă doar un singur argument — tipul de blink al LED-ului.

# led
led on|off|fast|slow

Iată cum arată în viața reală:


Demonstrarea modurilor de operare a indicatorului personal prin comenzi shell

Pentru a lucra cu pinurile digitale, se folosește comanda io.

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

io set out0 1 # Setează ieșirea digitală OUT0 în starea 1 (LOW)
io get bin0   #  Obține valoarea intrării digitale BIN0

Este important să ne amintim că logica în acest caz este inversată. Prin urmare, 1=LOW, 0=HIGH. Folosind comanda io putem lucra cu ușurință cu pinurile digitale din scripturi bash și construi logica simplă pentru automatizare și control.

Ca o demonstrație a ușurinței de lucru cu intrările digitale și indicația, vom scrie un script lipsit de scop, care afișează starea intrării digitale cu ajutorul unui LED.

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

Principiul de funcționare al scriptului este simplu: dacă BIN0 este în starea 0, LED-ul clipește frecvent, altfel rămâne aprins continuu. Iată cum arată în direct:


Demonstrând funcționarea scriptului bash, care afișează starea intrării digitale cu ajutorul indicatorului.

În ciuda primitivismului acestui script, ilustrează clar cum, într-o singură linie, fără software suplimentar, biblioteci și configurații, se pot obține date de intrare de la intrările digitale și reacționa la ele.

Linkuri

  • În acest articol nu sunt abordate funcțiile de rețea ale routerelor, cum ar fi echilibrarea, failover, VPN și altele, deoarece toate aceste subiecte au fost deja discutate într-un alt articol de-al nostru: Routere industriale 4G SmartMotion.
  • Exemplu de utilizare a routerului ICR-3211B este în primul nostru articol: Salut, Habr, noi suntem Advantech.
  • Puteți verifica prețurile produselor în magazinul online. Site-ul propriu în limba română încă nu este gata.

Vă invităm la forumul partener Advantech

Router 4G ca server universal pentru IoT
Forumului Advantech va deveni o platformă unică pentru discutarea tendințelor locale și globale în domeniul Internetului lucrurilor. Aici veți putea schimba experiențe privind utilizarea noilor soluții tehnologice și produse, să găsiți noi clienți și parteneri. Veți avea șansa de a vedea produsele pe care le-am descris în articole și nu numai. Vor vorbi lideri din industrie și reprezentanți ai partenerilor cheie – NVidia, Intel și alte companii care participă activ la dezvoltarea Internetului industrial în anii următori. Ne va face plăcere să întâlnim toți specialiștii din domeniul automatizării industriale și Internetului lucrurilor la acest eveniment. Participarea este gratuită! Numărul de locuri este limitat. Grăbiți-vă să vă înregistrați.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster