- Prerrequisitos
- Componentes requeridos
- Instalación de Node-RED en Raspberry Pi
- Lanzamiento de Node-RED en Raspberry Pi
- Comprensión de la interfaz Node-RED
- Esquemas
- Creando un flujo en Node-RED
- Agregar un pulsador / interruptor en la interfaz Node-RED con Raspberry Pi
Alguna vez se preguntó si había una forma de hacer prototipos simples de soluciones de IoT sin tener que pasar días escribiendo códigos o construir proyectos prácticos avanzados sin codificación. Sí, esto es posible con la plataforma Node-Red. Desarrollado por IBM, Node-RED es una herramienta de programación de código abierto para conectar dispositivos de hardware, API y servicios en línea de una manera nueva e interesante. Proporciona un editor basado en navegador que facilita la conexión entre ' flujos' utilizando la amplia gama de nodos de la paleta que se pueden implementar en su tiempo de ejecución con un solo clic.
Node-RED es una poderosa herramienta para crear aplicaciones de Internet de las cosas (IoT) con el objetivo de simplificar el componente de programación.
Utiliza programación visual que le permite conectar bloques de código, conocidos como nodos, juntos para realizar una tarea. Para el tutorial de hoy, examinaremos cómo puede implementar proyectos simples en raspberry pi usando Node-RED. El tutorial de raspberry pi node-red cubrirá;
- Instalación de Node-RED en Raspberry Pi.
- Introducción a la interfaz de usuario de Node-RED
- Cómo configurar los flujos Node-RED
- Cómo controlar los pines GPIO de Raspberry Pi con Node-RED
- Cómo utilizar las entradas y salidas de Node-RED y la toma de decisiones de tipo if-else utilizando interruptores
Prerrequisitos
Este tutorial se basará en el sistema operativo Raspbian stretch y asumiré que está familiarizado con la configuración de la Raspberry Pi con él, y que sabe cómo SSH en la Pi utilizando un software de terminal como putty. Si tiene problemas con algo de esto, hay toneladas de Tutoriales de Raspberry Pi en este sitio web que pueden ayudar.
Para completar fácilmente el tutorial, le recomendaré que use un monitor conectado a la raspberry pi o que use el software VNC Viewer. Si no tiene un monitor y comienza de nuevo con Pi, puede leer esta configuración de Headless Raspberry Pi para continuar con este tutorial. Si bien Node-Red se ejecuta desde un navegador web y se puede acceder a él en su PC a la que está conectado el Pi a través de la dirección IP del Pi, creo que la experiencia de VNC / monitor le dará un mejor truco.
Como demostración para mostrar cómo funciona Node-Red, usaremos Node-RED para programar la Raspberry Pi para controlar un LED conectado a su GPIO y luego modificar el programa para permitir que el LED sea controlado desde un pulsador táctil conectado al Pi. GPIO.
Componentes requeridos
Se requieren los siguientes componentes para construir este proyecto;
- Raspberry Pi 3 con tarjeta SD precargada con Raspbian Stretch precargado
- Resistencia de 100 ohmios (1)
- LED (1)
- Protoboard (1)
- Cables de puente macho a hembra
- Pulsador táctil (1)
Instalación de Node-RED en Raspberry Pi
Si bien Node-Red viene preinstalado en Raspbian Stretch OS, debemos actualizarlo antes de poder disfrutar de algunas de sus últimas funciones. Actualizar el Nodo-Rojo voluntad
- Actualice el usuario existente a LTS 8.xo 10.x Node.js y el último Node-RED
- Migre todos los nodos existentes instalados globalmente al espacio de usuarios ~ /.node-red para que puedan administrarse a través del administrador de paleta, NO actualiza ningún nodo existente instalado por el usuario. Esto debe ser realizado manualmente por el usuario (ver más abajo).
- Opcionalmente (re) instale los nodos adicionales que están preinstalados en una imagen completa de Raspbian Pi.
Sin embargo, el proceso de actualización de Node-Red es similar a instalar uno nuevo, por lo que, por el bien de este tutorial, lo trataremos como una nueva instalación para que las personas que usan otras versiones del sistema operativo puedan seguirlo.
Siga los pasos a continuación para instalar / actualizar Node-RED en su Raspberry Pi.
Comenzamos actualizando y actualizando el pi, para asegurarnos de que todo esté actualizado y evitar problemas de compatibilidad. Haga esto abriendo una terminal o vía ssh, y ejecute;
Sudo apt-get update
seguido por
sudo apt-get upgrade
Una vez hecho esto, ejecute el script bash a continuación en la terminal;
bash <(curl -sL
El script bash hará las siguientes cosas
- Pregunte si desea (re) instalar los nodos Pi adicionales
- Guarde una lista de todos los nodos node-red- instalados globalmente que se encuentran en / usr / lib / node_modules
- apt-get eliminar existente Node-Red
- elimine los binarios de node-red de / usr / bin y / usr / local / bin
- Elimine cualquier módulo node-red de / usr / lib / node_modules y / usr / local / lib / node_modules
- Detectar si Node.js se instaló desde el paquete Node.js o Debian
- Si no es v8 o más reciente, elimínelo según corresponda e instale el último LTS v8 o v10 (sin usar apt).
- Limpiar la caché npm y la caché.node-gyp para eliminar cualquier versión anterior del código
- Instale la última versión de Node-RED
- Vuelva a instalar bajo la cuenta de usuario todos los nodos que se hayan instalado previamente globalmente
- Vuelva a instalar los nodos Pi adicionales si es necesario
- Reconstruir todos los nodos: para volver a compilar cualquier binario para que coincida con la última versión de Node.js
- Agregue los comandos node-red-start, node-red-stop y node-red-log a / usr / bin
- Agregar icono y acceso directo al menú
- Agregue el script del sistema y configure el usuario
- Si está en un Pi, agregue una temperatura de CPU -> ejemplo de IoT
El script bash anterior ejecuta muchos comandos como sudo y elimina los directorios Node.js y los directorios principales de Node-RED existentes. Puede verificar el contenido del script en esta página de GitHub antes de ejecutarlo para asegurarse de que no afectará ningún proyecto que ya tenga en la Pi.
Una vez completada la instalación, ahora debería ver el icono Node-Red debajo de la lista de aplicaciones de programación de su menú.
Lanzamiento de Node-RED en Raspberry Pi
Node-Red se puede iniciar a través de la sección de menú desde el escritorio de su raspberry pi, a través de la terminal o mediante ssh.
Para iniciar en el escritorio de la Raspberry Pi, haga clic en el icono de Raspberry, coloque el mouse sobre Programación y haga clic en Node-RED (Menú> Programación> NodeRed) para iniciarlo.
También se puede iniciar desde ssh o terminal ejecutando;
nodo-rojo-inicio
Debería ver una ventana como la siguiente que muestra el inicio del nodo rojo en el escritorio.
Una vez que vea esto, vaya a menú-> internet e inicie el navegador web de chrome. Si bien su Raspberry pi no necesita Internet para ejecutar Node-Red, utiliza un navegador como interfaz.
Con chromium iniciado, ingrese localhost: 1880 en la barra de direcciones seguido de la tecla enter. 1880 es el puerto de la Raspberry Pi en el que Node-Red está preestablecido para comunicarse. Esto debería mostrar la interfaz Node-Red como se muestra en la imagen a continuación.
Comprensión de la interfaz Node-RED
La interfaz Node-Red comprende el panel de flujo, la paleta de nodos, la consola de depuración y la consola de información como se resalta en la imagen de arriba.
El panel de flujo es donde los nodos se unen para crear un programa que en Node-Red se llama flujo, mientras que la paleta Node se compone de objetos que son representativos de hardware, protocolos y características de software asociadas con los dispositivos. Incluye protocolos como MQTT para IoT y modos de entrada y salida GPIO para placas como la raspberry pi. La consola de información proporciona información sobre los objetos resaltados / seleccionados mientras que la consola de depuraciónfunciona igual que el monitor serial Arduino y puede proporcionar comentarios mientras se ejecuta el flujo. El botón de implementación se utiliza para cargar el flujo en el hardware de destino. El botón Menú contiene diferentes tipos de carga para ayudarlo a aprovechar al máximo su proyecto. Con Node-Red en funcionamiento, ahora podemos proceder a construir el proyecto de demostración.
Esquemas
Como se mencionó durante la introducción, nuestro proyecto de demostración de hoy será controlar el GPIO de Raspberry Pi usando un flujo Node-RED. Para mostrar la variación en el estado del GPIO, conectaremos un LED al GPIO de manera que cuando ese pin GPIO en particular esté encendido, el LED se encienda y viceversa.
Conecte el LED a Raspberry PI como se muestra en los esquemas a continuación.
También construyo lo mismo en mi hardware usando una placa de prueba, LED, resistencia y algunos cables de conexión. La configuración de mi hardware se parece a esto una vez que se realizan las conexiones.
Este proyecto se puede convertir fácilmente en un proyecto de automatización del hogar, simplemente reemplazando el LED con un relé y cualquier aparato de CA. Aprenda cómo hacerlo pasando por varios proyectos de automatización del hogar.
Creando un flujo en Node-RED
Con el LED conectado, podemos proceder a desarrollar el flujo. Los programas en NodeRed se denominan flujos al igual que el IDE de Arduino los llama bocetos. Los flujos se crean utilizando una combinación de nodos. Puede crear varios flujos que pueden ejecutarse todos al mismo tiempo, pero para este tutorial, crearemos un flujo único para encender / apagar el LED.
Para comenzar, desplácese hasta la parte inferior de la paleta de nodos, verá la sección de nodos de raspberry pi hacia el final con dos nodos etiquetados como rpigpio. Estos nodos se utilizan para comunicarse con el GPIO de raspberry pi. Uno de los nodos es para entrada mientras que el otro es para salida diferenciado por la posición del logo de la raspberry pi. Para el nodo de entrada, el logo viene antes del texto, mientras que para el nodo de salida, el logo viene después del texto como se muestra en la imagen de abajo.
Para este tutorial haremos uso del nodo de salida, arrástrelo a la sección de flujo de la interfaz. Este paso es similar a declarar un pin particular de su Arduino como Salida usando el comando pinMode () . Haga doble clic en el nodo Salida y se abrirá una ventana emergente como se muestra a continuación para permitirle editar las propiedades del nodo.
En la sección de propiedades del pin, seleccione GPIO17 (pin 11). Luego, establezca la propiedad de tipo en " Salida digital " y marque la casilla "¿ Inicializar estado de pin?" casilla de verificación dejando la opción " nivel inicial de pin " como baja (0). Dale al nodo el nombre que quieras y haz clic en el botón Listo.
El nombre del nodo debería cambiar automáticamente al que ingresó en la configuración de propiedades. Por ejemplo, lo nombré LED y, por lo tanto, el nombre del nodo también se cambió como LED, como se muestra a continuación.
Para encender / apagar el LED, necesitamos usar una entrada, algo para impulsar la acción. Si bien podríamos usar un botón pulsador, quiero usarlo para introducir la función en Node-RED que permite la inyección de mensajes en los flujos. Esta característica se denomina nodo de inyección. Usaremos dos nodos de inyección. Uno será encender el LED mientras que el otro será apagarlo.
Vaya a la paleta de nodos y arrastre el nodo de inyección al flujo. Es el primer nodo de la paleta con una flecha, el nodo de inyección está resaltado en la imagen de abajo.
Haga doble clic en él para editar sus propiedades. Cambie el tipo de datos a cadena haciendo clic en el menú desplegable frente a la carga útil e ingrese 1 en el cuadro Carga útil. El valor en el cuadro de carga útil es lo que se inyectará en el flujo cuando se presione el nodo. Establezca el nombre del nodo en "ON". Presione el botón "Listo" para guardar.
Repita lo anterior para el segundo nodo, estableciendo el valor de carga útil en "0" y su nombre como "desactivado" como se muestra a continuación.
En la función de propiedades, el menú desplegable de repetición se puede utilizar para automatizar la inyección de modo que los botones se presionen a intervalos. Esto se puede utilizar para crear el efecto de parpadeo. Une los nodos como se muestra a continuación, arrastrando el punto gris de uno de los nodos al otro para crear el flujo.
Una vez hecho esto, hemos completado nuestro primer Node-Red Flow.
El siguiente paso es implementar el flujo en la Raspberry Pi. Haga clic en el botón de implementación rojo. Debería ver el flash "implementado correctamente" en la parte superior de la pantalla, como se muestra a continuación.
Haga clic en el botón gris detrás de los nodos de inyección para activar cada uno de los nodos.
Al hacer clic en el nodo de inyección "encendido", debería ver "encendido" inyectado correctamente y el LED se enciende. El LED debe apagarse cuando se hace clic en el nodo de inyección "apagado".
Eso es. El funcionamiento completo de esta configuración se puede encontrar en el video vinculado al final de esta página.
Agregar un pulsador / interruptor en la interfaz Node-RED con Raspberry Pi
Para explicar cómo conectar / agregar un elemento de entrada a su flujo, llevaremos el flujo anterior más allá agregando un botón para reemplazar los nodos de inyección.
Conecte el botón a la raspberry pi, de modo que una pata del botón esté conectada a tierra y la otra a la patilla GPIO 4 (patilla 11) de la raspbery pi, como se muestra en los esquemas siguientes.
Una vez hecho esto, regrese a Node-Red y elimine los dos nodos de inyección que usamos anteriormente, haciendo clic en los nodos y presionando eliminar en su teclado o haciendo doble clic en los nodos y presionando eliminar en la ventana emergente. Una vez hecho esto, desplácese hacia abajo en la paleta de nodos hasta la sección de raspberry pi y seleccione el nodo de entrada. Es el que tiene el icono de raspberry pi a la izquierda, antes del nombre del nodo.
Arrastre el nodo al flujo y haga doble clic en él para editar las propiedades. Establezca el pin en GPIO 4 (pin 11) y configure el menú desplegable frente a la resistencia en pull-up. Esto “elevará” GPIO 4 a ALTO. Haga clic en el botón Listo después de configurar las propiedades.
Para permitirnos tomar decisiones lógicas cuando se presiona el interruptor en lugar de simplemente acortar GPIO4 a tierra, usaremos el nodo del interruptor. Búsquelo en la paleta de nodos, en la sección de funciones y arrástrelo al flujo.
El nodo de conmutación le permite tomar decisiones de forma similar a las declaraciones "si". Se puede configurar para que tenga diferentes salidas en función del valor de entrada. Para este tutorial, lo configuraremos con dos rutas de salida, de modo que, cuando la propiedad msg.payload sea igual a 1 (no se presiona el interruptor), debe seguir la primera ruta y se seguirá una segunda ruta si hay alguna otra entrada en la entrada se observa otro distinto de 1 (se presiona el interruptor). Las rutas se agregan usando el botón "+ agregar". Haga doble clic en el nodo y configure como se describe arriba. Haga clic en listo cuando termine.
Tan pronto como presione el botón Listo, debería ver que las dos rutas se reflejan en la perspectiva del nodo de conmutación, ya que ahora tendrá dos uniones en la salida.
Luego, necesitamos traer un nodo de "cambio". El nodo de cambio se utilizará para establecer el estado del LED en función del resultado del nodo de argumento.
Usaremos dos de los nodos de cambio. La carga útil del primero se establecerá en 0 como se muestra en la imagen a continuación y la carga útil del segundo se establecerá en uno. Haga clic en Listo después de editar las propiedades de ambos.
Para explicarlo mejor, ¿recuerdas que usamos la resistencia pull-up? Así, cuando no se ha presionado el botón, la salida en ese pin será ALTA (1), lo que significa que si lo pasamos por el nodo del interruptor, el LED estará “encendido”, ya que esto no debería ser así, lo haremos utilice el nodo "cambiar" para configurarlo como BAJO (0). El segundo nodo de "cambio" se usa para establecer el valor en uno tal que cuando se detecta cualquier otro estado que no sea ALTO del pin 4 de GPIO, debe "encender" el LED, ya que esto significa que se ha presionado el botón. Conecte los nodos de cambio y el resto de los nodos juntos como se muestra en la imagen a continuación.
Con esto hecho, ahora estamos listos para implementar el proyecto. Revise la conexión para asegurarse de que todo esté como debería ser, luego haga clic en el botón de implementación. Como de costumbre, si tiene éxito, debería ver la ventana emergente de implementación exitosa y ahora podrá controlar el LED usando el interruptor.
Si bien Node-Red hace que sea fácil y rápido crear un prototipo de su construcción sin preocuparse por el código, es posible que en realidad no sea la mejor opción, especialmente para desarrolladores experimentados que deseen flexibilidad y control sobre el programa. Sin embargo, es una gran herramienta que le permite crear prototipos en minutos.
¡Hasta la próxima!