Router 4G come server universale per IoT

Router 4G come server universale per IoT
Router della serie ICR-3200 sono progettati per sostituire il classico abbinamento: computer single-board + modem + router. Ora è possibile eseguire tutta la logica necessaria direttamente sul router. Grazie al potente processore ARM, 512 MB di RAM e ~2 GB di memoria flash integrata, è persino possibile avviare un server nodejs sul router!

Le interfacce seriali RS-232/485 sono anche integrate nel router e disponibili immediatamente nel sistema operativo con accesso root completo. È anche disponibile un ambiente aperto per costruire programmi personalizzati e librerie C/C++ per interagire con le API hardware a basso livello.
La funzione di risparmio energetico permette di ridurre il consumo di energia quando si lavora a batteria: il router può essere attivato solo quando la connessione è realmente necessaria.

Nell'articolo esploreremo le funzioni interessanti del dispositivo e cercheremo di lavorare praticamente con l'interfaccia di input/output da script shell.

Caratteristiche tecniche

Router della serie ICR-3200 sono realizzati su un'unica piattaforma hardware e presentati in cinque modelli, che variano per bande di frequenza LTE, presenza di Wi-Fi e geolocalizzazione (GNSS). I dispositivi sono posizionati come una sostituzione della combinazione di computer single-board e router. Il potente processore e l'ampia capacità di RAM consentono di eseguire applicazioni utente ad alta intensità di risorse direttamente sul router.

  • Processore Cortex-A8 — frequenza di clock 1 GHz, architettura a 32 bit
  • 512 MB di RAM
  • Memoria flash da 1,5 a 4 GB — per l'archiviazione dei dati utente
  • Porte di input/output — interfacce RS-232/485 e porte digitali di input/output disponibili per l'utilizzo da parte dei programmi degli utenti

Da segnalare il modello ICR-3211B, operante secondo lo standard LTE Cat. M1 (NB-IoT). Il protocollo LTE Cat. M1 è stato appositamente progettato per soluzioni M2M, ha una bassa velocità di trasmissione dati (375 kb/s), oltre a una maggiore portata e stabilità in condizioni di connessione difficili all'interno degli edifici. Il router ha un supercondensatore, che consente al dispositivo di funzionare per breve tempo dopo una completa interruzione dell'alimentazione.

Modalità di risparmio energetico profondo

La modalità di sonno profondo consente di mettere il router in uno stato in cui tutti i processi sono bloccati e l'hardware è disattivato, per risparmiare energia; tutte le funzioni del dispositivo sono disattivate e dall'esterno appare completamente spento. Il consumo energetico in questa modalità è di non oltre 10 mW.

Router 4G come server universale per IoT
In modalità sonno, il router consuma quasi nessuna energia e si riattiva in 3 secondi

Quando è necessario riattivare il router per la trasmissione dei dati, esso si risveglia in ~3 secondi. Naturalmente, ci vorrà ulteriore tempo per registrare il modem nella rete mobile, tuttavia ciò è notevolmente più veloce rispetto all'avvio del router da zero. Questa opzione è utile per i sistemi a alimentazione autonoma, che rimangono inattivi per la maggior parte del tempo e si attivano sporadicamente per eseguire azioni attive, ad esempio segnalazioni o blocchi di riserva.

Risveglio e sonno

La gestione del sonno e del risveglio avviene tramite il modulo Modalità Sonno.

Esistono 2 modi per gestire la modalità sonno:

  • Attraverso un ingresso digitale — in questa modalità il router è controllato da un dispositivo esterno, ad esempio un microcontrollore. Al segnale LOW sull'ingresso digitale, il router entra in modalità sonno, mentre al segnale HIGH si riattiva, o viceversa. È possibile anche impostare un timeout per proteggere da cambiamenti accidentali.
  • Attraverso un timer interno — il router tiene traccia del tempo e si riattiva/si addormenta al momento opportuno. Questo è utile per eseguire operazioni una tantum o per scaricare dati per un periodo specifico.

Router 4G come server universale per IoT
Interfaccia di configurazione della modalità di sonno profondo

Funzione "ultimo respiro"

Un guasto di alimentazione in un'installazione remota può essere particolarmente sgradevole, poiché non è chiaro cosa abbia causato l'assenza di comunicazione con l'oggetto. La funzione "Ultimo respiro" consente al router di funzionare per un certo periodo dopo un'interruzione totale dell'alimentazione e di inviare un messaggio che indica che si è verificato un guasto e che l'alimentazione di riserva non è stata attivata. Grazie all'ultracapacitore integrato, la cui durata è significativamente superiore a quella delle batterie, non necessita di manutenzione e sostituzione. Questo è utile per i sistemi di alimentazione di riserva, nei quali possono verificarsi guasti e è importante tenere traccia del momento in cui si verifica una completa perdita di tensione.

Router 4G come server universale per IoT
Il router invierà un segnale di guasto di alimentazione anche dopo una disattivazione totale dell'alimentazione

Per reagire correttamente a un evento di perdita di alimentazione, è necessario in qualche modo esserne a conoscenza.
La corrente di alimentazione attuale può essere ottenuta tramite un comando shell status sys:

$ status sys
Versione del firmware: 6.1.10 (02-07-2019)
Numero di serie: ACZ1100000623519
Profilo: Standard
Batteria RTC: Ok
Tensione di alimentazione: 12.3 V # ← tensione di alimentazione
Temperatura: 37 C   # ← temperatura interna al contenitore
Ora: 2019-08-16 16:21:18
Tempo di attività: 0 giorni, 11 ore, 43 minuti

Oppure tramite il controllo hardware Unix I/O (ioctl) e un programma in C/C++ o in un'altra lingua.
La tabella mostra gli indirizzi dei registri hardware necessari. La tensione di alimentazione attuale viene restituita come numero intero, in millivolt. L'uso di un'API a basso livello è preferibile agli script shell in questo caso per una reazione più rapida. Ulteriori informazioni sul funzionamento dell'hardware sono disponibili nel manuale dello sviluppatore.

Router 4G come server universale per IoT
Richiesta ioctl che restituisce la tensione di alimentazione attuale.

Interfacce seriali

Il router è dotato di due interfacce seriali: RS-232 e RS-485. Queste consentono di collegare dispositivi periferici direttamente al router, senza l'uso di ulteriori componenti. Inoltre, sul router può essere eseguito un server Node-RED o Nodejs completo, consentendo di utilizzare un solo dispositivo per implementare un semplice sistema di automazione, senza computer o controller aggiuntivi.

Router 4G come server universale per IoT

Per impostazione predefinita, entrambe le interfacce sono disponibili per l'uso come dispositivi seriali standard in Linux:

ls -la /dev/ttyS*
crw-------    1 root     root      251,   0 1 gen 1970 /dev/ttyS0 # ← porta rs-232
crw-------    1 root     root      251,   1 1 gen 1970 /dev/ttyS1 # ← porta rs-485 
crw-------    1 root     root      251,   5 1 gen 1970 /dev/ttyS5 # ← non cablato

Tutte le librerie standard supporteranno questi dispositivi senza ulteriori configurazioni, incluso il modulo Modbus-RTU2TCP e altri.

Moduli personalizzati

La funzionalità del dispositivo può essere estesa utilizzando moduli personalizzati: si tratta di una versione semplificata dei pacchetti, ma senza il gestore di pacchetti. L'elenco completo dei moduli disponibili è disponibile sul sito https://advantech-bb.cz/products/software/user-modules.

I moduli vengono installati manualmente, caricando il file del pacchetto tramite l'interfaccia web:

Router 4G come server universale per IoT

