Tutorial Node-RED: Desarrollar una aplicación IoT de machine learning con Raspberry PLC

Aprende a utilizar TensorFlow.js con la familia industrial basada en Raspberry Pi PLC
21 de mayo de 2021 por
Tutorial Node-RED: Desarrollar una aplicación IoT de machine learning con Raspberry PLC
Boot & Work Corp. S.L., Fernandez Queralt Martinez

Introducción

El Machine Learning (aprendizaje automático) es una aplicación de la inteligencia artificial (IA) que proporciona a los sistemas la capacidad de aprender y mejorar automáticamente a partir de la experiencia sin ser programados explícitamente.

TensorFlow es una plataforma integral de código abierto para el aprendizaje automático. Cuenta con un ecosistema completo y flexible de herramientas, librerías y recursos de la comunidad que permiten a los desarrolladores crear e implementar fácilmente aplicaciones basadas en ML.

En este post, vas a aprender a desarrollar proyectos de código abierto utilizando plataformas de código abierto, ¡como Node-RED y TensorFlow! ¡Vamos a empezar!

Enlaces relacionados

Cómo conectar un Raspberry PLC al Wi-Fi




Leer >>

Conceptos básicos sobre las salidas Analógicas de un Raspberry Pi PLC


Leer >>

Cómo encontrar tu PLC industrial perfecto




Leer >>

Cómo programar las salidas de Interrupción de un Raspberry PLC con Python


Leer >>

Familia de productos Raspberry PLC




Leer >>

Familia de productos Touchberry Pi 



Read >>

Requisitos

Hardware

Software

  • Node-RED
  • Paquete fswebcam en la Raspberry

Tecnologías

              Aprende a construir y desplegar apps de machine learning que puedan ejecutarse offline y directamente en cualquier controlador PLC Raspberry Pi. ¡Usando Node-RED con TensorFlow.js podrás incorporar el aprendizaje automático en tu dispositivo de una manera muy fácil y con poco código!

              Aprendizaje automático: Una aplicación de la Inteligencia Artificial (IA) que se centra en el desarrollo de programas informáticos que pueden acceder a los datos y utilizarlos para aprender por sí mismos.

              Node-RED: Una herramienta de programación basada en flujos para conectar dispositivos de hardware, APIs y servicios online. Realmente útil para proyectos de código abierto.

              TensorFlow.js: Una Librería JavaScript para entrenar y desarrollar modelos de aprendizaje automático en el navegador y en Node.js.

              La combinación de Node-RED y TensorFlow.js es una combinación perfecta para crear y desarrollar aplicaciones industriales y de IoT, añadiendo funcionalidad de aprendizaje automático a sus dispositivos.

              Explicación

              Instalación de los Nodos

              Por defecto, en la familia de productos basados en Raspberry Pi, Node-RED ya está instalado. Puedes conectarte al Raspberry PLC industrial de forma remota poniendo la dirección IP en la sección URL de tu navegador. Conecta un cable Ethernet al puerto Ethernet de la Raspberry, y escribe lo siguiente:


              http://10.10.10.20:1880/

              La biblioteca de flujo Node-RED tiene varios nodos habilitados para TensorFlow.js. Uno de ellos es node-red-contrib-tensorflow, que contiene los modelos entrenados..

              Para instalar el nodo, ves al menú superior derecho del editor de flujo > haz clic en "Manage Palette" > selecciona la pestaña Install > busca: node-red-contrib-tensorflow. > Haz clic en instalar.


              Node-Red y TensorFlow.js








              Una vez completada la instalación, ves a la categoría Analysis y verás cuatro nodos node-red-contrib-tensorflow. Todos ellos son nodos de reconocimiento de imágenes, pero también pueden generar datos de imágenes con anotaciones y realizar otras funciones como el reconocimiento de imágenes, o fuera de línea, que es necesario para el análisis de bordes.

              • Cocossd: Un nodo que devuelve el nombre del objeto en la imagen.
              • Handpose: Un nodo que estima las posiciones de los dedos y las articulaciones a partir de una imagen de la mano.
              • Mobilenet: El nodo que clasifica imágenes con MobileNet.
              • Posenet: Un nodo que estima la posición de los brazos, la cabeza y las piernas a partir de la imagen de una persona.

              Creando un flujo

              En este post, se van a utilizar los nodos cocossd, handpose y posenet, porque lo que va a hacer nuestra aplicación, es tomar una foto, detectar los dedos de una mano y estimar la pose humana. Así, tomará una foto con nuestra cámara USB usando el comando fswebcam, nuestros nodos TensorFlow procesarán la información, y obtendrá los datos a través de nuestros nodos de depuración.

              Luego, vas a agregar un nodo exec para ejecutar el comando fswebcam para que tome una foto:

              fswebcam -r 1270x720 --no-banner {absolute-path}

              Puedes ejecutar el comando así: fswebcam myimage.jpg

              Vamos a nombrar las imágenes de la siguiente manera: image-{timestamp}.jpg, vas a añadir la marca de tiempo inyectándola desde un nodo inject como se muestra en las imágenes de abajo, y vas a establecer ese nombre a una variable de flujo llamada flow.image:

              En el nodo de inyección, puedes inyectar una vez cada X segundos, y luego repetir cada X segundos para que la aplicación funcione en un intervalo de tiempo especificado.

              Una vez tomada la imagen, vamos a obtener el flow.image y establecerlo en el msg.payload, para poder enviarlo a nuestros nodos TensorFlow. Sólo tienes que conectar un nodo de cambio a la salida estándar del nodo exec, establecer el msg.payload a flow.image, y conectar el cocossd, posenet y handpose después del nodo de cambio. Conecta tres nodos de depuración, cada uno al lado de los nodos de aprendizaje automático. Tu flujo debería ser algo así:

                ¿Por qué Raspberry PLC para el aprendizaje automático?

                • Raspberry Pi OS with Debian (Linux).
                • Python: The favorite programming language for machine learning.
                • It has different Analog/Digital/Relay I/Os to receive and send the data from.
                • Open solution: Open Source. Sin costes de licencia. 
                • Equipment designed and manufactured for industrial use at a lower price than competitive products.
                • Modular solution: Product specifications can be scalable in the future.

                ¿Quieres aprender a capturar datos de un sensor con un PLC Raspberry y Node-Read?

                Lee el siguiente enlace.

                                    Buscar en nuestro blog

                                    Tutorial Node-RED: Desarrollar una aplicación IoT de machine learning con Raspberry PLC
                                    Boot & Work Corp. S.L., Fernandez Queralt Martinez 21 de mayo de 2021
                                    Compartir

                                    ¿Estás buscando tu Controlador Lógico Programable ideal?

                                    Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

                                    Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


                                    Industrial PLC comparison >>>