Routeur 4G comme serveur universel pour l'IoT


Les routeurs de la série ICR-3200 sont conçus pour remplacer le bundle classique: un ordinateur monocarte + un modem + un routeur. Vous pouvez maintenant exécuter toute la logique nécessaire directement sur le routeur. Grâce à un puissant processeur ARM, 512 Mo de RAM et ~ 2 Go de mémoire flash interne, vous pouvez même démarrer le serveur nodejs sur le routeur!

Les interfaces série RS-232/485 sont également intégrées au routeur et sont disponibles immédiatement dans le système d'exploitation avec un accès root complet. Un environnement ouvert pour la création de programmes natifs et une bibliothèque C / C ++ pour travailler avec des API matérielles de bas niveau est également disponible.
La fonction de sommeil profond permet d'économiser de l'énergie lorsque vous travaillez sur la batterie: le routeur ne peut être activé que lorsque la communication est vraiment nécessaire.

Dans cet article, nous analyserons les fonctions intéressantes de l'appareil et essayerons en pratique de travailler avec l'interface d'E / S à partir de scripts shell.

Spécifications techniques


Les routeurs de la série ICR-3200 sont fabriqués sur une seule plate-forme matérielle et sont représentés par cinq modèles qui diffèrent dans les gammes de fréquences du LTE, la présence du Wi-Fi et la géolocalisation (GNSS). Les périphériques sont positionnés en remplacement d'un ensemble d'un ordinateur monocarte et d'un routeur. Un processeur puissant et une grande quantité de RAM vous permettent d'exécuter des applications utilisateur gourmandes en ressources directement sur le routeur.

  • Processeur Cortex-A8 - 1 GHz, architecture 32 bits
  • 512 Mo de RAM
  • Mémoire flash de 1,5 à 4 Go - pour le stockage des données utilisateur
  • Ports d'E / S - Les interfaces RS-232/485 et les ports d'E / S numériques sont disponibles pour une utilisation par les programmes utilisateur.

Séparément, il existe un modèle ICR-3211B qui fonctionne selon la norme LTE Cat. M1 ( NB-IoT ). Protocole LTE Cat. M1 a été spécialement conçu pour les solutions M2M, a un faible taux de transfert de données (375 kb / s), ainsi qu'une plus longue portée et une stabilité accrue dans des conditions de communication intérieures difficiles. Le routeur dispose d'une ionistance intégrée (supercondensateur) , permettant à l'appareil de fonctionner pendant une courte période après une panne de courant complète.

Mode sommeil profond


Le mode de veille profonde vous permet de mettre le routeur dans un état où tous les processus sont gelés et le matériel est éteint pour économiser de l'énergie, tandis que toutes les fonctions de l'appareil sont désactivées et de côté, il sera complètement éteint. La consommation d'énergie dans ce mode ne dépasse pas 10 mW .


En mode veille, le routeur ne consomme presque pas d'énergie et se réveille en 3 secondes

Lorsque vous devez réveiller le routeur pour le transfert de données, il se réveille en ~ 3 secondes . Bien sûr, un délai supplémentaire sera nécessaire pour enregistrer le modem sur le réseau cellulaire, mais c'est beaucoup plus rapide que de télécharger le routeur à partir de zéro. Cette option est utile pour les systèmes autoalimentés, dont la plupart sont inactifs et parfois activés, pour effectuer des actions actives, telles qu'une alarme ou une unité de secours.

Se réveiller et s'endormir


La gestion de l'endormissement et du réveil se fait via le module Sleep Mode .

Il existe 2 façons de contrôler le mode veille:

  • Via une entrée numérique - dans ce mode, le routeur est contrôlé par un périphérique externe, tel qu'un microcontrôleur. Par un signal LOW, le routeur se met en veille sur une entrée numérique, et lorsqu'il reçoit HIGH, il se réveille, ou vice versa. Vous pouvez également configurer un délai de réponse pour vous protéger contre une commutation accidentelle.
  • Grâce à une minuterie interne , le routeur compte le temps et se réveille / s'endort au bon moment. Il est pratique à utiliser pour effectuer des opérations ponctuelles ou télécharger des données pendant une certaine période.


Interface de configuration de sommeil profond

Dernière fonction respiratoire


Une panne de courant sur un site distant peut être particulièrement désagréable car on ne sait pas pourquoi la communication avec le site n'est pas disponible. La fonction «Dernier souffle» permet au routeur de fonctionner pendant un certain temps après une panne de courant complète et d'envoyer un message qu'un accident s'est produit et que l'alimentation de secours ne s'est pas allumée. Grâce à l'ionistor intégré, dont la ressource est bien plus que les batteries rechargeables, il ne nécessite ni entretien ni remplacement. Ceci est utile pour les systèmes de secours où des pannes sont possibles et il est important de garder une trace du moment où la tension est complètement perdue.


Le routeur enverra un signal sur une panne de courant même après une panne de courant complète

Afin de réagir correctement en cas de panne de courant, vous devez en quelque sorte vous renseigner à ce sujet.
La tension d'alimentation actuelle peut être obtenue à l'aide de la commande shell d' 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 # ←   Temperature : 37 C # ←    Time : 2019-08-16 16:21:18 Uptime : 0 days, 11 hours, 43 minutes 

Ou en utilisant le contrôle matériel d'E / S Unix (ioctl) et un programme en C / C ++ ou un autre langage.
Le tableau montre les adresses des registres matériels requis. La tension d'alimentation actuelle est renvoyée sous forme d'entier, en millivolts. L'utilisation d'une API de bas niveau est préférable à des scripts shell dans ce cas pour une réaction plus rapide. Des informations détaillées sur l'utilisation du matériel sont disponibles dans le guide du développeur.


Une requête ioctl qui renvoie la tension d'alimentation actuelle.

Interfaces série


Deux interfaces série sont intégrées au routeur: RS-232 et RS-485. Ils vous permettent de connecter des périphériques directement au routeur, sans utiliser de cerclage supplémentaire. Dans le même temps, un serveur Node-RED ou Nodejs à part entière peut être lancé sur le routeur, ce qui permet de déployer un appareil pour déployer un système d'automatisation simple, sans ordinateurs ni contrôleurs supplémentaires.



Par défaut, les deux interfaces sont disponibles pour fonctionner en tant que périphériques série standard sous Linux:

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

Toutes les bibliothèques standard prendront en charge ces périphériques sans paramètres supplémentaires, y compris le module Modbus-RTU2TCP et autres.

Modules personnalisés


Les fonctionnalités de l'appareil peuvent être étendues à l'aide de modules personnalisés: il s'agit d'une version simplifiée de packages, uniquement sans gestionnaire de packages. La liste complète des modules disponibles est disponible sur https://advantech-bb.cz/products/software/user-modules .

Les modules sont installés manuellement en téléchargeant le fichier de package via l'interface web:



Actuellement, 73 modules sont disponibles. En voici quelques-unes intéressantes:

  • Node-RED est un outil populaire pour combiner divers protocoles industriels en un seul système.
  • Nodejs est un serveur nodejs complet. Une grande quantité de RAM et un processeur puissant vous permettent d'exécuter des applications exigeantes directement sur le routeur!
  • Python2 / 3
  • Web shell - vous permet de travailler dans la console via un navigateur.
  • Azure IoT SDK Python - un ensemble d'outils pour développer des programmes pour le hub Microsoft Azure IoT.

Le micrologiciel des routeurs étant ouvert, les développeurs peuvent écrire leurs propres modules, y compris ceux avec une interface Web. Les documents de référence sont disponibles dans le guide de rédaction du module et dans la section développeur du site Web de l'entreprise. Pour faciliter la création de packages, un environnement de compilation croisée prêt à l' emploi est disponible.

Ressources matérielles via des scripts shell


Pour les tâches d'automatisation simples, il est pratique d'utiliser des scripts shell à partir desquels vous pouvez contrôler l'indication lumineuse et recevoir / définir l'état des broches numériques.

L'indication lumineuse est pratique pour montrer l'état actuel de l'exécution de la commande. Par exemple, l'indication de transfert de données - clignotement fréquent, tentative de connexion - clignotement rare, simple - s'allume en continu. Considérez la commande dirigée . À l'entrée, il ne prend qu'un seul argument - le type de LED clignotant.

 # led led on|off|fast|slow 

Voici à quoi cela ressemble dans la vraie vie:


Démonstration des modes de fonctionnement des indicateurs utilisateur via les commandes shell

Pour travailler avec des broches numériques, utilisez la commande io .

 $ io Usage: io [get <pin>] | [set <pin> <value>] io set out0 1 #    OUT0   1 (LOW) io get bin0 #     BIN0 

Il est important de se rappeler que la logique dans ce cas est inversée. Par conséquent, 1 = BAS, 0 = ÉLEVÉ. En utilisant la commande io , nous pouvons facilement travailler avec des broches numériques à partir de scripts bash et créer une logique simple pour l'automatisation et le contrôle.

Pour démontrer la simplicité de travail avec les entrées et indicateurs numériques, nous allons écrire un script inutile qui affiche l'état d'une entrée numérique à l'aide d'une LED.

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

Le principe du script est simple: si BIN0 est à l'état 0, alors la diode brûle souvent, sinon elle brûle en continu. Voici à quoi cela ressemble en direct:


Démonstration du script bash qui affiche l'état d'une entrée numérique à l'aide d'un indicateur.

Malgré la primitivité de ce script, il montre clairement comment, sur une seule ligne, sans logiciel, bibliothèques et paramètres supplémentaires, vous pouvez recevoir des données d'entrée à partir d'entrées numériques et y répondre.

Les références



Bienvenue sur le forum des partenaires Advantech



Le Forum Advantech sera une plate-forme unique pour discuter des tendances locales et mondiales de l'Internet des objets. Ici, vous pouvez échanger des expériences en utilisant de nouvelles solutions et produits technologiques, trouver de nouveaux clients et partenaires. Vous aurez la chance de voir les produits que nous avons décrits dans les articles et pas seulement. Nous mettrons en vedette des leaders de l'industrie et des représentants de partenaires clés - NVidia, Intel et d'autres sociétés qui participeront activement au développement de l'Internet des objets industriel pour les années à venir. Nous serons heureux de voir tous les experts dans le domaine de l'automatisation industrielle et de l'Internet des objets à l'événement. La participation à l'événement est gratuite! Le nombre de places est limité. Dépêchez-vous de vous inscrire .

Source: https://habr.com/ru/post/fr464003/


All Articles