Contenido


Lecciones aprendidas de mis primeras experiencias en el desarrollo de IoT

Comments

Cuando se proponga construir una aplicación de IoT, tiene que considerar diferentes dispositivos, kits de hardware, SDKs y protocolos de comunicación, además de su típico entorno de desarrollo de software. A medida que me aventuré en el desarrollo de IoT, fui aprendiendo varias lecciones importantes:

  • Necesita experiencia con SDKs de varios dispositivos
  • MQTT es el mejor protocolo de comunicaciones para IoT
  • Los contenedores simplifican enormemente sus desarrollos de IoT
  • Puede utilizar la tecnología blockchain para proteger sus soluciones de IoT

¿Qué hace del desarrollo de IoT algo único?

El desarrollo de aplicaciones de IoT es diferente del desarrollo de otros tipos de software debido a las características únicas del IoT:

  • Cada dispositivo de IoT típicamente tiene una pequeña cantidad de potencia de computación. Cuando se compara con las computadoras y los teléfonos inteligentes, la función primaria de los dispositivos de IoT no es la computación. Normalmente sólo tienen una pequeña placa de unidad de mitrocontrolador (MCU) que se incorpora a un dispositivo que está diseñado para otros fines.
  • Los dispositivos de IoT tienen sus propios entornos de programación. Debido a las restricciones que impone la limitada potencia de computación de los dispositivos, es imposible que los dispositivos IoT ejecuten sistemas operativos tradicionales o herramientas de desarrollo que están diseñadas para dispositivos mucho más potentes. Además, los dispositivos de IoT no tienen una pantalla ni un teclado para que accedan los programadores.
  • Los dispositivos de IoT a menudo funcionan entre entornos de bajo ancho de banda y de redes no confiables. Muchos dispositivos de IoT son móviles o están en campo. Tienen que conectarse con la red inalámbrica que esté disponible, y deben que seguir funcionando cuando no haya red.
  • La implementación y la gestión del software de dispositivos de IoT es un desafío importante. Sin una UI tradicional y una red confiable, es casi imposible que los usuarios actualicen manualmente todos los dispositivos que están en el campo cuando sale una actualización de software.
  • Las aplicaciones de IoT son aplicaciones de máquina a máquina (M2M). Cada dispositivo de IoT normalmente genera una serie de puntos de datos de sensores que tienen incluidos sellos temporales. Para los humanos, todos esos datos son difíciles de entender y brindan poco valor. Los datos del IoT normalmente son acumulados y procesados por otras máquinas y dispositivos.
  • Los dispositivos IoT pueden ser manipulados en el campo. Podría haber muchos más dispositivos de IoT que personas. Así que, la mayor parte de los dispositivos de IoT están desatendidos durante largos periodos de tiempo. Son susceptibles a manipulación y a otros ataques maliciosos.

Lección 1: Aprenda y experimente con SDKs de varios dispositivos

Debido a la diversidad de dispositivos IoT y de escenarios de aplicaciones, el desarrollo de aplicaciones de IoT tiende a ser especializado. En vez de elegir una computadora de uso general, los desarrolladores deben elegir diferentes combinaciones de hardware y software para optimizar casos de uso específicos.

En uno de mis artículos anteriores, Construir una aplicación de IoT práctica – un supervisor de la calidad del aire, utilicé la placa NodeMCU como la base de mi aplicación de IoT. NodeMCU tiene algunas ventajas muy particulares (que presenté en un artículo anterior, Conozca NodeMCU y su placa DEVKIT), lo que incluye un soporte wifi incorporado, tiene un costo muy bajo y soporte para el lenguaje de programación LUA. Sin embargo, NodeMCU no tiene una comunidad de desarrolladores grande. Como resultado, el NodeMCU no ha sido probado exhaustivamente y no está soportado por la comunidad del fabricante de sensores. Aunque la mayor parte de los sensores funcionan bien con NodeMCU (después de todo soporta PINs digitales y analógicos estándar para la E/S de datos), los desarrolladores a menudo necesitan hacer muchas pruebas y errores para que el sistema funcione de forma confiable.

