Node-red en Raspeberry Pi


Durante años hemos visto un goteo de proyectos de domótica realmente interesantes que utilizan el paquete Node-RED. Cada vez, los hackers detrás de estos proyectos han delirado sobre Node-RED y ahora me he unido a esas filas también.

Esta plataforma de codificación basada en gráficos le permite armar rápidamente operaciones útiles e interfaces gráficas de usuario (GUIs), ya sea que sea el greenhorn más fresco o un veterano experimentado. Puedes usarlo para cambiar tus luces conectadas a Internet según lo programado, o con solo tocar un botón a través de una aplicación web disponible para cualquier dispositivo de tu red doméstica. Puede usarlo como un panel de información para la previsión del tiempo, últimos artículos hackaday, horarios de autobús, o todos ellos a la vez. De un vistazo, abstrae la complejidad de escribir Javascript, a la vez que facilita la inmersión bajo el capó y utiliza sus habilidades de haxor 1337 para agregar su propio código.

Puede poner esto en marcha en menos de una hora y voy a abordar eso, así como ejemplos para jugar con MQTT, configurar una interfaz gráfica de usuario web y escribir en archivos de registro. Para que Node-RED sea persistente en la red, necesita un servidor, pero es lo suficientemente delgado como para ejecutarse desde una Raspberry Pi sin problemas, e incluso se instala de forma predeterminada en las distribuciones de BeagleBone. El código de todos los ejemplos de esta guía se puede encontrar en el repositorio del tutorial. ¡Vamos a sumergirnos!

LO QUE ES

Node-RED es un lenguaje de programación gráfico basado en Node.js. Implementa un servidor y ejecuta lo que se llama “Flujos”: programas basados en Javascript. ¿Por qué querría ejecutar un IDE del lado servidor para sus programas? Debido a que Node-RED también hace que sea muy fácil crear aplicaciones web y usarlas como su sistema de información y control en línea.

INSTALACIÓN

Para que sus programas Node-RED sean persistentes, necesita un servidor, sin embargo, si solo desea jugar por ahora puede ejecutarse localmente. Su servidor puede ser tan simple como instalar la plataforma en un Raspberry Pi o un ordenador siempre encendido en su LAN. Los requisitos previos incluyen Node.js y npm (node.js administrador de paquetes) que en un sistema Linux son una fácil instalación.

sudo apt install nodejs

Ahora podemos instalar Node-RED y, para seguir los ejemplos a continuación, también debe instalar el paquete del panel:

npm install node-red
npm install node-red-dashboard

Para ejecutar localmente sólo tiene que escribir en el terminal. Sin embargo, la forma más elocuente de ejecutar esto es como un servicio. Copie el contenido del archivo nodered.service y actualice el archivo , y variables de ese archivo para que coincidan con un usuario real del sistema. Con eso en su lugar, simplemente habilite e inicie el servicio. Ahora se reiniciará en un bloqueo o reinicio del sistema a partir de ahora.node-redsystemd/etc/systemd/system/nodered.serviceUserGroupWorkingDirectory

12systemctl enable nodered.servicesystemctl start nodered.service

You can now load up the Node-RED IDE simply by visiting in a web browser.localhost:1880

HELLO WORLD

Lo más sencillo de hacer como su primer “flujo” en Node-RED es: botón de clic, obtener marca de tiempo. Para hacer la imagen de arriba no hice nada más que arrastrar los nodos “Inyectar” y “Depurar” desde la columna izquierda al centro, luego arrastre la línea que conecta los dos nodos. Debe hacer clic en el botón “Implementar” en la parte superior derecha cada vez que realice cambios y, a continuación, haga clic en el botón que cuelga del lado izquierdo del nodo de inyección, que tiene la etiqueta “marca de tiempo” de forma predeterminada, para escupir el tiempo en la ventana de depuración. Haga clic en el icono de error situado encima de la ventana derecha si no ve la salida de depuración.

Este ejemplo no es muy útil, pero ese no es el punto del código Hello World. Esto lleva a casa la potencia del sistema de código gráfico. Lo que también es interesante es que los flujos se pueden exportar como archivos. Así es como se ve este Hello World y se puede importar a su propia instalación Node-RED.json+ ampliar la fuente

INICIO RÁPIDO DE MQTT

Node-RED parece que está hecho específicamente para ser utilizado con MQTT, el popular protocolo de Internet de las cosas para el que Elliot Williams ha escrito una guía fantástica. Se siente así porque un cliente MQTT está integrado y la mayoría de los nodos tienen “temas”, así como cargas útiles de mensajes que es todo lo que realmente necesita para comunicarse con un bróker MQTT.

Como se puede ver arriba, estoy haciendo exactamente el mismo truco de inyección / depuración, pero ahora he arrastrado un nodo “mqtt in” y “mqtt out” desde la columna “Red” de posibles nodos.

node-red-mqtt-server
node-red-mqtt-node

Hay un poco más de configuración aquí, ya que necesitamos elegir un servidor MQTT y seleccionar un tema para publicar y escuchar. Pero la interfaz hace que esto sea muy fácil, simplemente haga doble clic en uno de los nodos MQTT. Aquí estoy usando el servidor de pruebas mosquitto ()y el tema . Solo tienes que darte cuenta de que cualquiera que mire mensajes en ese servidor puede ver esto y si usas exactamente el mismo tema puedes ver a otros lectores enviando mensajes de prueba. Node-RED también se puede utilizar como bróker MQTT.test.mosquitto.orgHackaday/nodered/test

Intente hacer doble clic en el nodo de inyección y cambiar la carga útil de la marca de tiempo a una cadena y puede enviar sus propios mensajes personalizados. En su mayor parte me resulta fácil encontrar mi camino alrededor de Node-RED y jugar con la configuración es de bajo esfuerzo. Solo asegúrate de pulsar el botón implementar: tus cambios no estarán realmente en su lugar hasta que lo hagas.

WEB GUI HELLO WORLD

Vayamos a la parte realmente emocionante de Node-Red, la capacidad de crear una aplicación web con muy poco esfuerzo.

Aquí se puede ver un teléfono inteligente que muestra nuestra aplicación. La única parte realmente útil aquí es el botón. Haga clic en él y obtendrá “Hola Hackaday!” en la ventana de depuración de Node-RED como se ve arriba. Todo lo que se necesitó para crear esta página fue instalar el paquete de panel para Node-RED y, a continuación, arrastrar un botón al lienzo. Una vez implementada, la aplicación web se ubicará en localhost:1880/ui

La instalación del paquete es un simple revestimiento:

npm install node-red-dashboard

Arrastrar el botón al lienzo y enlazarlo a un nodo de depuración también es simple, pero necesita hacer sólo un poco de configuración. Al hacer doble clic en el nodo de botón, puede cambiar la carga para afectar a qué mensaje se envía a la ventana de depuración, pero también debe establecer un grupo y, dentro del cuadro de diálogo de edición de grupo, deberá establecer una pestaña. Esto afecta a la aplicación web, con grupos organizando bloques en cada página de la aplicación web, y pestañas seleccionando diferentes páginas del menú de hamburguesas en la parte superior izquierda. Puede nombrar grupos y pestañas como desee.

¡VAMOS A CREAR UNA APLICACIÓN WEB!

Suficiente con el código Hello World, vamos a construir algo útil. He estado usando Node-RED durante un mes más o menos y he construido un par de aplicaciones útiles, una interactúa con mi bróker MQTT para controlar y monitorear mi luz de pórtico frontal, la otra que uso como una simple pulsación de botón para realizar un seguimiento de los días que hago ejercicio. Vamos a construir la aplicación de ejercicios poco a poco porque hay más que simplemente enviar paquetes MQTT de un lado a otro.

Aquí está el estado actual de la aplicación de ejercicios, que incluye un botón que registra la fecha de hoy en un archivo de registro y un medidor que lee el archivo de registro para mostrar cuántos de los últimos siete días han incluido el ejercicio. Construyamos una cuadra a la vez.

Gui botón escritura a archivos

Aquí es donde comienza el flujo. Consta de un botón del paquete Dashboard que envía una marca de tiempo cuando se hace clic. Este mensaje se registrará en dos nodos “file”, el primero es el que simplemente registra una marca de tiempo UNIX para cada línea. Eso no es legible en humanos, por lo que el segundo nodo de archivo tiene un nodo de función que traduce la marca de tiempo mediante el siguiente fragmento de código JavaScript. Hay un poco de magia allí para asegurarse de que el mes y el día son siempre de dos dígitos.exerciselog-raw.txt

