Archivo de la etiqueta: Articulos

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 electronics http://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á en http://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 Arduino http://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 en http://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 en https://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 documento http://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 #aprendiendoarduino http://list.aprendiendoarduino.com/mailman/listinfo/aprendiendoarduino.com.noticias

Anuncios

Cómo Empezar con Arduino

El compañero del fantástico blog http://rufianenlared.com/ me pidió que escribiera sobre “Cómo co** empezar con Arduino” para un post donde varios de los que nos dedicamos a divulgar ciencia y tecnología con Arduino diéramos nuestra opinión.

En mi experiencia como instructor en varios cursos presenciales de Arduino, talleres, consultas online y en charlas que he tenido con personas interesadas en el mundo Arduino, así como divulgador de tecnología con Arduino a través del curso online www.aprendiendoarduino.com, el tema de cómo empezar con Arduino me lo he planteado con frecuencia.

Aprender Arduino implica aprender muchas tecnologías dependiendo de hasta donde se quiera llegar, pero entre otras tecnologías podemos decir que Arduino comprende: electrónica digital y analógica, electricidad, programación, microcontroladores, tratamiento de señales, protocolos de comunicación, arquitectura de ordenadores, mecánica, motores, diseño de placas electrónicas, física, programación web, etc… Y Arduino nos permite que para empezar a trabajar con él no sea necesario tener todos esos conocimientos, sino que Arduino es el vehículo que nos va a servir para aprender todas esas tecnologías y ciencias de una forma práctica y aprendiendo mientras se hacen cosas “learning by doing”, pero no cabe duda que hay que tener una cierta base para poder empezar.

Arduino ha socializado la tecnología, supongamos que desde hace un tiempo tenemos una buena idea que no se puede llevar a cabo porque necesita un conocimiento de electrónica en mayor o menor medida, pero que actualmente no tenemos. Esa idea, habrá pasado de proyecto a obstáculo. Arduino va a ayudar a poder hacer el proyecto gracias a su facilidad de uso, la gran información disponible en Internet y los desarrollos para Arduino publicados como open source. Leyendo manuales y practicando con el material que ha proporcionado Arduino y la comunidad, comprobamos que en un intervalo de tiempo relativamente pequeño somos capaces de ponernos manos a la obra y atrevernos a ir escalando pequeños obstáculos y paredes hasta que encontremos nuestro límite o el del propio material.

Pero claro, si nos ponemos en la piel de alguien que quiere empezar con Arduino y la enorme cantidad de información que hay disponible en Internet, esta supone un obstáculo en sí mismo. Un buen sitio donde empezar es www.arduino.cc. Para mi es el mejor sitio por donde empezar, porque es donde yo empecé y con el tiempo me conozco casi todos los recovecos de la web que no son pocos. Sin embargo puede haber varios obstáculos, uno es que no está traducido al castellano y otro es que para alguien que empieza puede ser muy duro leer toda esa documentación y acabar perdiéndose entre los muchos enlaces que hay en la web y acabar desistiendo en su intento.

Por todo lo dicho hasta ahora y mi experiencia con alumnos, yo siempre empiezo por contar que es exactamente Arduino y desmontar todos los mitos e ideas inexactas sobre esta plataforma abierta de programación de un microcontrolador. Digamos que lo primero que debe conocer alguien que empieza con arduino es el “estado del arte” de Arduino o como diría wikipedia “el estado de esta temática actualmente y sus avances” y más aun cuando desde hace un año Arduino se ha dividido en dos y tenemos dos webs “oficiales” de Arduino www.arduino.cc y www.arduino.org que puede provocar más confusión entre los que quieren empezar. Pero tanto www.rufianenlared.com como yo mismo en http://www.aprendiendoarduino.com/2016/03/19/arduino-cc-y-arduino-org-los-dos-arduinos/ hemos puesto de nuestra parte para tratar de aclarar este punto en nuestros blogs.

Cuando trato de explicar qué es exactamente Arduino, algo en lo que pongo énfasis en mis oyentes y en mi web es que se den cuenta que no solo están aprendiendo a manejar una placa azul, sino que existen otras placas que no se llaman Arduino que también van a saber programar y que en general están aprendiendo a programar casi cualquier microcontrolador y que junto con los conocimiento sobre sensores, actuadores y comunicaciones que adquieren al usar Arduino, van a ser capaces de construir casi cualquier cosa.

Por lo tanto a la pregunta de cómo empezar a usar Arduino, la respuesta es que antes de ponerse a leer documentación a diestro y siniestro, hay que “saber exactamente qué es Arduino y donde se encuentra dentro de la tecnología que nos rodea” y si Arduino es la respuesta a su proyecto o a la razón por la que quiere aprender Arduino.

Como hay que predicar con el ejemplo, yo empiezo los cursos con estos temas:

Después de aclarar conceptos, la persona que está empezando con Arduino puede continuar con las tres partes en la que yo divido el estudio de Arduino: Hardware, Software y Comunidad Arduino. Por ejemplo, así es como yo divido el aprendizaje de Arduino para un curso de algo más de 30 horas: http://www.aprendiendoarduino.com/curso-arduino-2016/

Es muy común que gente con amplios conocimientos de electrónica quiera aprender Arduino y la programación les echa para atrás y al contrario, hay mucha gente del mundo del software que les echa para atrás la electrónica, electricidad, motores, etc… En ambos casos y con esos conocimientos previos será más fácil continuar con el aprendizaje de Arduino.

Arduino es una plataforma que se usa en el concepto de “learning by doing” o aprender practicando. Por ello, para aprender Arduino hay que practicar y experimentar, es algo que creo que es imprescindible cuando se empieza con Arduino.

Por último, algo que se debe tener en cuenta para quien quiere empezar con Arduino es que para aprender a programar Arduino, hay que leer mucho código. Al tratarse de una plataforma open source y disponer del código, tenemos muchos recursos para el aprendizaje. Además Arduino tiene una guía de estilo (https://www.arduino.cc/en/Reference/StyleGuide) que son unas pautas para escribir un código sencillo de leer, en detrimento de la eficiencia del código y una guía para escribir librerías (https://www.arduino.cc/en/Reference/APIStyleGuide) que hace que los principiantes puedan empezar con arduino fácilmente. Todo esto hace que la curva de aprendizaje de Arduino sea más corta que cualquier otra nueva tecnología, pero aún así es imprescindible: Aprender a Programar y Aprender Electrónica.

Si quieres aprender Arduino, también puedes empezar por mis cursos publicados en http://www.aprendiendoarduino.com/ o apuntarte a algunos de los cursos o talleres presenciales que imparto periódicamente y de los que te puedes enterar a través de mi twitter @jecrespom o en la lista de correo de #aprendiendoarduino http://list.aprendiendoarduino.com/mailman/listinfo/aprendiendoarduino.com.noticias

Y no olvidéis visitar y seguir el blog de http://rufianenlared.com/, de verdad es muy bueno.

Post de rufianenlared donde se publicó mi aportación: http://rufianenlared.com/como-empezar-arduino/