Para crear un prototipo de una sencilla aplicación de IoT, usted también podría empezar con el Kit de inicio de Arduino . La ventaja de la placa de Arduino es su simplicidad. Tan sólo es una computadora con pines de E/S, y soporta varios entornos de programación, incluyendo un entorno de programación basado en bloques que es fácil para niños y un lenguaje de programación C tradicional. Debido a su gran comunidad se utiliza generalmente para enseñar a programar a los niños, para las placas de Arduino se ha desarrollado un ecosistema de sensores, dispositivos periféricos (por ejemplo, módulos de redes wifi y móviles o luces LED), tutoriales y ejemplos de código. Para proyectos educativos o de prueba de concepto, el kit de desarrollo de Arduino es ideal.

Para las aplicaciones que requieran algo más que conectarse con sensores, es posible que pensemos que la potencia de computación que brindan Arduino o NodeMCU es insuficiente. El Kit del desarrollo de Raspberry Pi es una placa de bajo costo que brinda una CPU x86 de Intel. Ya que el x86 tiene un uso generalizado, los desarrolladores de Raspberry Pi pueden reutilizar mucho software (especialmente software de código abierto, incluidos muchos controladores de dispositivos que ha desarrollado la comunidad de Linux a lo largo de los años). Sin embargo, los puntos negativos de una solución basada en x86 también son obvios -- es compleja y no es totalmente eficiente con la energía.

Además de esos kits de desarrollo generales, hay kits de desarrollo especializados para soluciones específicas de la industria o de aplicaciones. Por ejemplo,

  • El módulo Nvidia Jetson TX2 es una placa incorporada que soporta el aprendizaje profundo basado en la GPU de dispositivos como cámaras de vigilancia y automóviles de conducción autónoma.
  • El módulo MATRIX Voice es una placa integrada con una matriz de micrófonos (sensores), un chip de procesamiento y de reconocimiento especializado de la voz (FPGA) y un controlador ESP (NodeMCU). Se puede incorporar a otros dispositivos para habilitar funciones de control por voz.

Además, también existen muchas otras soluciones especializadas para segmentos verticales de industrias. Asegúrese de investigarlos antes de empezar sus propios proyectos.

Anna Gerber ha investigado y revisado 5 kits de desarrollo populares para IoT, esto puede ayudarle en su propia investigación.

Lección 2: Tómese el tiempo necesario para aprender a sacar provecho de MQTT

Para los principiantes, ya que utilizar el conocido HTTP para las comunicaciones de red puede ser algo tentador, compensa aprender y utilizar MQTT como su protocolo de comunicaciones. Es un protocolo más eficiente y confiable para los datos de sensores que generan los dispositivos de IoT.

MQTT brinda un mecanismo para crear una comunicación de dos vías entre los servidores y los dispositivos. El servidor puede enviar comandos al dispositivo y tiene el potencial de reconfigurarlo para gestionar mejor la energía, el ancho de banda u otros recursos.

Es más, el MQTT también permite una comunicación peer-to-peer entre dispositivos. Al organizar los dispositivos en temas, los dispositivos pueden intercambiar datos o comandos entre ellos o en un grupo. Esta estructura puede permitir que el desarrollador de aplicaciones establezca una jerarquía de dispositivos con esquemas de control complejos.

Puede saber más acerca de MQTT y dar los primeros pasos en el desarrollo de MQTT con mi artículo anterior, Conociendo el MQTT – Por qué MQTT es uno de los mejores protocolos de red para Internet de las Cosas .

Lección 3: Utilizar una infraestructura de contenedores

Para las aplicaciones de IoT complejas a veces es necesario gestionar las actualizaciones de software de potencialmente millones de dispositivos desatendidos que están en el campo. Para lograrlo, podemos utilizar contenedores de software que pueden descargar módulos nuevos bajo demanda y que pueden actualizarse por sí mismos. Un buen ejemplo es el contenedor OSGi .

