Desarrollo de dispositivos IoT

En esta introducción se presentan los conceptos clave sobre el desarrollo de dispositivos que se conectan a una solución típica de Azure IoT. Cada sección incluye vínculos a contenido que proporciona más detalles e instrucciones.

En el diagrama siguiente se muestra una vista general de los componentes en una solución de IoT típica. Este artículo se centra en los dispositivos y la puerta de enlace que se muestran en el diagrama.

Diagrama que muestra la arquitectura de la solución de IoT de alto nivel que resalta las áreas de conectividad de dispositivos.

En Azure IoT, el desarrollador de dispositivos escribe el código para que se ejecute en los dispositivos de la solución. Este código normalmente:

  • Establece una conexión segura a un punto de conexión en la nube.
  • Envía datos de telemetría recopilados de sensores conectados a la nube.
  • Administra el estado del dispositivo y sincroniza ese estado con la nube.
  • Responde a los comandos enviados desde la nube.
  • Habilita la instalación de actualizaciones de software desde la nube.
  • Permite que el dispositivo siga funcionando mientras está desconectado de la nube.

Tipos de dispositivo

Los dispositivos IoT pueden dividirse en dos amplias categorías: microcontroladores (MCU) y microprocesadores (MPU):

  • Los MCU son menos costosos y más fáciles de usar que los MPU.
  • Un MCU contiene muchas de las funciones como, por ejemplo, la memoria, las interfaces y la E/S dentro del propio chip. Un MPU obtiene esta funcionalidad de los componentes de los chips compatibles.
  • Un MCU suele usar un sistema operativo en tiempo real (RTOS) o funcionar sin sistema operativo, y proporciona respuestas en tiempo real y reacciones muy deterministas a eventos externos. Los MPU suelen ejecutar un sistema operativo de uso general, como Windows, Linux o macOS, que proporciona una respuesta en tiempo real no determinista. Normalmente no hay ninguna garantía de cuándo se completará una tarea.

Entre los ejemplos de hardware y sistemas operativos especializados se incluyen:

Windows para IoT es una versión insertada de Windows para MPU con conectividad en la nube que le permite crear dispositivos seguros con fácil aprovisionamiento y administración.

Eclipse ThreadX es un sistema operativo en tiempo real para IoT y dispositivos de borde con tecnología de MCU. Eclipse ThreadX está diseñado para admitir dispositivos altamente restringidos que tienen batería y tienen menos de 64 KB de memoria flash.

Azure Sphere es una plataforma de aplicaciones segura y de alto nivel con características integradas de comunicación y seguridad para los dispositivos conectados a Internet. Se compone de una unidad de MCU cruzados, conectados y seguros, un sistema operativo basado en Linux de alto nivel y personalizado y un servicio de seguridad basado en la nube que ofrece una seguridad renovable y continua.

Primitivos

Un dispositivo IoT de Azure puede usar los siguientes primitivos para interactuar con la nube:

  • Mensajes del dispositivo a nube para enviar telemetría de series temporales a la nube. Por ejemplo, los datos de temperatura recopilados de un sensor conectado al dispositivo.
  • Cargas de archivos para archivos multimedia, como imágenes capturadas y vídeo. Los dispositivos conectados de forma intermitente pueden enviar lotes de telemetría. Los dispositivos pueden comprimir cargas para ahorrar ancho de banda.
  • Dispositivos gemelos para compartir y sincronizar los datos de estado con la nube. Por ejemplo, un dispositivo puede usar el dispositivo gemelo para notificar el estado actual de una válvula que controla a la nube y recibir una temperatura de destino deseada de la nube.
  • Gemelos digitales para representar un dispositivo en el mundo digital. Por ejemplo, un gemelo digital puede representar la ubicación física de un dispositivo, sus funcionalidades y sus relaciones con otros dispositivos.
  • Métodos directos para recibir comandos de la nube. Un método directo puede tener parámetros y devolver una respuesta. Por ejemplo, la nube puede llamar a un método directo para solicitar que el dispositivo se reinicie en 30 segundos.
  • Mensajes de nube a dispositivo para recibir notificaciones unidireccionales de la nube. Por ejemplo, una notificación de que una actualización está lista para descargarse.

Para más información, consulte la Guía de comunicaciones de dispositivo a nube y la Guía de comunicaciones de nube a dispositivo.

SDK de dispositivo

Los SDK de dispositivo proporcionan abstracciones de alto nivel que permiten usar los primitivos sin conocimiento de los protocolos de comunicaciones subyacentes. Los SDK de dispositivo también controlan los detalles que sirven para establecer una conexión segura a la nube y autenticar el dispositivo.

En el caso de los dispositivos MPU, los SDK de dispositivo están disponibles para los siguientes lenguajes:

