Itinerario Formación IoT/Industria 4.0

En un acercamiento a esta disciplina, se busca conocer las tecnologías necesarias para el desarrollo de soluciones IoT/Industria Conectada y valiéndonos para ello de herramientas, tecnologías, protocolos y software libre/open source que hay a nuestra disposición, de forma que cualquier empresa por pequeña que sea pueda hacer un proyecto sencillo de IoT/Industria 4.0 con una inversión mínima, sea cual sea el sector al que pertenezca.

No solo las grandes empresas pueden dar el salto a IoT, la tecnologías libres permiten que sea factible la digitalización de las pymes con una inversión económica mínima y que surja la innovación desde las propias empresas con una formación adecuada a sus trabajadores.

Fundamentos IoT (Nivel 1)20 h
Dispositivos HW IoT (Nivel 2)20 h
Infraestructuras IoT (Nivel 3)20 h
Conectividad IoT (Nivel 3)20 h
Plataformas IoT (Nivel 4)20 h
Desarrollo Soluciones IoT con Herramientas Libres (Nivel 5)20 h

Ver Anexo I con el material necesario para impartir los cursos de este itinerario.

Fundamentos IoT (Nivel 1)

Objetivo

Describir los fundamentos de Internet de las Cosas e identificar los distintos mercados a los que el alumno puede orientar su actividad profesional.

Dado que las comunicaciones, la conexión a Internet y los dispositivos conectados es un aspecto importante actualmente y los conceptos de computación y comunicaciones van unidos de la mano cuando hablamos de las TIC (Tecnologías de la Información y de la Comunicación), vamos a tratar también en este curso las comunicaciones y la programación de los dispositivos conectados.

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer qué es IoT
  • Reconocer las tecnologías y arquitecturas de IoT
  • Capas en IoT
  • Saber los retos de IoT
  • Importancia de la seguridad den IoT
  • Empresas en IoT
  • Conocer los mercados verticales de IoT
  • Saber los servicios que ofrece IoT

Requisitos Alumnos

No son necesarios requisitos previos de los alumnos para asistir a este curso

Contenido del Curso

  • Qué es el IoT. Visión Holística
  • Ecosistema IoT
  • Retos de IoT
  • Industria 4.0. IIoT
  • Empresas en IoT
  • Mercados Verticales IoT
  • Campos Profesionales IoT
  • Aplicaciones IoT

Dispositivos HW IoT (Nivel 2)

Objetivo

Visión general del HW en el ecosistema IoT y puesta en práctica. Identificar la solución Hardware y Firmware más correcta para un proyecto IoT.

Analizar el hardware y el firmware utilizado dentro el ecosistema IoT y programar algunas las plataformas de prototipado más populares del mercado

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer las plataformas HW IoT 
  • Conocer el firmware usado en las plataformas HW
  • Identificar la solución Hardware y Firmware más correcta para un proyecto IoT
  • Utilizar plataformas de prototipado IoT

Requisitos Alumnos

Haber cursado el módulo de Fundamentos IoT o tener experiencia en HW y Firmware IoT.

Contenido del Curso

  • Dispositivos IoT
  • HW IoT Industrial
  • Firmware: SW de los dispositivos
  • Plataforma de Prototipado
  • Prácticas Firmware
  • HW IoT Comercial

Infraestructuras de Comunicaciones IoT (Nivel 3)

Objetivo

Visión detallada de las infraestructuras y conectividad en IoT con ejemplos prácticos en algunas tecnologías. El alumno será capaz de analizar las necesidades de una solución IoT, ofrecer la mejor solución e implementarla. 

Utilizar las Infraestructuras de comunicación que se usan hoy en día para IoT

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer las diferentes infraestructuras de comunicaciones IoT disponibles en el mercado
  • Comparar las tecnologías inalámbricas y saber elegir la más adecuada dependiendo del proyecto.
  • Ofrecer e implantar soluciones IoT a nivel de conectividad e infraestructuras IoT a partir del análisis de necesidades del proyecto
  • Utilizar algunas de las comunicaciones con placas de prototipado como Arduino y ESP8266

Requisitos Alumnos

Haber cursado el módulo de Fundamentos IoT o tener experiencia en infraestructuras y conectividad IoT.

Contenido del Curso

  • Conectividad IoT
  • Redes Inalámbricas IoT
  • Infraestructura de Comunicación IoT
  • Prácticas de Comunicaciones IoT

Conectividad IoT (Nivel 3)

Objetivo

Visión detallada de las infraestructuras y conectividad en IoT con ejemplos prácticos en algunas tecnologías. El alumno será capaz de analizar las necesidades de una solución IoT, ofrecer la mejor solución e implementarla. 

Analizar los protocolos más populares para dotar de conectividad a los dispositivos IoT y configurar el software

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer los protocolos más populares usados en IoT
  • Profundizar en el protocolo HTTP y el uso de API REST
  • Profundizar en el protocolo MQTT y su uso en aplicaciones IoT
  • Instalar, configurar y usar un broker MQTT
  • Ofrecer e implantar soluciones IoT a nivel de conectividad e infraestructuras IoT a partir del análisis de necesidades del proyecto

Requisitos Alumnos

Haber cursado el módulo de Fundamentos IoT o tener experiencia en infraestructuras y conectividad IoT.

Contenido del Curso

  • Protocolos IoT
  • Protocolo HTTP
  • Uso de API REST
  • Protocolo MQTT
  • Práctica MQTT

Plataformas IoT (Nivel 4)

Objetivo

Visión general de las plataformas IoT y trabajo detallado en algunas de ellas. Proponer, instalar y configurar la plataforma más adecuada para el desarrollo de soluciones IoT.

Analizar las  las plataformas existentes en IoT e instalar y configurar alguna de las más utilizadas.

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Conocer las plataformas IoT Generalistas y especializadas más usadas
  • Conocer plataformas open source, instalar y configurar en un servidor
  • Encontrar la plataforma adecuada para una solución IoT, instalación y configuración
  • Programar servicios usando Node-Red
  • Uso de Bases de Datos para almacenamiento de datos
  • Configuración y uso de Dashboards
  • Analizar datos de forma visual

Requisitos Alumnos

Haber cursado el módulo de Fundamentos IoT o tener experiencia en plataformas IoT.

Contenido del Curso

  • Plataformas Cloud Generalistas
  • Plataformas Cloud Especializadas
  • Práctica de Plataformas Cloud
  • Plataformas Privadas/Libres
  • Práctica Plataformas Privadas/Libres
  • Servicios IoT
  • Node-Red
  • Bases de Datos
  • Dashboards
  • Ejemplos prácticos IoT

Desarrollo Soluciones IoT con Herramientas Libres (Nivel 5)

Objetivo

Este curso pretende unificar todos los conocimiento adquiridos en los anteriores cursos del itinerario IoT para hacer un proyecto “full stack” de IoT.

Unificar los conocimientos adquiridos en los otros cursos, identificar necesidades reales con respuestas desde el IoT y desarrollar una solución específica para una necesidad.

Toda la documentación del curso y el código usado es libre y accesible desde https://www.aprendiendoarduino.com/.

Al finalizar el curso el alumno será capaz de:

  • Proponer e implementar soluciones IoT como respuesta a necesidades específicas
  • Desarrollar un proyecto IoT  estructurado según las fases relacionadas en cada módulo  que de respuesta a una necesidad real del entorno del alumno

Requisitos Alumnos

Los alumnos deberán haber cursado todos los cursos del itinerario IoT o tener experiencia en el desarrollo de soluciones IoT

Contenido del Curso

  • Repaso de conceptos
  • Ejemplo de soluciones IoT Completas
  • Identificación de necesidades
  • Presentación preliminar
  • Desarrollo del Proyecto
  • Presentación del Proyecto

Análisis: Kits Aprendizaje XBee de Digi

La gente de Digi en Logroño me ha dejado para probar dos kits de aprendizaje para que los pruebe y de paso me sirvan para preparar la parte de comunicación inlambrica del curso Arduino avanzado en http://www.aprendiendoarduino.com/arduino-avanzado-2016/.

Los kits que he probado son:

Se trata de unos kits de aprendizaje de los famosos módulos RF XBee que fabrica Digi para comunicación inalámbrica y que pueden adquirirse en digi-key electronicshttp://www.digikey.es/

En la caja de ambos kits viene todo el hardware y el enlace a la web donde se encuentran los tutoriales y guías para el uso de los kits.

Veamos por separado cada uno de los kits.

 

Digi Wireless Connectivity Kit

Aunque el uso que voy a hacer los los módulos va a ser siempre con Arduino, me decidí empezar con este kit que no tiene Arduino ni posibilidad de conectar con un microcontrolador directamente, porque me parecía más sencillo y me quería centrar en aprender la tecnología ZigBee y manejar los módulos XBee de Digi, y no me equivoqué.

Luego con el siguiente kit (XBee Arduino Compatible Coding Platform) y los conocimientos adquiridos, me resultó más fácil manejar los módulos XBee con Arduino.

El hardware de este kit es muy sencillo, se compone de dos módulos XBee serie 1 o XBee 802.15.4 que son unos módulos muy sencillos de Xbee, dos placas de desarrollo para los módulos con conectores grove y dos cables micro USB para conectar las placas de desarrollo al ordenador.

wireless_connectivity_kit_500x316

Este hardware puede comprarse en digi-key en el siguiente enlace:http://www.digikey.es/product-detail/es/digi-international/XKB2-AT-WWC/602-1551-ND/5305247 y tiene un coste de 59$ (aproximadamente 53€).

En la web de digi-key hay un kit nuevo http://www.digikey.es/product-detail/es/digi-international/XKB2-A2T-WWC/602-1902-ND/6010111 que usa los módulos XBee S2C 802.15.4

En mi caso el que he probado es el que lleva los módulos Serie 1:

También hay otros kits disponibles: http://www.digikey.es/en/product-highlight/d/digi-intl/xbee-arduino-coding-platform

Sobre el hardware, decir que es muy sencillo y útil para el aprendizaje, pero luego solo se podría reutilizar los módulos RF, porque las placas de desarrollo no les veo mucha salida salvo para hacer las prácticas propuestas en el kit. A estas placas de desarrollo les añadiría una salida accesible del puerto serie con un selector a 3.3 o 5 V para poder conectarlas a una Raspberry Pi o un Arduino y poder seguir usándolas y aprender la integración con otros dispositivos, ya que sino están limitadas al uso con el ordenador.

Para usar este hardware Digi pone a disposición de los compradores del kit y del resto del mundo un tutorial que va contando paso a paso cómo montar los módulos, como instalar el software necesario para configurar y manejar los Xbee, explica cómo funcionan los módulos y en cada apartado propone ejercicios prácticos para usarlo con el kit adquirido.

Este completo tutorial es accesible desde:http://www.digi.com/resources/documentation/Digidocs/90001456-13/Default.htm

PDF del tutorial: http://www.digi.com/resources/documentation/digidocs/pdfs/90001456-13.pdf

Este tutorial es la gran aportación de Digi para aprender a manejar sus módulos RF desde cero y te guia paso a paso como si de un curso online fuera.

El tutorial comienza con ejemplos muy sencillos y hace una guía paso a paso para aprender el manejo los módulos. Los puntos más importantes que se ven son:

Este tutorial es perfecto para aprender a manejar los módulos de una forma muy didáctica, aunque en algunos aspectos se queda corto en la explicación (al menos para los más curiosos) y hay que hacer un acto de fe que con esa configuración funciona, pero en algún caso sin explicar bien porqué. Esa falta de información puede llevar a error en un par de casos a la hora de hacer funcionar la práctica, pero pensando un poco es sencillo resolverlo.

Otro defecto de este tutorial, al menos para mi, es que los ejercicios más interesantes los hace con Java para crear una aplicación en el ordenador que se conecte a los módulos e interactúe con ellos, pero yo añadiría esos mismos ejercicios con algún otro lenguaje como python con .NET.

El objetivo de este kit junto con el manual es aprender a manejar los módulos RF de XBee para la conexión de dispositivos y sensores y lo cumple a la perfección. Además por aprox. 53€ después de aprender a usarlos puedes reutilizar los módulos XBee en cualquier proyecto.

Para mis cursos en www.aprendiendoarduino.com uso como base este tutorial para enseñar como manejar los módulos Xbee.

 

XBee Arduino Compatible Coding Platform

El segundo kit de aprendizaje de Digi que he probado, comencé a usarlo cuando ya había probando a fondo el anterior (Wireless Connectivity Kit) y conocía bien el uso de los módulos RF de XBee, lo que me facilitó mucho el uso de este kit, puesto que la parte más teórica del funcionamiento de los módulos de XBee no viene en el tutorial de este kit.

El hardware de este kit es muy completo y trae entre otras cosas:

Todo el contenido del kit está enhttp://docs.digi.com/display/XBeeArduinoCodingPlatform/Kit+contents

wirelessgamekit

Este hardware puede comprarse en digi-key en el siguiente enlace por 99$ (aproximadamente 89,11€): http://www.digikey.es/product-detail/en/digi-international/XKB2-AT-WWG/602-1550-ND/5271212

La verdad es que es un buen precio por el kit teniendo en cuenta que tenemos 3 módulos XBee.

Datasheets:

Sobre el hardware, decir que es muy completo y que todos los materiales que vienen pueden ser reutilizados para otros proyectos.

Para usar este hardware Digi pone a disposición de los compradores del kit y del resto del mundo un tutorial que va contando paso a paso diversos proyectos enfocados al juego, tanto con Arduino como interacción con el ordenador.

El tutorial es accesible desde: http://docs.digi.com/display/XBeeArduinoCodingPlatform/XBee+Arduino+Compatible+Coding+Platform

Este tutorial empieza haciendo una breve descripción del kit y luego explica la instalación del software XCTU y un primer ejemplo. Luego ya entra de lleno en los proyectos.

El kit incluye cinco proyectos con processing para demostrar la interacción con software y otros 5 proyectos con Arduino, para hacer circuitos inalámbricos con los módulos XBee.

Este tutorial se centra en los proyectos que son muy didácticos, pero apenas trata la parte más teórica del funcionamiento de XBee. En algunos proyectos hay enlaces a los aspectos de cómo funcionan los módulos XBee, pero están un poco escondidos y no son accesibles desde el menú lateral.

Los proyectos me gustan, pero de nuevo hay que hacer un acto de fe que las configuraciones que nos dan funcionan, aunque no se explica porque los parámetros que funcionan son esos y no otros.

Al final de cada proyecto hay un apartado llamado “Learn More” y en muchos casos apunta al tutorial del anterior kit (Wireless Connectivity Kit), lo que confirma mi idea que antes de empezar con este kit, es recomendable leer el tutorial del kit anterior si quieres conocer bien el manejo de los módulos XBee.

Después de los proyectos y para finalizar hay varios apartados de información adicional, especialmente interesantes el de troubleshooting y XBee buying guide.

 

Proyectos Usando Processing

Los proyectos propuestos en este tutorial para interacción de XBee con software, en este caso con processing, son:

Todo el código está disponible en:

Estos proyectos no están actualizados a la última versión 3 de processing, lo que provoca que aparezca algún pequeño error en el código fácilmente solucionable.

Estos 5 proyectos son básicamente iguales y nos enseñan cómo interactuar hardware y software de forma inalámbrica. Nos da la configuración de los dos módulos, uno conectado al ordenador y otro a unos botones, potenciómetros, etc… y nos da el software a ejecutar. Luego simplemente es ver como interactua.

Los dos primeros proyectos demuestra el pin pairing y cómo funciona la librería de XBee en processing y por lo tanto en ese caso el módulo XBee debe estar en modo API. El cuarto proyecto es igual que el segundo pero en lugar de usar un módulo, usa dos módulos. En el tercer proyecto añade un tercer módulo y la entradas analógicas con un potenciómetro y el envío de lecturas cada 100 ms. El último proyecto mezcla lo aprendido en los anteriores y monta un controlador de juegos inalámbrico.

Una mejora que podría incluir el código de processing es sacar por pantalla lo recibido por el módulo XBee, que serviría para hacer debug y aprender un poco más del modo API. Sería sencillo añadir esa funcionalidad por nuestra parte.

También sería interesante añadir a este kit algún ejemplo con lenguajes de programación más usados como python o .NET.

 

