
Router della serie sono progettati per sostituire la tradizionale combinazione: un computer a scheda singola + modem + router. Ora è possibile eseguire tutta la logica necessaria direttamente sul router. Grazie a un potente processore ARM, 512 MB di RAM e circa 2 GB di memoria flash integrata, è persino possibile avviare un server Node.js sul router!
Le interfacce serie RS-232/485 sono anch'esse integrate nel router e disponibili immediatamente nel sistema operativo con accesso root completo. Un ambiente aperto per la creazione di programmi personalizzati e librerie C/C++ per interagire con l'API hardware di basso livello sono anche disponibili.
La funzione di sonno profondo consentirà di risparmiare energia quando si alimenta con batteria: il router può essere attivato solo quando la connessione è effettivamente necessaria.
In questo articolo esamineremo le funzioni interessanti del dispositivo e proveremo a lavorare praticamante con l'interfaccia di input/output da script shell.
Specifiche tecniche
Router della serie sono realizzati su un'unica piattaforma hardware e sono disponibili in cinque modelli, che si differenziano per le bande di frequenza LTE, la presenza di Wi-Fi e geolocalizzazione (GNSS). I dispositivi sono posizionati come un'alternativa a una combinazione di computer a scheda singola e router. Un potente processore e un grande volume di memoria RAM permettono di eseguire applicazioni utente ad alta richiesta 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 memorizzare i dati degli utenti
- Porti di input/output — interfacce RS-232/485 e porte digitali di input/output disponibili per l'uso da parte di programmi utente
Vale la pena menzionare il modello , che opera secondo lo standard LTE Cat. M1 (). Il protocollo LTE Cat. M1 è stato appositamente progettato per soluzioni M2M, ha una bassa velocità di trasmissione dati (375 kb/s) e offre una maggiore portata e stabilità in condizioni di comunicazione complesse all'interno degli edifici. Il router è dotato di , che consente al dispositivo di funzionare per un breve periodo dopo lo spegnimento completo.
Modalità di sleep profondo
La modalità di sonno profondo consente di mettere il router in uno stato in cui tutti i processi sono congelati e l'hardware è spento, risparmiando energia; tutte le funzioni del dispositivo sono disattivate e apparirà completamente spento. Il consumo energetico in questa modalità è di non più di 10 mW.

In modalità standby, il router consuma quasi energia e si riattiva in 3 secondi
Quando è necessario riattivare il router per trasmettere dati, esso si risveglierà in circa 3 secondi. È chiaro che ci vorrà tempo aggiuntivo per registrare il modem nella rete cellulare, tuttavia questo è notevolmente più veloce rispetto all'avvio del router da zero. Questa opzione è utile per sistemi con alimentazione autonoma, che trascorrono la maggior parte del tempo in idle e si attivano sporadicamente per eseguire azioni attive, come allarmi o blocchi di riserva.
Risveglio e ibernazione
La gestione dell'ibernazione e del risveglio avviene tramite il modulo .
Ci sono 2 modi per gestire la modalità di sonno:
- Attraverso l'ingresso digitale — in questa modalità, il router è controllato da un dispositivo esterno, come un microcontrollore. Quando riceve un segnale LOW sull'ingresso digitale, il router entra in modalità sleep e si sveglia quando riceve HIGH, o viceversa. È possibile anche impostare un timeout di attivazione per proteggere da attivazioni accidentali.
- Attraverso il timer interno — il router misura il tempo e si sveglia/entra in modalità sleep all'orario prestabilito. Questo è utile per eseguire operazioni singole o per il download di dati in un determinato periodo.

Interfaccia di configurazione della modalità di profondità di sonno
Funzione "ultimo sospiro"
Un'interruzione di corrente in un sito remoto può essere particolarmente sgradevole, poiché non è chiaro perché la comunicazione con il sito sia interrotta. La funzione "Ultimo sospiro" consente al router di funzionare per un certo periodo dopo un'interruzione totale di corrente, inviando un messaggio che segnala l'incidente e che l'alimentazione di emergenza non è stata attivata. Grazie al condensatore integrato, la cui capacità è significativamente superiore a quella delle batterie, non necessita di manutenzione e sostituzione. Questo è utile per i sistemi di alimentazione di emergenza, in cui possono verificarsi interruzioni e è importante monitorare il momento della perdita totale di tensione.

Il router invierà un segnale di errore di alimentazione anche dopo una completa disconnessione dall'alimentazione.
Per rispondere correttamente all'evento di interruzione dell'alimentazione, è necessario avere un modo per essere avvisati.
La tensione di alimentazione attuale può essere ottenuta sia tramite un comando shell. status sys:
$ status sys
Versione firmware : 6.1.10 (2019-07-02)
Numero di serie : ACZ1100000623519
Profilo : Standard
Batteria RTC : Ok
Tensione fornitura : 12.3 V # ← tensione di alimentazione
Temperatura : 37 C # ← temperatura interna
Ora : 2019-08-16 16:21:18
Tempo attivo : 0 giorni, 11 ore, 43 minuti
Oppure tramite il controllo I/O hardware Unix (ioctl) e un programma in C/C++ o in un altro linguaggio.
La tabella mostra gli indirizzi dei registri hardware necessari. La tensione di alimentazione attuale è 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. Maggiori informazioni su come interagire con l'hardware sono disponibili nella

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 necessità di ulteriore cablaggio. Inoltre, sul router può essere eseguito un server completo Node-RED o Node.js, permettendo di utilizzare un solo dispositivo per implementare un semplice sistema di automazione, senza computer o controller aggiuntivi.

Di default, entrambe le interfacce sono disponibili come dispositivi seriali standard in Linux:
ls -la /dev/ttyS*
crw------- 1 root root 251, 0 Jan 1 1970 /dev/ttyS0 # ← porta rs-232
crw------- 1 root root 251, 1 Jan 1 1970 /dev/ttyS1 # ← porta rs-485
crw------- 1 root root 251, 5 Jan 1 1970 /dev/ttyS5 # ← non cablata
Tutte le librerie standard supporteranno questi dispositivi senza ulteriori configurazioni, incluso il modulo e altri.
Moduli personalizzati
La funzionalità del dispositivo può essere ampliata tramite moduli personalizzati: si tratta di una versione semplificata dei pacchetti, ma senza il gestore di pacchetti. L'elenco completo dei moduli disponibili è presente sul sito .
I moduli vengono installati manualmente, caricando un file del pacchetto tramite l'interfaccia web:

Attualmente sono disponibili 73 moduli. Ecco alcuni dei più interessanti:
- — uno strumento popolare per integrare diversi protocolli industriali in un sistema uniforme
- — un server completo nodejs. L'ampia memoria RAM e il potente processore consentono di eseguire applicazioni ad alta intensità di risorse direttamente sul router!
- — consente di lavorare nella console tramite il browser.
- — un insieme di strumenti per lo sviluppo di applicazioni per Microsoft Azure IoT Hub.
Poiché il firmware dei router è aperto, gli sviluppatori possono scrivere i propri moduli, inclusi quelli con interfaccia web. Sono disponibili materiali di riferimento nel e sul sito web dell'azienda. Per facilitare la creazione dei pacchetti, è disponibile un .
Risorse hardware tramite script shell
Per compiti di automazione semplici, è comodo utilizzare script shell, dai quali è possibile gestire l'indicazione luminosa e ottenere/impostare lo stato dei pin digitali.
L'indicatore luminoso è utile per mostrare lo stato attuale delle operazioni. Ad esempio, l'indicazione di trasmissione dei dati è un lampeggiamento frequente, il tentativo di connessione è un lampeggiamento raro, mentre l'attesa è una luce fissa. Consideriamo il comando led. Prende solo un argomento in input: il tipo di lampeggiamento del LED.
# led
led on|off|fast|slow
Ecco come si presenta nella vita reale:
Dimostrazione dei modi di funzionamento dell'indicatore utente tramite comandi shell
Per lavorare con i pin digitali si usa il comando io.
$ io
Usage: io [get ] | [set ]
io set out0 1 # Imposta l'uscita digitale OUT0 sullo stato 1 (LOW)
io get bin0 # Ottieni il valore dell'ingresso digitale BIN0
È importante ricordare che in questo caso la logica è invertita. Quindi 1=LOW, 0=HIGH. Utilizzando il comando io possiamo facilmente gestire i pin digitali dai bash script e costruire logiche semplici per automazione e controllo.
Come dimostrazione della facilità di lavoro con gli ingressi digitali e la segnalazione, scriviamo uno script inutile che mostra lo stato di un ingresso digitale utilizzando 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 il BIN0 è in stato 0, il diodo lampeggia frequentemente, altrimenti rimane acceso in modo continuativo. Ecco come appare dal vivo:
Dimostrazione del funzionamento di uno script bash che mostra lo stato dell'ingresso digitale tramite un indicatore.
Nonostante la semplicità di questo script, illustra chiaramente come, in una sola riga, senza software aggiuntivo, librerie e configurazioni, sia possibile ottenere dati dagli ingressi digitali e reagire a essi.
Link
- In questo articolo non vengono trattate le funzioni di rete dei router, come il bilanciamento del carico, il failover, la VPN e altro, poiché tutti questi temi sono già stati esaminati in un nostro articolo precedente: .
- Esempio di applicazione del router è nel nostro primo articolo: .
- Puoi consultare i prezzi dei prodotti nel nostro . Il sito ufficiale in russo non è ancora pronto.
Ti invitiamo al forum dei partner Advantech

Il forum di Advantech sarà un'opportunità unica per discutere tendenze locali e globali nel campo dell'Internet delle Cose. Qui potrai condividere esperienze sull'uso di nuove soluzioni e prodotti tecnologici, trovare nuovi clienti e partner. Avrai la possibilità di vedere i prodotti di cui abbiamo parlato negli articoli e altro ancora. Interverranno leader del settore e rappresentanti di partner chiave come NVidia, Intel e altre aziende che partecipano attivamente allo sviluppo dell'Internet delle Cose industriale nei prossimi anni. Siamo lieti di accogliere tutti i professionisti nel campo dell'automazione industriale e dell'Internet delle Cose all'evento. La partecipazione è gratuita! I posti sono limitati. .
Fonte: habr.com