123456789var date;date = new Date();var year = date.getFullYear();var month = date.getMonth();month = (month < 9 ? '0' : '') + (month+1)var day = date.getDate();day = (day < 10 ? '0' : '') + daymsg.payload = year + '-' + month + '-' + day;return msg;

Adición de una notificación de usuario

node-red-notification-node
node-red-notification-dialog

El botón funciona según lo esperado, pero no da ninguna retroalimentación al usuario. Para mejorar esto, agregué un nodo de notificación del paquete de panel. Se conecta después del nodo de archivo para confirmar que la fecha se había escrito en el archivo de registro.

Lectura de un archivo, visualización de datos, actualización al inicio

Esta última parte del flujo utiliza el nodo “file in” bronceado para leer marcas de tiempo UNIX desde el archivo de registro sin procesar y lo muestra en el nodo “gauge” de color azul del paquete del panel. Se activa mediante dos desencadenadores diferentes, uno se actualiza después de que se escribe una nueva fecha en los archivos de registro. El otro es el nodo “inject” de lavanda que tiene una opción “index once after n seconds” para rellenar los datos iniciales cuando se inicia Node-RED.

El medidor sólo está buscando un número para rellenar y esto es alimentado por un nodo de función (lo llamé Magic). El código siguiente se lee en el archivo de registro como una matriz, calcula el código de fecha UNIX de hace siete días y, a continuación, recorre en iteraciones las últimas siete marcas de tiempo en el archivo de registro.

12345678910111213141516171819202122232425//Turn incoming timestamps log into an array:var exercisearray = msg.payload.split("\n");if (exercisearray.slice(-1)[0] === "") exercisearray.length = exercisearray.length-1 //Get timestamp for week ago to compare againstvar thismorning = new Date()thismorning.setHours(0)thismorning.setMinutes(0)thismorning.setSeconds(0)thismorning.setMilliseconds(0)var sixdays = 1000*60*60*24*6var oneweekago = thismorning.getTime()-sixdays //Iterate and count past week of exercisevar count = 0var secondsinday = 60*24*7for (var i=1; i<8; i++) {if (i>exercisearray.length) break;var testval = parseInt(exercisearray.slice(-i)[0]);if (testval >= oneweekago) ++count;} //Store our answer as the payload and pass alongmsg.payload = count;return msg;

¡PRUEBE NODE-RED!

Una de mis primeras preocupaciones con la plataforma fue el control de versiones, pero eso también está disponible. Hay integración git integrada denominada proyectos Node-RED, pero no está habilitada de forma predeterminada. No estoy acostumbrado a usar una GUI para git, pero de nuevo no estoy acostumbrado a las interfaces gráficas de programación por lo que no duele probar algo nuevo.

Los ejemplos que hemos visto son realmente la punta del iceberg. Mire a su alrededor y encontrará un montón de entusiasmo por Node-RED que se traduce en flujos increíbles y aplicaciones web impresionantes. Por ejemplo, he estado leyendo scargill’s Tech Blog durante años y allí encontrarás un montón de ejemplos de lo que se puede lograr. Aquí vemos el panel de control del termostato de Scargill que tiene todo tipo de personalización para darle un aspecto especial. Encontrar ejemplos que te gusten no es difícil, y copiar su código es aún más fácil.

Puede recoger fácilmente Node-RED en una tarde y terminar con algo útil. Para aquellos que quieren pasar más tiempo, el cielo es el límite. Si tienes algún tipo de domótica, es algo que debes probar, ya que desbloquea la capacidad de cualquier persona en tu LAN para acceder a la información y el control sin instalar una aplicación. Usted puede sacar fácilmente un teléfono inteligente en desuso del cajón y convertirlo en un panel de control dedicado, algo que hice para la imagen en la parte superior de este artículo con la ayuda de una aplicación de Android llamada Fully Kiosk Browser Lockdown para una verdadera experiencia de navegador a pantalla completa no proporcionada por Chrome o Firefox para Android. ¡Pruébalo con tu propio equipo sobrante!

Fuente https://hackaday.com/2020/01/15/automate-your-life-with-node-red-plus-a-dash-of-mqtt/

Instalación de Node-Red, InfuxDB y Grafana


La Raspberry Pi  es una placa ideal para monitorear todo tipo de cosas. Hoy usaremos Node-Red, InfluxDB y Grafana para monitorizar diferentes  entidades , así como habilitar  alarmas hacia nuestro  smartphone o  en el  correo.

Resumidamente estos son los tres componentes que usaremos

  • Grafana es un software libre basado en licencia de Apache 2.0,que permite la visualización y el formato de datos métricos. Permite crear cuadros de mando y gráficos a partir de múltiples fuentes, incluidas bases de datos de series de tiempo como Graphite, InfluxDB y OpenTSDB.​ Originalmente comenzó como un componente de Kibana y que luego le fue realizado una bifurcación
  • InfluxDB es una base de datos de series de tiempo de código abierto (TSDB) desarrollada por InfluxData. Está escrito en Go y optimizado para el almacenamiento y la recuperación rápidos y de alta disponibilidad de datos de series de tiempo en campos como el monitoreo de operaciones, métricas de aplicaciones, datos de sensores de Internet de las cosas y análisis en tiempo real. También tiene soporte para procesar datos desde Graphite . 
  • Node-RED es una herramienta de desarrollo basada en flujo para programación visual desarrollada originalmente por IBM para conectar dispositivos de hardware, API y servicios en línea como parte del Internet de las cosas .Proporciona un editor de flujo basado en navegador web , que se puede utilizar para crear funciones de JavaScript . Los elementos de las aplicaciones se pueden guardar o compartir para su reutilización. El tiempo de ejecución se basa en Node.js . Los flujos creados en Node-RED se almacenan mediante JSON . Desde la versión 0.14, los nodos MQTT pueden realizar conexiones TLS configuradas correctamente . En 2016, IBM contribuyó con Node-RED como un proyecto de JS Foundation de código abierto .

Preparar imagen en tarjeta SD

Descargar imagen: http://bit.ly/2GdZbPe
Agregar archivo ssh vacío al directorio raíz de la tarjeta
Agregar wpa_supplicant.conf al directorio raíz

Contenido del archivo wpa_supplicant.conf:

country = CH
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev
update_config = 1
network = {
  ssid = ”…”
  psk = ”…”
}

Inserte la tarjeta SD en su Raspberry, arranque y encuentre su dirección IP por ejemplo usando https://www.advanced-ip-scanner.com   o simplemente con el comando sudo ifconfig
Inicie sesión desde un terminal usando Putty https://www.putty.org/ usando  las credecniales por defcto: Pi/raspberry  

Ahora debe actualizar su Raspberry a la versión más reciente :

 sudo apt-get update && sudo apt-get upgrade 

Configuración en la  Raspbery

Configuración de Mosquitto

Tenemos que modificar el fichero mosquito,conf , para lo cual;

sudo nano /etc/mosquitto/mosquitto.conf 

Insertaremos el siguiente comando  al finala del fichero  y salivar  los cambios:
allow_anonymous true

Reiniciar Mosquitto

 sudo systemctl reiniciar mosquitto 

Configuración de influxDB

Crear usuario:

CREATE USER "pi" WITH PASSWORD 'raspberry' WITH ALL PRIVILEGES
exit

Cambiar archivo de configuración:

sudo nano /etc/influxdb/influxdb.conf

En [http] descomente:
enabled = true y bind-address =: 8086

en [monitor] descomente y cambie a:
store-enabled = false

sudo service influxdb restart

Configuración de Node-Red

Importar flujos desde: https://drive.google.com/open?id=1kECuykSaFO7Qb_67QqIHtlpvElpVWDMI

Instalar correo

sudo apt-get install ssmtp 
sudo apt-get install mailutils
sudo nano /etc/ssmtp/ssmtp.conf

Para Gmail, ingrese este texto:

mailhub = smtp.gmail.com: 587
AuthUser = [yourmailaddress] @ gmail.com
AuthPass = [emailPassword]
UseSTARTTLS = YES
UseTLS = YES

Pruebe su correo

echo "Hola mundo cuerpo del correo electrónico" | mail -s "Prueba asunto "   [email protected]

Agregue soporte para aplicaciones menos seguras en Gmail: https://myaccount.google.com/lesssecureapps

Crear una base de datos influxDB

influx

Create database [su nombre de la base de datos]
Show DATABASES
Use [ su nombre de la base de dato]
Show series

exit

Instalar y preparar Telegram

Instale Telegram en su PC https://desktop.telegram.org/

Inicie el telegrama y busque “botfather”

Ingrese el nombre de su bot deseado anotando la ficha.
Envíe un mensaje de texto al bot.

Vaya a: https://api.telegram.org/bot[Token]/getUpdates   y tome nota de la identificación (ID) pues lo usaremos más tarde:

Prepare Grafana

Agregue una fuente
Agregue el tablero importando un archivo JSON:

Ejemplos:
Presión de cerveza: https://drive.google.com/open?id=1beKyu4WuGErAHeYKyE3-8wtpyZJ8yHkZ
Clima: https://drive.google.com/open?id=18326_tjcVln0xBLRJINJn2ZwP0lNlyHX
YouTube: https://drive.google.com / open? id = 1TrZAGnxn4zRfyO_X8RXw4ZtQIvJi8JnQ

Agregar canal de notificación por correo

sudo nano /etc/grafana/grafana.ini

enabled=true
host = smtp.gmail.com:587
user =[receivingEmail]@gmail.com
password =”[emailPassword]”
skip_verify = true
from_address = [sendingEmail]@gmail.com
from_name = [whateverName]

Ir a los canales de notificación
Agregar nuevo canal
Editar canal de notificación  y presione Send Test (“Enviar texto”)

Agregar canal de notificación de Telegram

Agregar nuevo canal de notificación de Telegram

Añada ahora el nuevo canal de notificaciones de Telegram. Insertar chatID y token obtenidos anteriormente

Y presione “Enviar prueba”

 

Contraseñas por defecto usadas

Dónde Usuario Contraseña
Raspberry Pi raspberry
Flujos de node-red admin admin
IU Node-Red User user
Usuario de InfluxDB Pi raspberry
Grafana admin admin

 

 

 

Fuente: sensoriot.org

¿Meadow es el sucesor de Netduino?


La compañia Wildernesss Labs tras comprar  en 2016   Netduino y trabajar en secreto dos años  en  2018,  sacaron vía crowfounding  (en Kickstarter)  su proyecto estrella: Meadow , una  plataforma IoT estándar de .NET de pila completa   que  intenta combinar lo mejor de todos los mundos,  pues tiene el poder de RaspberryPi,  el factor de computación de un Arduino y la capacidad de administración de una aplicación móvil. ¿Y la mejor parte? funciona con .NET Standard completo en hardware de IoT real

Existe una brecha cada vez mayor entre los desarrolladores y las empresas que desean construir hardware conectado y la capacidad de hacerlo. Meadow intenta  cerrar esa brecha y permite a los diez millones de desarrolladores de .NET crear experiencias de hardware realmente interesantes con la misma facilidad con la que crean aplicaciones web o móviles en la actualidad.

Meadow  permite a los desarrolladores ejecutar aplicaciones completas de .NET Standard 2.x en un microcontrolador e incluye un conjunto de controladores de hardware y API en la parte superior que hace que el desarrollo de hardware sea plug and play.   Sin embargo, Meadow no se limita a los desarrolladores .Net, intentando  abrir el desarrollo de hardware a desarrolladores de todo tipo, poniendo especialmente foco en el ambiente empresarial .

Meadow IoT Kickstarter

 

Microordenador vs Microcontrolador: las Raspberry Pis son ordenadores completos  y los Ardunios son pequeños dispositivos (en su mayoría) de una sola tarea.  Es quizás  una exageración tener Ubuntu en un ordenador solo para encender un dispositivo así que por lo general, es deseable  que los dispositivos de IoT ocupen desde el punto de vista del  hardware como del sw  lo menos posible a si que  puede ser una buena  idea que  nuestro core de IoT corra  un sistema  operativo mas estable en cuanto a cortes o interrupciones  ( como lo haría en un microcontrolador pero con muchísima mas potencia del calculo).

Meadow  en principio  ha sido diseñado para ejecutarse en una variedad de microcontroladores, y la primera placa se basa en la MCU STM32F7 (insignia de STMicroelectronics) con coprocesador ESP-32 e   implementando. WiFi, BLE, 32 MB de RAM, 32 MB de Flash. 25 puertos GPIO, PWM, I2C, SPI, CAN, UART y cargador de batería LiPo integrado, todo ello en el factor de forma Adafruit Feather.

Lo interesante pues es que el factor de forma Feather sirva  como placa de desarrollo o incrustarlo. Es realmente un gran diseño   basada en  MCU STM32F7 en un bajísimo factor de forma  y con  casi tantos puertos GPIO (25) tanto  analógicos como digitales como estamos acostumbrados en Arduino o Netduino.

En el sitio de  Meadow Kickstarter dicen que se está ejecutando en Mono Runtime y admite la API .NET Standard 2.0 lo  cual  significa que probablemente ya sepa cómo programarlo  pues  la mayoría de las bibliotecas de NuGet son compatibles con .NET Standard, por lo que una gran cantidad de software de código abierto debería “simplemente funcionar” en cualquier solución que admita .NET Standard.

En términos de NanoFramework y TinyCLR; si bien esos son grandes esfuerzos, son significativamente diferentes a Meadow. Ambos esfuerzos se basan en .NET MicroFramework. Como tal, no son compatibles con .NET completo. No hay genéricos en ninguno de ellos, por ejemplo, ni hay soporte para las bibliotecas estándar .NET. 

 

Funciones empresariales

Meadow  incluye soporte para actualizaciones seguras por aire (OTA), lo que permite que las instalaciones de campo de IoT se gestionen de forma remota; una característica clave para las implementaciones empresariales de IoT.

Meadow abrirá todo un nuevo conjunto de posibilidades para el desarrollo de cosas conectadas. Y como funciona con un dispositivo de  ultrabaja energía, podrá colocarlo en todas partes. Las instalaciones de baterías, energía solar e incluso energía a través de Ethernet (POE) se convertirán en algo común, lo que significa que para muchos de estos dispositivos, el acceso físico será limitado, por lo que la administración centralizada es un requisito absoluto.

Además de las actualizaciones de OTA, Wilderness Labs tiene planes para el monitoreo de campo básico, informes de fallas y análisis para asegurarse de que los dispositivos Meadow funcionen in situ.

Y debido a que Meadow usa .NET, las empresas pueden usar equipos existentes e inversiones de código para construir IoT, en lugar de tener que contratar nuevos desarrolladores que se especialicen en hardware. Es una propuesta de valor similar a la que sus creadores hicieron en Xamarin; había desarrolladores existentes que querían hacer dispositivos móviles, así como muchas inversiones existentes en código empresarial los cuales fueron habilitados en una plataforma completamente nueva ( Microsoft adquirió Xamarin por más de 400 millones de dólares, en gran parte por su valor en el mercado empresarial).

Seguridad 

Otro aspecto importante del aspecto Meadow se intenta centrar en la seguridad. Meadow presenta consideraciones de seguridad básicas, desde la seguridad a nivel de hardware y las actualizaciones seguras, pero Wilderness Labs también se compromete a enviar componentes de software destinados a facilitar la seguridad desde una perspectiva de UX. No es suficiente tener actualizaciones seguras por aire (OTA ) , firmware firmado, revocación de certificados terciarios, etc., pueso la seguridad debe llegar hasta el final.

El pirateo del bot Mirai funcionó porque muchas de estas cámaras de seguridad conectadas tenían nombres de usuario y contraseñas predeterminados, asi  que no es una cuestión   banal.

En este nuevo enfoque enviaran componentes que puede ingresar y brindar una experiencia de usuario fantástica y fácil para cambiar esas cosas, así como orientación y educación para el desarrollador para ayudar a la gente a comprender cómo aprovechar las funciones de seguridad en la pila Meadow.

Inteligencia artificial en IoT

Recientemente, Pete Warden, director de TensorFlow en Google, escribió que la mayor parte de la inteligencia artificial se realizará en microcontroladores , y Meadow es la primera plataforma de desarrollo de microcontroladores que cumple con esa promesa, permitiendo ejecutar visión artificial a través de TensorFlow y otros paquetes de inteligencia artificial de alto nivel localmente en chip.

Se espera que la IA desempeñe un papel clave en IoT con la visión artificial y otros algoritmos de aprendizaje profundo que se ejecutan en imágenes y otros datos de sensores en la fuente para agilizar la recopilación de datos y permitir que los dispositivos tomen decisiones en el campo. Sin embargo, Meadow es la primera plataforma de microcontroladores de IoT que se enfoca específicamente en casos de uso de IA.

Mercado emergente

Se espera que el mercado global de IoT supere los USD $ 1 billón / año para 2025 , y se prevé que gran parte de ese dinero se gaste en herramientas, plataformas y servicios para desarrolladores. Y ese mercado está listo para la disrupción, mientras que los microcontroladores están preparados para convertirse en la forma dominante de computación , con un estimado de 75B de ellos in situ y conectados para 2025, casi todo el desarrollo de microcontroladores hoy en día se realiza en lenguajes de bajo nivel como C / C ++ , y las herramientas no han cambiado mucho desde la década de 1980.

Una de las cosas que ha frenado a IoT hasta ahora es la barrera de entrada; existe una variedad fantástica de nuevos dispositivos informáticos que pueden hacer todo lo que puede hacer una computadora en miniatura y más; sólo cuestan unos pocos dólares, pueden funcionar con una batería de tipo botón durante años y, sin embargo, programarlos es un trabajo duro durante los años 80 ”, comentó Bryan.

Diferencias con Neduino

Hardware

Si bien Meadow está diseñado para ejecutarse en una variedad de microcontroladores de 32 bits, su primera placa se basa en el chip STM32F7 de STMicroelectronic con 32 MB de almacenamiento flash y 16 MB de RAM , el sucesor del chip STM32F4 muy popular que se encuentra en varias placas de desarrollo de microcontroladores, incluido Netduino. La serie F7 es dos veces más poderosa pero usa la mitad de la energía de los chips F4 e incluye una serie de características interesantes, como un códec JPEG integrado para manejar transmisiones de video y cámara, así como un acelerador de gráficos 2D para proporcionar UX en un variedad de pantallas.

También están trabajando en una placa basada en ESP32 que traerá características y conectividad de alta gama a un mercado de bajo precio. Esperaremos con ansias el día en que pueda incorporar una placa Meadow basada en ESP32 en productos por menos de $ 10.

Una gran diferencia con Netduino es  que la placa Meadow F7 está diseñada para ser compatible con el factor de forma Adafruit Feather  ( claramente diferente  a Natduino que se diseño para tener el mismo factor de forma que Arduino ). Además incluye un conector de batería y un cargador integrado, por lo que puede funcionar fácilmente con una batería o conectarse a un panel solar para uso indefinido mediante recarga solar. Aisimismo por diseño, el F7 también está destinado a ser integrable por defecto.

Lo interesante pues es que el factor de forma Feather sirva  como placa de desarrollo o incrustarlo. Es realmente un gran diseño   basada en  MCU STM32F7 con coprocesador ESP-32 e   implementando. WiFi, BLE, 32 MB de RAM, 32 MB de Flash. 25 puertos GPIO, PWM, I2C, SPI, CAN, UART y cargador de batería LiPo integrado  en un bajísimo factor de forma  y con  casi tantos puertos GPIO (25) tanto  analógicos como digitales como estamos acostumbrados en Arduino o Netduino.

Software

Meadow ejecuta un puerto personalizado de Mono sobre un NuttX muy modificado (un µRTOS). De ahí proviene el  soporte estándar .NET. No se basa en Netduino de ninguna manera. Es una pieza de tecnología completamente nueva que han desarrollando desde cero durante los últimos dos años. Existe alguna relación con el  proyecto Netduino.Foundation  pues  han portado Netduino.Foundationa Meadow, y obteniendo todo el atractivo de la última versión de C # y .NET completo para crear una API aún mejor para todos esos controladores.

El proyecto se inició porque .NETMF había desaparecido y no había ningún progreso real allí ni la comunidad pudo participar realmente en él. Es cierto que se inició como un spin-off de .NETMF pero, aparte del motor de ejecución y una buena parte de mscorlib, todo el  código se escribió desde cero.

Han mejorado muchas cosas,  actualizándolo en lo que respecta al sistema de compilación, Wilderness Labs lo ha hecho verdaderamente portátil para los RTOS de CMSIS,  han reelaborado el motor de depuración y han agregado varios objetivos de referencia para MCU con diferentes conjuntos de funciones.

TODO el código es completamente de código abierto ( como el de Netduino ) . Desde el código nativo, a las bibliotecas de clases hasta la extensión de Visual Studio. Dos años de trabajo pueden parecer que el proyecto todavía está en él ‘Es una infancia, pero están orgullosos de que esto se ejecute en SoC SMT32 (de la serie L0 a H7) y, sí, también en ESP32. Hay NuGets funcionales y totalmente utilizables para GPIO, I2C, SPI, Serial, ADC, PWM, Wi-Fi, Networking (con soporte SSL / TLS) y otros.

Es cierto que no admiten bibliotecas .NET completas. En su lugar, han seguido prácticamente la API de .NET UWP para que se pueda reutilizar una gran cantidad de código sin demasiado trabajo pues en el   mundo del IOT cada línea de código importa, se debe considerar cada ciclo de CPU, cada mA que el sistema drena de la batería y así sucesivamente: es decir todo lo que podamos hacer más eficiente es importante.

Conclusión

Tras dos años en el mercado Meadow  es una plataforma  con mucho futuro  pero con mucho  recorrido  para crecer

Es como vemos bastante interesante, pero hay algunas cosas nos  impiden retroceder:

PROS

 

  • La  placa Meadow F7 está diseñada para ser compatible con el factor de forma Adafruit Feather e incluye un conector de batería y un cargador integrado, por lo que puede funcionar fácilmente con una batería o conectarse a un panel solar para uso indefinido mediante recarga solar .Ademas por diseño, el F7 también está destinado a ser integrable por defecto. Lo interesantes pues es que el factor de forma Feather sirva  como placa de desarrollo o incrustarlo.  .
  • Hay muchas variables en este sistema. Si podemos elegir entre tener genéricos o código en C # usando una herramienta increíble como Visual Studio, no lo deberíamos pensar dos veces y lo  ideal  seria optar por lo último. En general, es genial que haya más opciones disponibles que permitan a los desarrolladores de .NET codificar para IoT y sistemas integrados utilizando su lenguaje favorito;NET para codificar para IoT y sistemas integrados utilizando su lenguaje favorito;NET para codificar para IoT y sistemas integrados utilizando su lenguaje favorito
  • También hay cierta fragmentación en el espacio de .NET IoT, lo que significa que tenemos varias soluciones pequeñas, pero ninguna que sea utilizada por muchos desarrolladores. Un esfuerzo común, dirigido por .NET Foundation, habría sido un mejor enfoque.  Nano Framework está en el camino correcto, pero  todavía está en su infancia. Al final, el no compromiso de Microsoft con IoT / .NET Micro Framework es ahora un gran problema, ya que habría sido la plataforma perfecta y natural para el desarrollo de IoT basado en Azure ;

CONTRAS

  • Con 50$  al cambio , es extremadamente cara en comparación con Arduino, Raspberry Pi y otras ofertas similares.
  • Hay un esfuerzo para portar .NET a varios chips SDT y ESP32: https://nanoframework.net/ .  pues  no olvidemos  que se puede obtener una placa de desarrollo ESP32 por menos de 10 $ ( y menos) 
  • Es bueno recordar el fracaso del AGent smartwatch  también en quickstarter  patrocinada por Secret Labs ( los fundadores de Netduino). La idea era muy buena pues ya en 2013  este reloj  pretendía ser un reloj  inteligente con tinta electronica  y con el soporte .Net. Este  proyecto  desgraciadamente  precipito la caída de Secrets LAbs y con ello la de Netduino que fue comprado por Wilderness Labs. 

 

 

 

 

 

 

Fundada en 2016, Wilderness Labs es el fabricante de placas Netduino y el creador de Meadow. Para obtener más información, puede encontrar su blog en blog.wildernesslabs.co .