Cada vez son más los dispositivos inteligentes a nuestro alrededor, según las estadísticas en torno a 15.000 millones en el año 2023 y se estima alcanzar la cifra de 29.000 millones en 2030 [1] .
El paradigma de conexión de estos está cambiando porque las necesidades también lo están haciendo y en este artículo vamos a centrarnos en la conexión de dispositivos desde un enfoque Edge y a ver las particularidades del módulo de dispositivo de la suite de Azure IoT.
Arquitectura Azure IoT Edge
El enfoque Edge trata de acercar la inteligencia a las fuentes de datos, creando redes con dispositivos de computación fronteriza entre los dispositivos y la nube, para esto, Azure IoT cuenta con diferentes herramientas para la gestión de proyectos a nivel empresarial, industrial y personal:
- Windows for IoT: es la familia de productos de Microsoft basadas en Windows para el desarrollo y la gestión de proyectos IoT.
- Windows IoT Enterprise: es una solución completa para la administración y seguridad de soluciones IoT tipo OEM que corre en dispositivos que soportan Windows 10 u 11 pero no funcionará en procesadores ARM.
- Windows IoT Server 2022: está basado en Windows Server 2022 y está creado para licencias de usos dedicados y soporta arquitecturas híbridas.
- Windows 10 IoT Core: el más “limpio” y compacto, creado por desarrolladores para desarrolladores y es la evolución de Windows Embedded (XPe). Se puede usar en arquitecturas desde 32 bits por lo que permite crear soluciones de alto nivel en máquinas muy pequeñas, una funcionalidad esencial en desarrollos IoT, para la programación de placas ligeras. Tiene otra ventaja: se vincula con Visual Studio y está diseñado para funcionar sin interfaz gráfica, permitiendo que el desarrollo se realice desde otra máquina.
Siguiendo esta línea orientada a dispositivos ligeros de Windows 10 IoT Core vamos a irnos hasta el nivel más bajo en el desarrollo de una solución IoT y presentar el RTOS de Azure.
Azure RTOS es un sistema operativo en tiempo real diseñado expresamente para dispositivos con MCU de escasa capacidad de memoria. Destaca por ser ideal para la programación de dispositivos profundamente insertados, tener una capa pequeña de funciones a llamadas internas lo que hace que tenga un buen rendimiento, además de contar con una API intuitiva. Microsoft Azure IoT pone a nuestra disposición, además, un SDK para dispositivos profundamente insertados basados en MCU a nivel de Middleware de Azure RTOS como pueden ser sensores, entre otros SDK que mencionaremos más adelante.
Por ejemplo: podríamos tener una red de dispositivos basados en MCU con RTOS, como sensores conectados a una placa ligera tipo Arduino o Raspberry, usar el SDK correspondiente, para este caso el middleware de Azure RTOS, con la ventaja de que los dispositivos basados en RTOS pueden conectarse directamente con Azure IoT Hub, por lo que voilà, ya tendríamos montada nuestra infraestructura IoT.
Este ejemplo basado en dispositivos con RTOS reduce drásticamente el trayecto de los datos para ser procesados o tomar decisiones en base a ellos, por lo que se podría operar con los datos de telemetría casi en tiempo real.
Azure además ofrece SDK para otros escenarios como dispositivos basados en Linux, Windows, FreeRTOS y hasta para equipos sin sistema operativo mediante MQTT.
Por último, en el nivel más profundo del lado de dispositivo, vamos a hablar de Azure Sphere.
Azure Sphere en una plataforma de IoT enfocada en la seguridad y creada para soluciones que empiecen en el silicio, es decir, soluciones que se centren en la creación de los propios dispositivos de la solución y su fuente de seguridad reside en Microsoft Pluton, un subsistema de seguridad basada en hardware.
Con esto, Microsoft nos permite crear soluciones seguras desde el propio metal hasta el más alto nivel de la solución, siendo una excelente opción para todo tipo de proyectos y hasta el nivel de restricción que se necesite, ya seas una industria de manufactura de dispositivos MCU o solo estés centrado en desarrollo a nivel de backend o full-stack de una solución IoT, ya que también pone a nuestra disposición dos SDK adicionales, el primero orientado a servicios de Azure IoT Hub con el que puedes crear aplicaciones que interactúen directamente con IoT Hub y otro de panel de administración de Azure IoT Hub para administrar los centros IoT de una suscripción Azure.
La adopción de estas herramientas de Azure aporta facilidades a la hora de las conexiones de los dispositivos de la red de la solución, como IoT Plug and Play que permite la conversión de dispositivos a tipo Plug and Play para que no haya necesidad de configuración manual de los mismos cuando se quiera conectarlos, además se puede contar con Azure Device Update para hacer las actualizaciones de paquetes de código, imágenes de dispositivo, proxy o componentes de forma remota.
Una vez tienes tu solución desarrollada a nivel de dispositivo tenemos que empezar a manejar los datos obtenidos de los mismos. Tenemos claro que la nube pone a nuestra disposición infinidad de herramientas para la operación, administración y visualización de los datos, pero vamos a hablar de cómo podemos seleccionar aquellos datos que realmente nos interesa procesar y para los que realmente necesitamos desplegar recursos para que lleguen hasta la nube, es decir, vamos a hablar de Azure IoT Edge.
Azure IoT Edge es un entorno de ejecución centrado en un dispositivo que permite implementar, ejecutar y supervisar cargas de trabajo de Linux contenerizadas.
La contenerización permite operar los datos en el propio dispositivo con herramientas de Azure, de código abierto y hasta con tu propio código por lo que imaginemos que tenemos un sistema de cámaras en ciertas zonas de acceso a nuestras oficinas que hacen un reconocimiento facial de los rostros captados con el fin de controlar la seguridad en el edificio. Normalmente las imágenes viajarían hasta el centro de datos o la nube dónde tuviésemos desplegada nuestra solución de identificación a partir de reconocimiento facial y esta las procesaría, pero con Azure IoT Edge este trayecto se convierte en innecesario por lo que ahorraríamos muchísimos recursos y costes.
Por otra parte, el entorno en tiempo de ejecución se encarga de mantener los dispositivos conectados a la red de IoT Edge actualizados y seguros, de informar de su estado, instalar cargas de trabajo y garantizar las conexiones dentro de la red, a través de los agentes de IoT Edge.
Estos dispositivos Edge también pueden funcionar como puertas de enlace:
- Transparentes: administrando las conexiones entre dispositivos físicos de la red y sus instancias remotas en IoT Hub.
- Traductores: realizando el procesamiento de datos enviados desde dispositivos inferiores (menos inteligentes de la red, como sensores o dispositivos MCU) antes de enviarlos al Hub
El concepto de Hub se refiere al centro de mensajes que conecta los dispositivos de una solución con la aplicación IoT, es decir, IoT back-ends + dispositivos. A nivel de aprovisionamiento, Azure dispone del servicio de aprovisionamiento de dispositivos, que habilita el aprovisionamiento sin necesidad de intervención humana, habilitando el aprovisionamiento de millones de dispositivos de forma segura y escalable.
Además, Azure IoT cuenta con IoT Digital Twins, un servicio para el modelado de gemelos digitales con el que puedes diseñar redes enteras de dispositivos, orquestar el procesamiento de eventos y comprobar el estado de los dispositivos.
Mediante el Hub podemos crear desencadenadores de lógicas de negocios para tomar decisiones rápidas en cuanto a cambios en los datos de la solución IoT con servicios como Azure Event Hubs, Logic Apps o incluso crear módulos específicos que incluyan la lógica de negocios con Azure Functions, lo que veremos en el siguiente artículo
[1] https://www.statista.com/statistics/1194701/iot-connected-devices-use-case/
Fuentes: Microsoft.com
¿Quieres garantizar el buen funcionamiento de tu entorno IT? Contáctanos
¿Estas listo para dar el salto?
Completa los campos y nos pondremos en contacto a la brevedad