El contenedor OSGi fue inventando por el laboratorio IBM Pervasive Computing, y su propósito era ser ejecutado dentro de decodificadores caseros, donde se puede gestionar y actualizar de forma remota sin intervención del usuario. Hoy en día, el OSGi se usa principalmente en aplicaciones por el lado del servidor, donde los equipos de DevOps necesitan gestionar y actualizar un gran número de servidores de centros de datos de forma remota y automática. Funciona como alternativa a las pesadas infraestructuras de aplicaciones Java EE. Sin embargo, ya que para ejecutar OSGi son necesarias una máquina virtual de Java y sus bibliotecas relacionadas, es adecuado para aplicaciones de IoT relativamente complejas de dispositivos potentes que ejecutan sistemas operativos completamente desarrollados.

Algunos ejemplos de implementaciones de OSGi de código abierto incluyen estas más populares:

En un dispositivo potente como la Raspberry Pi, también puede instalar Docker y después Linux en el contenedor de Docker. Esto nos permite instalar y gestionar automáticamente un software preconfigurado en un gran número de dispositivos. (Puede leer más acerca de cómo utilizar contenedores de Docker para el desarrollo de IoT en este tutorial de developerWorks .) Docker y OSGi se complementan entre sí, ya que Docker gestiona a nivel del sistema operativo, y OSGi gestiona al nivel de los componentes de las aplicaciones.

Lección 4: IoT y blockchain

Finalmente, la seguridad y la auditabilidad son esenciales para las aplicaciones de IoT. Ya que las aplicaciones de IoT generan grandes cantidades de datos de M2M y ningún humano puede supervisar los datos en tiempo real de forma activa para garantizar su precisión, su aplicación de IoT tiene que establecer la "confianza" entre las máquinas y ser capaz de auditar los datos cuando algo va mal.

Los datos de los dispositivos de IoT normalmente están formados por una larga secuencia de hechos que tienen un sello temporal, como las lecturas de sensores y las ubicaciones. Esos puntos de los datos son "hechos" y, por lo tanto, inmutables. Para proteger la integridad de los datos y para prevenir la manipulación, el sistema puede almacenar los puntos de datos en un blockchain. IBM Watson IoT Platform e IBM Blockchain ofrecen dichos servicios. Para saber más acerca de cómo implementar blockchain en aplicaciones de IoT, puede revisar este tutorial de developerWorks, Integre los datos del dispositivo con los contratos inteligentes de IBM Blockchain.

Además de los puntos de datos de almacenamiento, blockchain también puede soportar las transacciones de la red de IoT. Un sencillo ejemplo es RFIDs en una red de una cadena de suministro. Los dispositivos de IoT pueden realizar el seguimiento de las RFIDs de las etiquetas de bienes físicos y pueden registrar las transacciones fiables como bienes que pasan de un proveedor al siguiente. Dichas transacciones no se limitan a datos generados por el dispositivo. También se pueden aplicar para gestionar a los propios dispositivos. Por ejemplo, para realizar un seguimiento de los dispositivos, en blockchain, los cambios en la ubicación, el estado y la configuración del dispositivo se pueden registrar como transacciones.

Los blockchains tradicionales a veces utilizan demasiada computación como para utilizarlos en dispositivos de IoT. Para atender específicamente el caso de uso de IoT se están inventando nuevos protocolos tipo blockchain. Por ejemplo, el proyecto IOTA desarrolló una estructura de datos de red llamada "tangle" (maraña) (en vez de "chains" (cadenas)) para establecer la confianza y la inmutabilidad. Podría ser un sustituto razonable de blockchain en el área de IoT. El tiempo lo dirá.

Conclusión

Hemos discutido los desafíos en el desarrollo de aplicaciones de IoT y algunos enfoques para atender a esos desafíos. Más específicamente, debido a la diversidad de aplicaciones de IoT y a las restricciones que los dispositivos, compensa aprender varios kits de desarrollo, SDKs y protocolos como el MQTT. Para gestionar mejor que desarrollo y la seguridad de las aplicaciones de IoT, usted puede utilizar infraestructuras de contenedores, como OSGi y Docker, y redes de blockchain.


Recursos para Descargar


Temas relacionados


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Internet of Things
ArticleID=1056791
ArticleTitle=Lecciones aprendidas de mis primeras experiencias en el desarrollo de IoT
publish-date=01192018