Attualmente sono disponibili 73 moduli. Ecco alcuni dei più interessanti:

  • Node-RED — uno strumento popolare per unire vari protocolli industriali in un sistema unico
  • Nodejs — un server nodejs completo. Una grande quantità di memoria RAM e un potente processore consentono di eseguire applicazioni a elevato utilizzo di risorse direttamente sul router!
  • Python2/3
  • Web-shell — consente di lavorare in console tramite il browser.
  • Azure IoT SDK Python — un insieme di strumenti per lo sviluppo di programmi per Microsoft Azure IoT Hub.

Poiché il firmware dei router è aperto, gli sviluppatori possono scrivere moduli personalizzati, inclusi quelli con interfaccia web. Materiale di riferimento è disponibile nel manuale di scrittura dei moduli e e nella sezione per sviluppatori sul sito web dell'azienda. Per facilitare la creazione di pacchetti è disponibile un ambiente pronto per la cross-compilazione.

Risorse hardware tramite script shell

Per compiti di automazione semplici è comodo utilizzare script shell, da cui è possibile gestire l'indicatore luminoso e ottenere/impostare lo stato dei pin digitali.

L'indicatore luminoso è utile per mostrare lo stato attuale dell'esecuzione dei comandi. Ad esempio, l'indicazione di trasmissione dati — lampeggiamento frequente, tentativo di connessione — lampeggiamento raro, inattività — acceso in modo continuo. Consideriamo il comando led. Accetta solo un argomento — il tipo di lampeggiamento del LED.

# led
led on|off|fast|slow

Ecco come appare nella vita reale:


Dimostrazione dei modelli di funzionamento dell'indicatore utente tramite comandi shell

Per lavorare con i pin digitali si utilizza il comando io.

$ io
Uso: io [get <pin>] | [set <pin> <value>]

io set out0 1 # Imposta l'uscita digitale OUT0 nello stato 1 (LOW)
io get bin0   #  Ottieni il valore dell'ingresso digitale BIN0

È importante ricordare che la logica in questo caso è invertita. Di conseguenza 1=LOW, 0=HIGH. Utilizzando il comando io possiamo lavorare facilmente con i pin digitali da script bash e costruire logiche semplici per l'automazione e il controllo.

Come dimostrazione della semplicità di utilizzo degli ingressi digitali e dell'indicazione, scriveremo uno script inutile che mostra lo stato dell'ingresso digitale tramite un LED.

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

Il principio di funzionamento dello script è semplice: se BIN0 è nello stato 0, il LED lampeggia frequentemente, altrimenti rimane acceso in modo continuo. Ecco come appare dal vivo:


Dimostrazione del funzionamento dello script bash che mostra lo stato dell'ingresso digitale tramite l'indicatore.

Nonostante la semplicità di questo script, mostra chiaramente come ottenere dati di input da ingressi digitali e reagire ad essi in una sola riga, senza software aggiuntivo, librerie e configurazioni.

Link

  • In questo articolo non vengono trattate le funzioni di rete dei router, come bilanciamento, failover, VPN e altro, poiché tutti questi argomenti sono già stati approfonditi in un altro nostro articolo: Router industriali 4G SmartMotion.
  • Esempio di utilizzo del router ICR-3211B è nel nostro primo articolo: Ciao, Habr, siamo Advantech.
  • È possibile consultare i prezzi dei prodotti nel nostro negozio online. Il sito web in russo non è ancora pronto.

Invitiamo al forum partner di Advantech

Router 4G come server universale per IoT
Il forum di Advantech sarà un luogo unico per discutere le tendenze locali e globali nell'ambito dell'Internet delle cose. Qui potrai scambiare esperienze sull'uso di nuove soluzioni e prodotti tecnologici, trovare nuovi clienti e partner. Avrai la possibilità di vedere i prodotti che abbiamo descritto negli articoli e non solo. Interverranno leader del settore e rappresentanti di partner chiave – NVidia, Intel e altre aziende che partecipano attivamente allo sviluppo dell'Internet industriale delle cose nei prossimi anni. Saremo lieti di vedere all'evento tutti i professionisti nel campo dell'automazione industriale e dell'Internet delle cose. La partecipazione all'evento è gratuita! Il numero di posti è limitato. Affrettati a registrarti.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster