Configurando Radios XBee

domingo, 18 de septiembre de 2011

Los Radios XBee pueden ser configurados de varias maneras mediante varias formas, pueden ser configurados con un Arduino, con un conversor USB-RS232, XBee Explorer, etc.Y pueden ser configurados para trabajar de muchas  formas con o sin ayuda de un controlador.


1.- Accesar al sistema de los XBee: Para entrar al sistema de un XBee se requiere de una comunicación Serial (USART) la cual el arduino usa para programara su microcontrolador es por eso que se puede usar un XBee shield para su configuración, si no tienes un XBee Shield solo alimenta tu XBee (Recuerda que la alimentación es de 3v3 ya que con un voltaje más alto lo quemaras) y conecta DOUT y DIN al RX y TX de tu arduino o puerto COM.( Recuerda que también las señales de comunicación deben de estar reguladas a 3v3, puedes utilizar un divisor de voltaje o CI 74HC4050, si estas usando un XBee Regulated este ya regula todos los voltajes a 3v3 por lo que lo único que cuidaras es no enviarle voltajes mayores a 6v ).

Los XBees tienen un Baud Rate de fabrica de 9600 por lo que la comunicación USART deberá ser de 9600, 1 bit de Stop, Sin paridad; Abre la terminal que más te guste, yo utilizo la misma que viene con el arduino ya que es sencilla y no nos mete en complicaciones.

El primer paso será teclear tres signos de más  +++  con No line ending que se encuentra a un lado del Baud Rate y dar click en Send, si esto se hizo correctamente el XBee responderá con un OK.
2.- Comenzando a configurar: En este paso todo depende de como queramos que trabaje nuestro XBee, por lo que describiré con un pequeño ejemplo algunas de las posibles configuraciones de los XBee, apartar de ahora todo lo que le mandemos al XBee deberemos cambiar el No line ending por Carriage return.

Configuraciones Básicas: Todos los comandos deberán tener como prefijo AT, los comandos pueden ser enviados en una solo cadena o comando por cadena, si se envía por cadena solo el primer comando deberá tener el prefijo y se separaran por una , (COMA).

  • ID   -   Network ID del XBee   -   ( 0 - 0xFFFF )
  • CH   -   Canal de Comunicación   -   ( 0x0B - 0x1A )   
  • MY  -   Dirección del XBee   -   ( 0 - 0xFFFF )
  • DH y DL   -   Dirección de destino   -  ( 0 - 0xFFFF )
  • BD   -   La velocidad de Transmisión   -  ( 0 (1200 bps) , 1 (2400 bps), 2 (4800 bps), 3 (9600 bps), 4 (19200 bps), 5 (38400 bps), 6 (57600 bps), 7 (115200 bps) )
  • RE   -   Resetea a los valores de fabrica  -   ( Sin parámetros )
  • WR  -  Guardar los cambios   -   ( Sin parámetros )
  • CN   -  Cerrar sesión   -   ( Sin parámetros )    
Entonces para configurar dos módulos será de la siguiente forma:

ATID1234,DH0,DL1,MY0,BD3,WR,CN
ATID1234,DH0,DL0,MY1,BD3,WR,CN

De esta forma se han configurado los XBee para que se comuniquen entre ellos a 9600 bps, el XBee responderá con un OK por cada comando.


3.- Configuraciones especiales: Los XBee cuentan con I/O y ADC que facilitan todo el trabajo ya que si no es muy especifica o especial la información que queremos transmitir lo podremos hacer sin un µcontrolador directamente de sus puertos tras haberlos configurado. 

El modulo XBee cuenta con 9 I/O, 7 ADC. del DIO0 al DIO6 pueden ser configurados como digitales o conversares analógicos digital. debemos tomar en cuenta que solo contamos con dos puertos PWM así que tendremos esos dos puertos como salidas ADC en el otro Modulo XBee, DIO7 solo es digital y DI8 solo podrá ser entrada digital.

Para seleccionar el modo de DIO existen 4 opciones: 0 Ninguno, 1 Función Especial, 2 ADC, 3 Salida Digital LOW, 4 Salida Digital HIGH y se configuran de la siguiente manera:



ATD33             // Configura el DIO3 como entrada digital

ATWR            // Guardar cambios

de forma que en el otro modulo deberemos hacer del DIO3 salida digital.

ATD34             // Configura el DIO3 como salida digital HIGH
ATWR            // Guardar cambios

para el ADC sera:

ATD42            // Configura el DIO4 como ADC
ATIR14           // Sampleo de 20 mili-segundos
ATIT5             // Envia tras 5 sampleos
ATWR            // Guardar cambios

por lo que el otro modulo tendrá la salida de este ADC, los pines capaces de mostrar el ADC que fue transmitido por el otro modulo son el RSSI y el DIO11.

ATP02           // Activa el PWM en PWM0
ATIU1           // Habilita Salidas I/O UART
ATIA1           // Dirección de origen de datos ( MY del otro modulo)
ATWR          // Guardar cambios

4.- Enviar datos de XBee a XBee por medio USART: para esto necesitas dos µcontroladores ya que los datos serán seriales tanto en la entrada como en la salida a la velocidad como hayamos configurado con BD, en este caso 3(9600)bps, por lo que si usamos un Arduino para la transmisión y recepción de datos usaremos la instrucción Serial.  Ejemplo:

 Arduino XBee 1:

void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print('E');
delay(1000);
Serial.print('A');
delay(1000);
}

Arduino XBee 2:

void setup(){
Serial.begin(9600);
pinMode(3,OUTPUT);
}
void loop(){
ifSerial.available() > 0 ){
  if( Serial.read() == 'E' )
     digitalWrite(3,HIGH);
  else
     digitalWrite(3,LOW);
}
}
Estos dos programas harán prender un LED conectado al pin D3 del Arduino por medio de los Radios. Para entender más estos comandos recomiendo leer el manual del XBee, Espero sus comentarios. :D

4 Comentarios, Dejar un Comentario:

  • Hola.

    Tengo un problema. Conecte mi Xbee como tu, pero despues de enviar +++
    el xbee no me responde. Ya cheque el puerto y las configuraciones basicas, pero nada.

    Gracias.

  • Josué Alejandro Savage

    Hola, estas utilizando un XBee Shield o un adaptador como los que vende Sparkfun? , que terminal estas usando?, el Rx de tu arduino va al Tx del Xbee y el Tx del Arduino al Rx del Xbee. estas usando alguna otra interfaz? (FTDI)? Saludos

  • Hola. Primero que nada, gracias por responder.

    Ya solucioné el problema, resulta que solo tenía que actualizar el firmware, lo cual creo que no se puede hacer mediante el shield. Yo uso la interfaz de sparkfun y el X-CTU.

    Saludos.

  • hola que tal disculpa tengo un par de preguntas...

    tengo un arduino UNO, dos modulos Xbee S2, una tarjeta reguladora de voltaje para xbee, una tarjeta xbee shield para uno de los modulos s2 y un xbee explorer

    yo programo mi arduino Uno de modo que cuando reciba una letra encienda el led conectado al pin 13, ademas de conectar el modulo s2 con la tarjeta reguladora y sus respectivas rx y tx que van al arduino

    por la parte que manda los datos esta montado el otro modulo s2 a la xbee explorer USB y le mando desde c# mediante el puerto serial datos para que encienda pero no enciende!!!!

    Ojala me puedas asesorar de como tengo que configurar o conectar mis modulos gracias

  • Publicar un comentario en la entrada