Para dispositivos MCU, consulte:

Ejemplos e instrucciones

Todos los SDK de dispositivo incluyen ejemplos que muestran cómo usar el SDK para conectarse a la nube, enviar telemetría y usar los demás primitivos.

El sitio de desarrollo de dispositivos IoT incluye tutoriales y guías paso a paso que muestran cómo implementar código para una variedad de escenarios y tipos de dispositivos.

Puede encontrar más ejemplos en el explorador de ejemplo de código.

Para obtener más información sobre cómo implementar reconexiones automáticas a puntos de conexión, consulte Administrar reconexiones de dispositivo para crear aplicaciones resistentes.

Desarrollo de dispositivos sin SDK de dispositivo

Aunque se recomienda usar uno de los SDK de dispositivo, puede haber escenarios en los que prefiera no hacerlo. En estos escenarios, el código del dispositivo debe usar directamente uno de los protocolos de comunicación que IoT Hub y la compatibilidad con Device Provisioning Service (DPS).

Para más información, consulte:

Modelado de dispositivos

IoT Plug and Play permite a los creadores de soluciones integrar dispositivos IoT en sus soluciones sin necesidad de configuración manual. IoT Plug and Play se basa en un modelo de dispositivos que un dispositivo usa para anunciar sus funcionalidades a una aplicación compatible con IoT Plug and Play como IoT Central. Este modelo se estructura como un conjunto de elementos que definen:

  • Propiedades que representan el estado de solo lectura y grabable de un dispositivo o de otra entidad. Por ejemplo, el número de serie de un dispositivo puede ser una propiedad de solo lectura, y la temperatura objetivo de un termostato puede ser una propiedad grabable.
  • Datos de telemetría, que son los datos que emite un dispositivo, independientemente de que sean una secuencia normal de lecturas de un sensor, un error ocasional o un mensaje informativo.
  • Comandos que describen una función u operación que se puede realizar en un dispositivo. Por ejemplo, un comando puede reiniciar una puerta de enlace o tomar una imagen mediante una cámara remota.

Puede agrupar estos elementos en interfaces para reutilizarlos en los distintos modelos para facilitar la colaboración y acelerar el desarrollo.

El modelo se especifica mediante el lenguaje de definición de Digital Twins (DTDL).

El uso de IoT Plug and Play, el modelado y el DTDL es opcional. Puede usar los primitivos de dispositivo IoT sin usar IoT Plug and Play o el modelado. El servicio Azure Digital Twins también usa modelos DTDL para crear grafos gemelos basados en modelos digitales de entornos como edificios o fábricas.

Como desarrollador de dispositivos, al implementar un dispositivo IoT Plug and Play hay un conjunto de convenciones que se deben seguir. Estas convenciones proporcionan una manera estándar de implementar el modelo de dispositivo en el código mediante los primitivos disponibles en los SDK de dispositivo.

Para obtener más información, consulte:

Código de dispositivo en contenedor

Si usa contenedores, como en Docker, para ejecutar el código del dispositivo, puede implementar código en los dispositivos mediante las funcionalidades de la infraestructura de contenedor. Los contenedores también permiten definir un entorno en tiempo de ejecución para el código con todas las versiones de paquete y biblioteca necesarias instaladas. Los contenedores facilitan la implementación de actualizaciones y la administración del ciclo de vida de los dispositivos IoT.

Azure IoT Edge ejecuta código de dispositivo en contenedores. Puede usar Azure IoT Edge para implementar módulos de código en los dispositivos. Para más información, consulte Desarrollo de sus propios módulos de IoT Edge.

Sugerencia

Azure IoT Edge habilita varios escenarios. Además de ejecutar el código del dispositivo IoT en contenedores, puede usar Azure IoT Edge para ejecutar servicios de Azure en los dispositivos e implementar puertas de enlace de campo. Para más información, consulte ¿Qué es Azure IoT Edge?

Herramientas de desarrollo

En la tabla siguiente se enumeran algunas de las herramientas de desarrollo de IoT disponibles:

Herramienta Descripción
Extensión de VS Code de Azure IoT Hub Esta extensión de VS Code le permite administrar los recursos y dispositivos de IoT Hub desde VS Code.
Azure IoT Explorer Esta herramienta multiplataforma le permite administrar los recursos y dispositivos de IoT Hub desde una aplicación de escritorio.
Extensión de Azure IoT para la CLI de Azure Esta extensión de la CLI incluye comandos como az iot device simulate, az iot device c2d-message y az iot hub monitor-events que le ayudan a probar las interacciones con los dispositivos.

Pasos siguientes

Ahora que ha visto información general sobre el desarrollo de dispositivos en soluciones de Azure IoT, algunos pasos siguientes sugeridos incluyen: