domingo, 9 de enero de 2011

Arduino Xbee Libelium shield

La implementación de comunicación radio con Arduino más común, y seguramente la más sencilla de implementar, se hace con módulos Xbee de la empresa Digi International.
Estos módulos permiten establecer muy fácilmente una comunicación serie wireless. Es muy sencillo de configurar a través de comandos AP, y también hay una aplicación gratuita de configuración en la web, X-CTU.

El "shield oficial" de Arduino lo diseñó una empresa aragonesa llamada Libelium, dedicada, entre otras cosas, al diseño y comercialización de módulos de comunicación wireless con diferentes tecnologías.
Algunos puntos sobre el shield Xbee de Libelium:

Se comunica con el micro de Arduino a través de las mismas lineas de la UART del micro. A través de unos jumpers se puede configurar el shield para:
  • comunicar el módulo xbee con el micro de Arduino, en la serigrafía la posición está marcada como XBEE
  • comunicar el módulo xbee con el USB hacia el PC. Para ello hay que extraer físicamente el micro del Arduino. La posición de los jumpers está marcada en serigrafría como USB.
Quizás este sea el gran "inconveniente" de este shield, la imposibilidad de establecer una comunicación USB-micro-xbee a través de un terminal. Para poder grabar Arduino con el shield puesto, es necesario extraer los jumpers, de forma que el módulo xbee no interrumpa la comunicación serie del PC al micro de Arduino.
En un siguiente post explicaré una de las posibles opciones para solventar esto.

El módulo Xbee se alimenta a 3.3V, las señales de comunicación vienen a 5V, para adaptar la señal serie de entrada (DIN) se pone un divisor de tensión.

En los zócalos de conexión de los módulos Xbee, se pueden montar los módulo xbee (serie 1) y xbee-pro (serie 2). Las diferencias entre los dos módulos podeís consultarlas aquí.

La tensión de alimentación la coge de los 5V que vienen de Arduino. Es un regulador lineal MC33269D-3.3. El consumo del módulo xbee (serie 1) es bajo, alrededor de 50mA. Tenemos un consumo mucho más alto con el módulo xbee-pro, hasta 215 mA.

El conector ICSP, que es conector que se utiliza en Arduino para hacer la programación de su bootloader, está conectado al shield, pero no sería necesario. Se utiliza para llevar la alimentación (5V) y el reset. Estas señales se podrían haber llevado a través de los conectores laterales. Sospecho que se montó ese conector (incrementado por tanto el coste del producto) por una cuestión de fijación mecánica, le da rigidez a la conexión del Arduino y shield.

El pulsador de reset sólo resetea el micro de Arduino, no es el reset del modulo Xbee.

Los componentes tiene doble footprint, SMD y through-hole. Esto puede crear cierta confusión a primera vista del esquemático, donde no están indicados los componentes que no se montan.


La señal del módulo xbee /CTS - DIO7 se lleva a través de un transistor a la señal de reset del micro de Arduino. Supongo que se hizo así, para permitir poder resetear remotamente un Arduino, hacer correr por tanto su bootloader  y pasarle a través del módulo Xbee una nueva aplicación. Es decir, programar por wireless el Arduino. Curiosamente, no he visto ningún ejemplo, en ningún foro, que implemente esta funcionalidad. Sí que he visto ejemplos con otros shields de xbee, pero ninguno con el shield de Libelium. Si alguien ha implementado o conoce algun ejemplo para realizar la programación remota de un Arduino con el shield de Libelium, por favor, que me lo haga llegar.


Hasta pronto.

No hay comentarios:

Publicar un comentario