jueves, 22 de noviembre de 2012


CONFIGURACIÓN DE DOS MODULOS XBEE  PARA COMUNICACIÓN ENTRE XBEE(PC, COORDINADOR) Y XBEE (ARDUINO, ROUTER)

1 . Descargar X-CTU e instalarlo bien sea en Windows o en otros sistema operativo (revisar compatibilidad), se puede descargar de [1], página oficial.
2 .  Conectar la Xbee que va a hacer las veces de coordinador y configurarla con X-CTU de la siguiente manera:

a.    Verificar el puerto y la trasmisión de nuestro dispositivo, tal como se observa:



Al hacer dicha verificación (clic en Test/Query) debe aparecer un cuadro de dialogo como el siguiente indicando que se ha establecido la comunicación



Si por algún motivo llegase a aparecer un cuadro como el siguiente, verificar el puerto y probar con otro parámetro para la trasmisión




b.    Después de haber establecido comunicación con el dispositivo se deben leer y configurar los siguientes parámetros:

·         PAN ID: Este es  el número de identificación de nuestra red, todos los módulos que se comuniquen dentro de una red deben de tener el mismo número, establecemos como PAN ID por ejemplo el número 555.
·         DL (Destination Address High): Numero de 64 bit que corresponde a nuestro SL
·         DH (Destination Address Low): Numero de 64 bits que corresponde al SL del router
·         NI (Node Identifier): Este es nuestro identificador de nodo, el cual por facilidad se recomienda poner como una abreviación, para nuestro caso sería COR (coordinador) y ROU (router)

Como se puede ver, antes de configurar estos parámetros se debe saber cuál es nuestro SL (Serial Number Low) y SH (Serial Number High), así como también el SL y SH de nuestro router (Xbee que hará las veces de router), por lo que se recomienda hacer una tabla previamente para facilitar la configuración, tal como se muestra:


Coordinador
Router
PAN ID
555
555
SL
Predeterminado
Predeterminado
SH
Predeterminado
Predeterminado
DL
=SL(coordinador)
=SL(router)
DH
=SH(router)
=SH(coordinador)
NI
COR
ROU





Nótese que el DH y el DL del coordinador corresponden al valor del SH y el Sl de nuestro router y viceversa, estos valores pueden variar de modulo a modulo.

c.    Para tener en cuenta: si se va a configurar un módulo como un coordinador es preciso que cuando se lean los parámetros se verifiquen que están en la función ZIGBEE COORDINADOR AT y si se quiere configurar el router verificar que este en la función ZIGBEE ROUTER AT, si no se está en estas funciones cambiar lo opción desde la lista desplegable y luego modificar los parámetros, esto si se quiere una configuración AT, de quererse una configuración API se sigue el mismo procedimiento pero difiere en la función (ZIGBEE ROUTER API o ZIGBEE COORDINADOR API)


d.    Luego de haber configurado estos parámetros los escribimos o grabamos en la xbee, tanto para el coordinador como para el router, el procedimiento es igual solo que se debe tener en cuenta que antes de modificar cualquier cosa es mejor tener los valores en una tabla (como ya se muestra antes), para que la configuración sea más fácil, por lo que se sugiere que se haga primero la tabla y después de tener todos los valores completos se proceda a realizar la configuración.

e.    Para probar que la comunicación funciones se puede implementar el siguiente código de Arduino sacado de [2]:
/*
  Consiste en escribir por la pantalla del computador (consola serial)
   una letra predeterminada, la primera vez que se escriba esta
   el LED del pin 13 se enciende, si se vuelve a escribir por segunda vez
   el LED se apaga, además el modulo XBee (E) ubicado en el computador
   esta recibiendo en tiempo real el incremento de un contador ubicado en
   el modulo XBee (R). Esta comuniación serial se establece de manera
   inalámbrica por medio de dos modulos XBee

*/

//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
int led = 13;           //Pin donde se encuentra el LED, salida
char leer;              //Variable donde se almacena la letra
boolean prendido=false; //Estado LED la primera vez, apagado
int contador = 0;       //Variable del contador

//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
  Serial.begin(9600);    //Inicia comunicación serial
  pinMode(led, OUTPUT);  //Configurar el LED como una salida
}

//------------------------------------
//Funcion ciclicla
//------------------------------------
void loop() // Esta funcion se mantiene ejecutando
{           //  cuando este energizado el Arduino


 contador++;               //Incrementa el contador en una unidad 
 Serial.println(contador); //Imprime por consola el valor del contador
 delay(100);               //Retardo


  //Guardar en una variable el valor de la consola serial
  leer=Serial.read();

  // Si es la letra 'a' y ademas el LED esta apagado
  if ( (leer=='a') && (prendido==false) )
  {
      digitalWrite(led,HIGH);  // Enciende el LED
      prendido=true;           // Actualiza el estado del LED
  }
  // Si es la letra 'a' y ademas el LED esta encendido
  else if ( (leer=='a') && (prendido==true) )
  {
      digitalWrite(led,LOW);   // Apaga el LED
      prendido=false;          // Actualiza el estado del LED
  } 

}

//Fin programa

Se copia a la tarjeta arduino, se hace el montaje de la Xbee que hace las veces de router a la tarjeta, se pone la transmisión de la Xbee en serial y se conecta a una fuente externa de energía, luego se conecta la xbee que hace las veces de coordinador al pc y se abre el X-CTU, en la terminal y listo, cada vez que se pulse la letra “a” se enciende y se apaga el LED del pin 13, además de debe mostrar por la terminal el contador que está trasmitiendo la Xbee router, como se muestra a continuación:



Esta documentación está basada en los tutoriales para Arduino y Xbee de [2], allí se podrá encontrar más documentación y ejemplos acerca de estos módulos, como también de otras cosas que conciernen a Arduino


BIBLIOGRAFIA




Escrito por: Paola A Galeano
Contacto: http://www.facebook.com/ingenius10
               pagaleanoh@unal.edu.co


e