Node-RED es una herramienta de programación visual. Muestra visualmente las relaciones y funciones, y permite al usuario programar sin tener que escribir una línea de código. Node-RED es un editor de flujo basado en el navegador donde se puede añadir o eliminar nodos y conectarlos entre sí con el fin de hacer que se comuniquen entre ellos. Es una plataforma emergente, gratuita y muy atractiva para integrar todo tipo de accesorios del cuarto de radio.

Esta página no pretende explicar o aclarar todas las posibilidades que ofrece Node-Red, sin duda que vas a encontrar en Internet todo tipo de información sobre lo que es y se puede hacer con Node-Red. Aquí vamos a ver cómo puedes controlar desde esta plataforma tu sistema de control de motores (ARS-USB) o controlador de Stacks/Antennas (RemoteBox) de forma que es una alternativa muy interesante para el control de motores y antenas.

Para simplificar el acceso de Node-Red al ARS-USB, vamos a usar el servicio ser2net. Este programa ser2net hace las veces de enrutador de puerto serie a TCP/IP luego desde Node-Red en vez de utilizar el puerto serie, se empleará una conexión TCP/IP.

Nota: Existe una versión avanzada de ser2net denominada ser2net+ que permite varias conexiones simultáneas TCP/IP al mismo puerto serie, con lo cual podemos tener por ejemplo el ARSVCOM y Node-Red accediendo al mismo ARS-USB

En este esquema se muestra el diagrama de la solución completa. Consta de los siguientes módulos:

  • Ser2Net: módulo que queda a la escucha en un puerto TCP/IP y que encamina el tráfico hacia el puerto serie de cada dispositivo (ARS-USB, RemoteBox o StackMain). Node-Red accede a este servicio para acceder a los equipos a controlar.
  • Node-Red: Plataforma Visual de programación de flujos que permitirá controlar cualquiera de los equipos: ARS-USB, RemoteBox, StackMain
  • EA4TX Flow: Flujo demo para Node-Red, que controla cualquiera de los equipos diseñados por EA4TX (RemoteBox, ARS-USB, …) y dota de una interface gráfica para el control del motor.

La solución ofrece 2 interfaces:

  • WEB: Por un lado Node-Red (EA4TX Flow) proporciona una interface gráfica via WEB, con lo cual cualquier dispositivo tipo movil, tableta u ordenador pueden interactuar y manejar los motores
  • Nativa TCP/IP: de forma que el programa ARSVCOM que se incluye con el ARS-USB, puede convivir e interactuar con el controlador del motor ARS-USB.

La plataforma hardware ideal para gestionar los equipos (ARS-USB, RemoteBox, …) es sin duda la Raspberry Pi, debido a su fiabilidad,  bajo consumo – con lo cual nos despreocupamos al dejarla encendida 24h – y a su interesante precio.

Puesto que una RsPi cuenta con 4 puertos USB, podemos tener conectados hasta 4 equipos diferentes por Raspberry Pi.

En unos simples pasos, vamos a poner en marcha esta solución, no será necesario tener grandes conocimientos informáticos aunque siempre puedes solicitar en nuestra tienda una Raspberry o la imagen con Node-Red y todo ya instalado.

1.- Instalación del servicio Ser2Net

El servicio ser2net se puede instalar mediante el comando:

sudo apt-get install ser2net

Ahora editas la configuración de este servicio, que estará en el directorio:

/etc/ser2net.conf

Para editarlo, teclea:

sudo nano /etc/ser2net.conf

Vas al final del fichero, quitas los ejemplos (o los comentas) que vienen por defecto y añades una línea similar a:

6001:raw:600:/dev/ttyACM0:38400 8DATABITS NONE 1STOPBIT

En este ejemplo, la RsPi escucha en el puerto 6001 y envía todo el tráfico al puerto serie ttyACM0.

Nota: En caso que el ARS-USB estuviese en otro puerto serie, sustituye ttyACM0 por el correspondiente.

Para que arranque de forma automática el servicio, debes escribir:

sudo service ser2net restart

Con esto hemos ya conseguido que las conexiones a este puerto de la RsPi sean encaminados al ARS-USB. Si vas a utilizar Node-Red el acceso se realizará mediante TCP apuntando a ese puerto.

En caso de necesitar encaminar el tráfico para 2 o más equipos, se ha de incluir una linea por equipo, de forma que de tener 2 equipos (p.e. ARS-USB y RemoteBox) tendremos que añadir dos líneas – una por equipo – donde especificaremos puertos diferentes en los que se escucha (p.e. 6001 y 8001) y puertos serie diferentes (p.e. ttyACM0 y ttyACM1) para acceder a cada equipo.

2.- Instalación de Node-Red

Aunque Node-Red puede funcionar sobre cualquier plataforma (Linux, Windows, Mac OSX), nos vamos a limitar en su funcionamiento con una Raspberry Pi.

Para instalar Node-Red sin duda alguna lo mejor es acudir a la fuente oficial:

https://nodered.org/docs/getting-started/raspberrypi

Y una vez instalado, ya podrás acceder a tu Raspberry Pi mediante el navegador:

http://<hostname>:1880

Nota: sustituye <hostname> por la IP de tu Raspberry Pi

3.- Importar Flows EA4TX

Para familiarizarte al principio con Node-Red lo mejor es leer algún tutorial en internet o ver algún video, en concreto familiarizarse con el entorno y su interface, saber lo que es un nodo, como editar nodos, cómo se conectan entre sí y sobre todo, cargar o importar un Flow, puesto que aquí es donde tendrás que llegar para poder importar el Flow del ARS.

Para importar el fichero de Flujo para el control del ARS debes ir a la parte derecha superior e indicar Importar (Import)

Seleccionar el fichero a importar y que se importe sobre un nuevo flow.

En este caso, la importación ha añadido 2 Flows o flujos:

  • EA4TX ARS Rotor: para la gestión del rotor
  • RemoteBox: Para la gestión del RemoteBox

Los flujos agrupan nodos que se pueden interconectar entre sí y que permitirán representar gráficamente la posición del motor y Presets o Memorias para poder usar. En el caso del flujo ARS-USB se agrupan unos nodos que corresponden con botones de Memorias, botones de giro a izquierda, derecha y Stop y la visualización de la posicion del motor. Tambien se incluye el subflow que realizar el acceso al ARS-USB y que es visible como un nodo más.

Además se ha incorporado 2 subflows:

  • EA4TX Rotor Node
  • RemoteBox Node

Los sub-flows son un conjunto de nodos que operan a modo librería. El subflow EA4TX Rotor Node gestiona todo lo referente al control de motores mientras que el subflow RemoteBox Node lo relacionado al RemoteBox. 

Así por ejemplo al incorporar en un Flujo uno de estos subflows, queda representado como un nodo más; este subflow presenta 2 propiedades que son:

  • IP del equipo (por ejemplo si está en la misma maquina 127.0.0.1)
  • Puerto: Puerto en el que está escuchando. Este parámetro por ejemplo corresponde con el puerto definido en el servicio ser2net para ese dispositivo.

Por otro lado cada sub-flow incluye una entrada de comandos, y una salida para sus respuestas.

La entrada de este subflow se usa para enviar ordenes al ARS-USB, por ejemplo para girar a una determinada posición y la salida nos devuelve respuestas, por ejemplo la posición del motor.

Para finalizar vamos a explicar el funcionamiento del flujo EA4TX ARS Rotor

Para explicar este flujo, comenzamos por el subflujo que hace la interface con el ARS-USB. Desde 1  optemos la posición del motor que es enviado al nodo 2 donde se procesa. Este nodo a su salida entrega el resultado a:

  •  3  donde se calcula el triángulo del lóbulo de radiación de +/-10º a partir de la posición a la que apunta el motor y se manda al nodo  5  donde se pinta junto con el mapa ortogonal
  •  4  para que sea visualizado en un cuadro 

Si el usuario hace click en el mapa (Nodo SVG Graphics), se pasan esas coordenadas a  6  donde se calcula el ángulo y que a su vez se encamina a otros 2 nodos:

  • Por un lado se genera la orden para enviar al ARS la orden de girar a ese rumbo, flujo que pasa por  8  
  • Se pasa ese rumbo al nodo  7  para que calcule el triangulo del lóbulo de radiación de valor del preset calculado.

Por otro lado los 8 botones de Memorias, así como los botones de Giro a izquierda/derecha y STOP entregan sus valores al subflujo de envío al ARS en el punto de entrada  9  

Y el aspecto del flujo completo para el control del ARS, es el siguiente:

Puedes descargar este Flujo: