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

Día 10. Proyectos

Día 10. Proyectos con Arduino.

Repaso día 9:

Saber más de motores:

Primera Parte: Proyectos

6.1 – Proyectos final de curso

Práctica: Proyectos

6.2 – Estación meteorológica
6.3 – Arranque y Parada motor DC
6.4 – Grabar Datos de Temperatura (Datalogger)
6.5 – Mandar mensajes desde Arduino y visualizarlos en tiempo real

Más información:

1.5 – Qué puede hacer Arduino
1.7 – Cómo funciona Arduino

1.9 – Novedades en Arduino. Arduino.cc y Arduino.org

1.11 – Montaje del Starter Kit Arduino
2.6 – Primeros Pasos Arduino
2.9 – Simuladores Arduino
2.10 – Uso simulador Arduino
2.11 – Programación Visual
4.1 – Componentes Electrónicos
4.2 – Memoria Flash, SRAM y EEPROM
4.3 – Uso de Memoria en Arduino
4.14 – Display LCD

Día 8. Ethernet

Día 8. Ethernet y HTTP en Arduino.

Primera parte: HTTP y Ethernet

5.1 – Conceptos básicos de comunicaciones

5.2 – TCP/IP

5.3 – Protocolo HTTP

5.4 – Ethernet Shield

5.5 – Librería Ethernet

Práctica: Web client y Web server

5.6 – Arduino Web Client

5.7 – Arduino Web Server

Opcional: IoT

5.8 – Arduino y IoT

Saber más:

Día 6. Sensores

Día 6. Librerías, Arrays y sensores con Arduino.

Repaso día 5https://aprendiendoarduino.wordpress.com/2016/06/30/estructuras-de-control-2/

Primera parte: Memoria, sensores y periféricos

3.5 – Arrays, Strings y Constantes

2.7 – Librerías

Práctica: sensores y periféricos

3.6 – Ejemplos con Arrays, strings y Strings

2.8 – Instalación Librerías

Opcional: Memoria

4.2 – Memoria Flash, SRAM y EEPROM

4.3 – Uso de Memoria en Arduino

Saber más:

Día 5. Programar Arduino

Día 5.  Cómo Programar Arduino.

Primera parte: Funciones y librerías.

3.7 – Operadores

3.8 – Estructuras de control

3.9 – Funciones definidas por usuario

Práctica: Entradas y salidas analógicas

3.4 – Efectos con LEDs

Opcional: Librerías y Simuladores Arduino

2.9 – Simuladores Arduino

2.10 – Uso simulador Arduino

 Saber más: