Enrutador 4G como servidor universal para IoT


Los enrutadores de la serie ICR-3200 están diseñados para reemplazar el paquete clásico: una computadora de una sola placa + módem + enrutador. Ahora puede ejecutar toda la lógica necesaria directamente en el enrutador. Gracias a un potente procesador ARM, 512 MB de RAM y ~ 2 GB de memoria flash interna, ¡incluso puede iniciar el servidor nodejs en el enrutador!

Las interfaces seriales RS-232/485 también están integradas en el enrutador y están disponibles inmediatamente en el sistema operativo con acceso completo a la raíz. También está disponible un entorno abierto para crear programas nativos y una biblioteca C / C ++ para trabajar con API de hardware de bajo nivel.
La función de suspensión profunda ahorrará energía cuando trabaje con batería: el enrutador se puede activar solo cuando realmente se necesita comunicación.

En el artículo, analizaremos las funciones interesantes del dispositivo e intentaremos en la práctica trabajar con la interfaz de E / S desde scripts de shell.

Especificaciones técnicas


Los enrutadores de la serie ICR-3200 están hechos en una única plataforma de hardware y están representados por cinco modelos que difieren en los rangos de frecuencia de LTE, la presencia de Wi-Fi y geolocalización (GNSS). Los dispositivos se colocan como reemplazo de un paquete de una computadora de placa única y un enrutador. Un potente procesador y una gran cantidad de RAM le permite ejecutar aplicaciones de usuario con muchos recursos directamente en el enrutador.

  • Procesador Cortex-A8 : arquitectura de 1 GHz y 32 bits
  • 512 MB de RAM
  • Memoria flash de 1,5 a 4 GB : para almacenar datos de usuario
  • Puertos de E / S : las interfaces RS-232/485 y los puertos de E / S digitales están disponibles para que los usen los programas de usuario.

Por separado, hay un modelo ICR-3211B que funciona según el estándar LTE Cat. M1 ( NB-IoT ). Protocolo LTE Cat. M1 fue diseñado específicamente para soluciones M2M, tiene una baja velocidad de transferencia de datos (375 kb / s), así como un mayor alcance y una mayor estabilidad en condiciones difíciles de comunicación en interiores. El enrutador tiene un ionistor (supercondensador) incorporado, lo que permite que el dispositivo funcione por un corto tiempo después de un corte de energía completo.

Modo de sueño profundo


El modo de suspensión profunda le permite ingresar al enrutador en un estado en el que todos los procesos están congelados y el hardware se apaga para ahorrar energía, mientras que todas las funciones del dispositivo están apagadas y desde el lado se verá completamente apagado. El consumo de energía en este modo no es más de 10 mW .


En modo de suspensión, el enrutador casi no consume energía y se despierta en 3 segundos

Cuando necesita activar el enrutador para la transferencia de datos, se activa en ~ 3 segundos . Por supuesto, se requerirá tiempo adicional para registrar el módem en la red celular, pero esto es significativamente más rápido que descargar el enrutador desde cero. Esta opción es útil para sistemas autoalimentados, la mayoría de los cuales están inactivos y ocasionalmente activados, para realizar acciones activas, como una alarma o una unidad de respaldo.

Despertar y quedarse dormido


La gestión de quedarse dormido y despertarse se realiza a través del módulo Modo de suspensión .

Hay 2 formas de controlar el modo de suspensión:

  • A través de una entrada digital : en este modo, el enrutador es controlado por un dispositivo externo, como un microcontrolador. Mediante una señal BAJA, el enrutador se pone en suspensión en una entrada digital, y cuando recibe ALTA, se despierta o viceversa. También puede configurar un tiempo de espera de respuesta para protegerse contra cambios accidentales.
  • A través de un temporizador interno , el enrutador cuenta el tiempo y se despierta / se duerme en el momento adecuado. Es conveniente utilizarlo para realizar operaciones únicas o descargar datos durante un período determinado.


Interfaz de configuración de sueño profundo

Función de la última respiración


Una falla de energía en un sitio remoto puede ser especialmente desagradable porque no está claro por qué la comunicación con el sitio no está disponible. La función "Última respiración" permite que el enrutador funcione durante un tiempo después de un corte de energía completo y envía un mensaje de que se ha producido un accidente y que la alimentación de respaldo no se ha activado. Gracias al ionistor incorporado, cuyo recurso es mucho más que las baterías recargables, no requiere mantenimiento ni reemplazo. Esto es útil para sistemas de respaldo de energía donde las fallas son posibles y es importante hacer un seguimiento de cuándo se pierde completamente el voltaje.


El enrutador enviará una señal sobre un corte de energía incluso después de un corte de energía completo

Para responder adecuadamente al evento de pérdida de energía, debe saberlo de alguna manera.
La tensión de alimentación actual se puede obtener mediante el comando de status sys shell:

 $ 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 

O utilizando el control de E / S de hardware de Unix (ioctl) y un programa en C / C ++ u otro idioma.
La tabla muestra las direcciones de los registros de hardware necesarios. La tensión de alimentación actual se devuelve como un número entero, en milivoltios. Usar una API de bajo nivel es preferible a los scripts de shell en este caso para una reacción más rápida. La información detallada sobre cómo trabajar con el hardware está disponible en la guía del desarrollador.


Una solicitud ioctl que devuelve el voltaje de suministro actual.

Interfaces seriales


Hay dos interfaces seriales integradas en el enrutador: RS-232 y RS-485. Le permiten conectar dispositivos periféricos directamente al enrutador, sin el uso de flejes adicionales. Al mismo tiempo, se puede iniciar un servidor Node-RED o Nodejs completo en el enrutador, lo que permite implementar un dispositivo para implementar un sistema de automatización simple, sin computadoras ni controladores adicionales.



Por defecto, ambas interfaces están disponibles para funcionar como dispositivos seriales estándar en 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 # ←   

Todas las bibliotecas estándar admitirán estos dispositivos sin configuraciones adicionales, incluido el módulo Modbus-RTU2TCP y otros.

Módulos personalizados


La funcionalidad del dispositivo se puede ampliar utilizando módulos personalizados: esta es una versión simplificada de paquetes, solo sin un administrador de paquetes. La lista completa de módulos disponibles está disponible en https://advantech-bb.cz/products/software/user-modules .

Los módulos se instalan manualmente descargando el archivo del paquete a través de la interfaz web:



Actualmente hay 73 módulos disponibles. Aquí hay algunos interesantes:

  • Node-RED es una herramienta popular para combinar varios protocolos industriales en un solo sistema.
  • Nodejs es un servidor completo de nodejs. ¡Una gran cantidad de RAM y un potente procesador le permiten ejecutar aplicaciones exigentes directamente en el enrutador!
  • Python2 / 3
  • Web shell : le permite trabajar en la consola a través de un navegador.
  • Azure IoT SDK Python : un conjunto de herramientas para desarrollar programas para Microsoft Azure IoT Hub.

Como el firmware de los enrutadores está abierto, los desarrolladores pueden escribir sus propios módulos, incluidos aquellos con una interfaz web. Los materiales de referencia están disponibles en la guía de escritura del módulo y en la sección de desarrolladores del sitio web de la empresa. Para la conveniencia de crear paquetes, hay disponible un entorno de compilación cruzada listo para usar.

Recursos de hardware a través de scripts de shell


Para tareas de automatización simples, es conveniente usar scripts de shell desde los cuales puede controlar la indicación de luz y recibir / establecer el estado de los pines digitales.

La indicación de luz es conveniente para mostrar el estado actual de la ejecución del comando. Por ejemplo, la indicación de transferencia de datos - parpadeo frecuente, intento de conexión - parpadeo raro, simple - se ilumina continuamente. Considere el comando dirigido . En la entrada, solo se necesita un argumento: el tipo de LED que parpadea.

 # led led on|off|fast|slow 

Así es como se ve en la vida real:


Demostración de los modos operativos del indicador de usuario a través de comandos de shell

Para trabajar con pines digitales, use el comando io .

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

Es importante recordar que la lógica en este caso está invertida. En consecuencia, 1 = BAJO, 0 = ALTO. Usando el comando io , podemos trabajar fácilmente con pines digitales de scripts de bash y construir una lógica simple para la automatización y el control.

Como demostración de la simplicidad de trabajar con entradas e indicaciones digitales, escribiremos un script inútil que muestre el estado de una entrada digital usando un LED.

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

El principio de la secuencia de comandos es simple: si BIN0 está en estado 0, entonces el diodo se quema con frecuencia, de lo contrario se quema continuamente. Así es como se ve en vivo:


Demostración del script bash que muestra el estado de una entrada digital utilizando un indicador.

A pesar de lo primitivo de este script, muestra claramente cómo, en una línea, sin software adicional, bibliotecas y configuraciones, puede recibir datos de entrada de entradas digitales y responder a ellos.

Referencias



Bienvenido al foro de socios de Advantech



El Foro Advantech será una plataforma única para discutir las tendencias locales y globales en Internet de las cosas. Aquí puede intercambiar experiencias utilizando nuevas soluciones y productos tecnológicos, encontrar nuevos clientes y socios. Tendrá la oportunidad de ver los productos que describimos en los artículos y no solo. Contaremos con líderes de la industria y representantes de socios clave: NVidia, Intel y otras compañías que participarán activamente en el desarrollo de Internet industrial de las cosas para los próximos años. Estaremos encantados de ver a todos los expertos en el campo de la automatización industrial y la Internet de las cosas en el evento. ¡La participación en el evento es gratis! El número de plazas es limitado. Date prisa para registrarte .

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


All Articles