Arduino XBee Shield

El XBee shield para Arduino permite comunicar tu Arduino de forma inalámbrica usando ZigBee. Fue desarrollado in colaboración con Libelium. Esta documentación describe el uso del shield con los módulos XBee 802.15.4. Para los módulos XBee ZNet 2.5 ("Series 2") revisa esta guia de configuración.

Un ejemplo sencillo

Deberías tener dos placas Arduino con XBee shield comunicándose una con la otra sin configurar nada, usando sólo los comandos estandard de Arduino (descritos en reference).

Para cargar un programa a la placa Arduino con XBee shield, necesitarás poner los dos jumpers del shield en la posición USB (coloca los dos jumpers en la parte cercana al borde de la placa) o quítalos completamente (asegurate de no perderlos!). Luego, ya puedes cargar un programa con normalidad desde el Arduino IDE. En este caso, carga el programa Communication | Physical Pixel a una de las placas. Este programa manda a la placa encender el LED conectado al pin 13 cuando recibe 'H' por el puerto serie y lo apaga cuando recibe 'L'. You can probarlo conectando la placa con el monitor de puerto serie de Arduino (asegurate de configurarlo a 9600 baudios), escribiendo H y INTRO (o pinchando en "send") el LED debería encenderse. Envía L y el LED debería apagarse. Si no ocurre nada, es posible que tengas un Arduino que no tiene el LED conectado al pin 13 montado en la placa (mira el índice de placas para asegurarte), en este caso tendrás que conectar tu propio led.

Una vez que has cargado el programa Physical Pixel y comprobado que funciona, desconecta el primer Arduino del ordenador. Conecta los jumpers en la posicion XBee (en la posición más alejada del borde de la placa). Ahora, necesitas cargar otro programa a la otra placa. Asegúrate de que sus jumpers estan en la posición USB. Luego carga el siguiente programa a la placa:

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.print('H');
  delay(1000);
  Serial.print('L');
  delay(1000);
}

Cuando se haya cargado el programa, puedes comprobar que funciona con el monitor de puerto serie de Arduino. Deberías ver H's y L's llegando cada segundo. Apaga el monitor de puerto serie y desconecta la placa. Cambia los jumpers a la posición XBee. Ahora conecta las dos placas al ordenador, después de unos segundos, deberías ver el LED de la primera placa encenderse y apagarse cada segundo (el LED de la placa Arduino, no el LED de la placa XBee shield, que proporciona información sobre els estado del módulo XBee). Si funciona así enhorabuena, tus placas Arduino se están comunicando inalámbricamente. Puede que esto no parezca muy excitante si las placas están conectadas al mismo ordenador, pero si las conectas en diferentes ordenadores (o las alimentas con fuentes de alimentación externas - asegurandote de cambiar el jumper de alimentación en la placa Arduino), también deberían ser capaces de comunicarse.

Unas notas

Puedes usar cualquiera de los comandos serie estándar de Arduino con el XBee shield. Con los jumpers del shield en la posición XBee, los comandos print y println enviarán los datos al XBee shield y al puerto USB (o lo que es lo mismo a otros XBee shields y al ordenador al mismo tiempo). Con esta configuración, sin embargo, la placa sólo recibirá datos del XBee shield, no de la conexión USB (necesitas cambiar la posición de los jumpers para permitir que la placa reciba datos del ordenador).

El modulo XBee del shield está configurado para trabajar a 9600 baudios por defecto, a menos que le cambies la configuración, tienes que asegurarte de llamar a la función Serial.begin(); con el parámetro 9600 (Serial.begin(9600);) en tu programa.

Para permitir que tu ordenador se comunique directamente con el XBee shield, conéctalo a una placa Arduino sin microcontrolador y coloca los jumpers en la posición USB. Entonces puedes enviar y recibir datos desde el módulo XBee utilizando cualquier terminal de puerto serie. Esto te permite, por ejemplo, ver los datos que el módulo está recibiendo de otros XBee shields (por ejemplo monitorizando datos de sensores inalámbricamente desde un cierto número de localizaciones).

Configurando el módulo XBee

Puedes configurar el módulo XBee mediante el código que ejecuta el Arduino o dese un software del ordenador. Para configurarlo desde el Arduino, necesitas colocar los jumpers en la posición XBee. Para configurarlo desde el ordenador, necesitas colocar los jumpers en la posición USB y haber quitado el microcontrolador del Arduino.

Para entran en el modo de configuración, necesitas enviar tres signos '+': +++ y no enviar ningún otro carácter al módulo durante un segundo antes y un segundo después. Esto incluye carácteres especiales como retorno de carro o nueva línea. Por lo tanto, si estas intentando configurar el modulo desde el ordenador, asegúrate de que tu terminal está configurado para enviar los carácteres tal como los escribes, sin esperar a que pulses intro. Sino, enviará los tres signos '+' seguidos de nueva línea (de modo que no esperará un segundo después de enviar +++). Si consigues entrar en el modo de configuración, el módulo enviará de vuelta 'OK', seguido de retorno de carro.

Envía comando Espera respuesta
+++ OK<CR>

Una vez en el modo de configuración, puedes enviar comandos AT al módulo. Las cadenas de comandos AT tienen la forma ATXX (donde XX es el nombre del parámetro). Para leer el valor actual de un parámetro, envía la cadena de comando AT seguido de retorno de carro (<CR>). Para escribir un nuevo valor del parámetro, envía la cadena de comando AT, seguido del nuevo valor (sin espacios o nueva línea por medio), seguido de retorno de carro. Por ejemplo, para leer el identificador (ID) de red del módulo (que determina con qué otros módulos XBee se comunicará), usa el comando ATID

Envía comando Espera respuesta
ATID<enter> 3332<CR>

Para cambiar el valor del ID de red del módulo:

Envía comando Espera respuesta
ATID3331<enter> OK<CR>

Ahora, comprueba que el parámetro se ha configurado:

Envía comando Espera respuesta
ATID<enter> 3331<CR>

A no ser que le digas al módulo que escriba los cambios a la memoria no volátil, esos cambios sólo tendrán efecto hasta que el módulo pierda la alimentación. Para guardar los cambios de forma permamente (hasta que los modifiques otra vez) usa el comando ATWR:

Envía comando Espera respuesta
ATWR<enter> OK<CR>

Para resetear el módulo a los valores de fábrica, usa el comando ATRE:

Envía comando Espera respuesta
ATRE<enter> OK<CR>

Ten en cuenta que al igual que los demás comandos, el reset no será permanente a no ser que después envíes el comando ATWR

Referencias

Para más información, mira: la hardware page del XBee shield, la wiki de Libelium SquidBee, y la página de Maxstream XBee.

Los textos de la guía "Como empezar con Arduino" están licenciados bajo Creative Commons Attribution-ShareAlike 3.0 License. El código fuente de los ejemplos en la guía están liberados como dominio público.

Share