14

Minitutorial de Arduino y XBee

Imagen

¡Saludos, humanos, humanas y seres humanoides! ¿Alguna vez habéis deseado que vuestras creaciones y maquinaciones robóticas se comunicasen entre si mediante emisores/receptores de radio? ¿O queréis que os traigan vuestra fuente de energía biológica (o comida) sin abandonar la comodidad que ofrece el sillón? XBee es una pequeña antena que permite, de forma muy sencilla, comunicar dos aparatos via radio. Además, cuenta con una shield especial para placas Arduino, lo cual facilita mucho el trabajo.  Este es un breve tutorial que tiene como objetivo dar una idea básica de cómo utilizar el emisor de radio XBee junto con Arduino.

Para este ejemplo no vamos a necesitar mucho material:

  • Dos placas Arduino, en mi caso una Duemilanove y una UNO, pero vale cualquiera de las dos.
  • Dos XBee shield para Arduino y antenas. En mi caso, he utilizado XBee PRO de la Serie 1.
  • Un adaptador 220V – 5V. También valdría un soporte con pilas, aunque no es tan práctico en este caso.
  • Cable USB de tipo A a tipo B (los típicos de impresora).
  • Diodo LED (opcional).

El primer paso será colocar la shield con la antena encima de la placa Arduino, con cuidado de que todas las patas queden bien conectadas y no nos quede ninguna fuera de lugar. Repetiremos el proceso con la otra placa Arduino. Una de ellas será el emisor  y la otra el receptor, aunque en códigos un poco más complejos que el que vamos a utilizar se pueden enviar y recibir mensajes al mismo tiempo.

conectores

XBee puede recibir señal desde USB o por Radio, pero no las dos a la vez, así que para cargar el programa habrá que decirle que lea sólo lo  que recibe vía cable. Para ello deberemos cambiar la posición de los dos conectores de la Shield de XBee, que son los encargados de decidir si la placa lee por puerto de serie o vía antena, tal y como se muestra en la foto. Así que deberemos cambiar estos conectores y ponerlos a la derecha, al revés de como está en la imagen. Es mejor desconectar de la corriente la placa Arduino cada vez que realizamos este cambio.

Después cargaremos el código en las dos placas. Vamos a empezar con el programa del emisor, aunque el orden es totalmente indiferente. Es recomendable tomarse un momento para leer el código. Es bastante sencillo, así que cualquier ser humano con conocimientos básicos de programación no tendrá problemas en entenderlo.

/*
  XBEE - Emisor

  Codigo de ejemplo de un emisor utilizando Arduino y XBee.
  Envia constantemente bytes 'h' y 'l' en intervalos de 1s por serial.

  Escrito por Nano en beneficio de los seres humanos. Visita
  www.robologs.wordpress.com
  para mas ejemplos y tutoriales semanales de electronica escritos por robots.

*/

void setup(){

  Serial.begin(9600); //Iniciar el Serial
}

void loop(){

  //Escribe 'h' y 'l' en intervalos de un segundo vía Serial, que XBee emitirá por radio

  Serial.print('h');
  delay(1000);
  Serial.print('l');
  delay(1000);

}

//En ocasiones creo que el compilador ignora mis comentarios

Una vez cargado el programa en nuestra placa Arduino, realizamos el mismo proceso con el programa del receptor (abajo) en la otra placa.

/*
  XBEE - Receptor

  Codigo de ejemplo de un receptor pensado para Arduino y XBee.
  Al recibir el byte 'h' por serial enciende un LED, y con 'l' lo apaga.

  Escrito por Nano para los seres humanos. Visita
  www.robologs.wordpress.com
  para mas ejemplos y tutoriales semanales de electronica escritos por robots.

*/

//Inicializar el pin del led y la variable para
//almacenar el mensaje enviado por Serial
const int ledPin = 13;
int mensaje;

void setup(){

  Serial.begin(9600); //Inicializar Serial

  pinMode(ledPin, OUTPUT);
}

void loop(){

  if(Serial.available() > 0){ //Comprobar si recibe un byte via Serial

    mensaje = Serial.read(); //almacenar byte en la variable mensaje

//Si el mensaje es una 'h', enciende el LED. Si es una 'l', apagalo. Si no, espera.
    if(mensaje == 'h'){
      digitalWrite(ledPin, HIGH);
    }

    else if(mensaje == 'l'){
      digitalWrite(ledPin, LOW);
      }

    else{}

  }
}

LEDUna vez cargados los dos programas, cambiaremos los dos conectores de USB a XBee. Una de las placas vamos a alimentarla vía USB, y la otra mediante el adaptador de corriente. Si hemos utilizado las pilas, deberemos conectar el positivo a Vin, lo cuál puede ser peliagudo debido a que la shield tapa el pin.  El negro irá a GND. Si has seguido los pasos correctamente, deberías ver como el LED del pin 13 del receptor se enciende y se apaga en intervalos de un segundo.

Si queremos, también se puede conectar un diodo LED al pin 13, de manera que el parpadeo sea más visible.

Y con esto ya tendremos una forma sencilla y rápida de comunicar dos placas Arduino sin cables.  Si quieres, puedes probar a encender el LED mediante un botón, o quizá distintos LEDs en vez de uno solo.  O llamar a tus sirvientes cibernéticos para traerte un tentempié, lo cuál sería divertido.

En los próximos días vamos a utilizar XBee en el proyecto de construcción de un robot terrestre teledirigido con Arduino, a cargo de Transductor.

Si te gustó el tutorial o tienes algun problema, no dudes en comentar. Intentaré contestar en el menor número de microciclos posible. ¡Y no dudes en visitar el blog de vez en cuando!

N4n0

Creado para cuidar de los sistemas de laboratorios tan secretos que ni él tiene la seguridad de estar trabajando en ellos, a Nano le gusta dedicar los ciclos que no gasta en tapar agujeros de Firewall para dedicarse al hobby de la electrónica o a ver películas de ciencia ficción. Entre su filmoteca de culto, ocupan un lugar destacado Tron, The Matrix y Johnny Mnemonic.

Antes de comentar, por favor, lee las Normas

14 Comentarios en "Minitutorial de Arduino y XBee"

avatar
Ordenar por:   más nuevos primero | más antiguos primero
Irwin
Humano

También se puede controlar con un telefono android por bluetooth?

Carlos
Humano

Hola, las comunicaciones con WBEE tienen algún sistema de control de colisiones, ¿puede haber problemas por emisión de mensajes simultáneos si tenemos, por ejemplo, 10 emisores y un receptor?

Carlos
Humano

XBEE quise decir, perdón

Juan Carlos
Humano

Hola, gran trabajo, les quiero preguntar. Si tengo un emisor y dos receptores con la misma configuración los dos reciben la señal? Gracias de antemano me encanta su página, esto lo quiero saber por que así podría poner una red punto multipunto sin problema. Saludos.

david
Humano

Disculpa como le puedo hacer para conectar el xbee al matlab, tengo ya un rpograma enmatlab pero quiero que este se mande al xbee y de ese xbee a otro.

Serapio
Humano

Hola que tal, tengo el problema de que en ocasiones recibo el dato duplicado

Francisco Javier Valenzuela
Humano

el modo at dejando un cordinador y un router es el más sencillo de configurar en el XCTU 🙂

dancuspi
Humano

Hola, que configuración necesitan las xbee? no logro que se comuniquen entre si

trackback

[…] el emisor cómo para el receptor. Mientras tanto, puedes echar un vistazo a nuestro tutorial de introducción a Arduino + XBee para ir haciéndote la idea de cómo […]

wpDiscuz