Proyectos Usando Arduino

Los proyectos propuestos en este tutorial para uso de XBee con Arduino son:

Los 4 primeros proyectos son muy parecidos trabajando la comunicación inalámbrica con Arduino, la librería de XBee y los conceptos de cambio de estado de pin y las entradas y salidas de los módulos XBee. El último ejemplo introduce otros conceptos como el de coordinador y RSSI o indicador de fuerza de señal recibida.

Al contrario que tutorial del anterior kit, no se habla casi nada de la parte de cómo funcionan los módulos XBee y cómo interactúan con Arduino. Hay un apartado de trabajando con Arduinohttp://docs.digi.com/display/XBeeArduinoCodingPlatform/Working+with+Arduino donde se ven unas nociones básicas de Arduino y otra de como instalar la librería xbee-arduino enhttp://docs.digi.com/display/XBeeArduinoCodingPlatform/Installing+the+xbee-arduino+library, pero no está actualizado a las nuevas versiones del IDE de Arduino, aunque en el enlace al repositorio de github de la librería si lo explica: https://github.com/andrewrapp/xbee-arduino

Un aspecto que sería muy interesante es documentar la librería xbee-arduino explicando que hace cada método de los disponibles, porque sino no nos queda más remedio que ponerse a leer el código de la librería y averiguarlo por tu cuenta.

El código de los ejercicios está disponible enhttps://github.com/digidotcom/XBeeArduinoCodingPlatform para descargar o hacer fork.

A la hora de hacer los ejercicios, si algo no funciona, es imposible hacer troubleshooting porque no se proporciona una forma de mandar por puerto serie todo lo que le llega de Arduino. Un poco de debug es necesario no solo para ver que puede estar fallando sino para aprender cómo funciona la comunicación entre Arduino y XBee.

Este kit tiene 3 módulos pero sólo es posible hacer ejemplos de comunicación multipunto, pero no es posible hacer esquemas de comunicación mesh, puestos que los módulos del kit no tienen esa funcionalidad.

En este tutorial apenas se ofrece parte teórica, lo que hace que si no hubiera hecho el anterior tutorial me hubiera costado un poco más entender el funcionamiento de los módulos XBee o hacer un acto de fe de que las configuraciones funcionan, pero la parte de la explicación de las conexiones y los proyectos es muy buena.

Los puntos más interesantes del tutorial son:

El objetivo de este kit junto con el manual es aprender más sobre cómo los módulos XBee pueden integrarse fácil y rápidamente con otros elementos (como Arduino o software) para conseguir conectividad inalámbrica y en mi opinión se consigue.

 

Conclusión

La gran ventaja de uso de los módulos RF XBee frente a otros es la sencillez de uso gracias al potente programa de configuración XCTU. Esto permite aplicar tecnología inalámbrica de forma rápida y sencilla a nuestros proyectos. La desventaja es el precio, son más caros que otros módulos equivalentes como los nRF24.

Con estos kits de aprendizaje se consigue aprender cómo funcionan los módulos XBee y cómo manejarlos. Los tutoriales disponibles en general están muy bien para aprender como si de un curso online se tratara.

Con estos kits he aprendido mucho, pero para los curiosos que nos gusta llegar más al fondo se quedan un poco cortos y he usado este documentohttp://www.hmangas.com/Electronica/Datasheets/Shield%20XBee%20Arduino/XBee-Guia_Usuario.pdf para profundizar y aclarar algunos conceptos.

Agradecer a Digi Logroño y en especial al Carlos que me hayan prestado este material y poder ampliar mi conocimiento sobre la tecnología XBee y así poder incluirla en mis cursos.

Más información de XBee en mis cursos y talleres de www.aprendiendoarduino.com y en el apartado XBee del curso avanzado de Arduino http://www.aprendiendoarduino.com/arduino-avanzado-2016/

Si quieres saber cuándo publicaré en la web los próximos cursos de XBee y donde los impartiré presencialmente, puedes enterar a través de mi twitter @jecrespom o en la lista de correo de #aprendiendoarduinohttp://list.aprendiendoarduino.com/mailman/listinfo/aprendiendoarduino.com.noticias