viernes, 8 de noviembre de 2013

ARDUINO 005: MODULO XBEE   

    Para este ejercicio vamos a utilizar una plataforma de Arduino UNO, un modulo XBEE con un protocolo llamado ZigBee (conjunto de  tecnología de alto nivel de transmisión inalámbrica, de bajo consumo. Su objetivo es la comunicación de dos o varios objetivos de baja tasa de envío de datos).
              Estos módulos tienen un alto potencial de comunicación entre ellos, con lo cual, en sitios cerrados pueden llegar a transmitir hasta 30 metros entre dos objetivos, en sitios exteriores hasta 100 metros y con los módulos Xbee PRO podría llegar hasta 1.5 kilómetros de transmisión.
              Los módulos ZigBee, también llamados mochilas, se deberán de conectar a la placa Xbee Shield y por lo tanto esta conectarse a la de Arduino. El modulo Xbee Shield al conectar en la placa de Arduino, deja algunos puertos fuera de la utilidad, con lo cual, estos puertos pueden ser utilizados por sensores u otro tipo de componente que desee.
              En esta imagen podemos observar como va situado la placa Xbee, encima de la placa Xbee Shield y por lo tanto como van los pines situados y nombrados en cada pin. Otro de los factores fundamentales sera la transmisión de nuestro PC a la placa Arduino. Lo haremos mediante la conexión de USB que tenemos en los dos objetivos. Al transmitir los datos de un objetivo a otro, se necesita que los jumpers, en la imagen mencionados, estuviesen en modo USB, si no estuviesen en este modo no se transmitiría ningún dato propuesto. Al finalizar la transmisión, debemos cambiar los jumpers a modo Xbee para que la transmisión se pueda comenzar y las placas pudiesen comunicarse.



     El modulo Xbee funciona a 3.3v y se comunica a Arduino mediante un puerto serie. En la placa de Arduino podemos comunicar los objetivos mediante antenas. Existen diferentes modelos de antenas para Xbee, la integrada, la wire y externa.
             Todas tienen la misma configuración y todas ejercen en el mismo ámbito de trabajo. En estos modelos se pueden hacer varias funciones, se pueden hacer redes de comunicación punto a punto,que consiste en la conexión de dos objetivos entre si, la comunicación de punto a multipunto, que consiste en la conexión de un punto (emisor) y la recepción de varios objetos (receptores).
             Hay dos tipos de modulos, S1 y S2, este ultimo tiene la caracteristica de que permiten hacer redes mesh, permiten la union de los objetivos aunque estos no esten en el rango de cobertura, sin embargo los S1 no pueden hacer ese funcionamiento.
             La comunicación entre los objetivos sera hace de una banda libre de 2.4Ghz y la velocidad de transmisión entre los objetivos es de 256Kbps. Hay distintos tipos de redes; la red coordinador, consiste en formar una unica red. La red de routers, es un modo que crea y mantiene la información sobre la red, la mejor ruta para poder transmitir un paquete de información. Y la ultima la red end devices, estos dispositivos no pueden enrutar paquetes.
             Los distintos modos de operación se pueden diferenciar en cuatro modos. Modo transparente, es el enlance entre dos modulos. Modo de bajo consumo, sleep mode para apagar por pin. Modo de comandos, comandos AT  son para la configuración de parámetros o leen el módulo local. En la serie2 es posible enviar comandos AT remotamente desde un módulo a otro.Para configurar un XBee, tenemos que usar sólo 2 pines, TX, RX y GND del módulo. Se puede configurar el módulo usando el programa XCTU (en nuestro caso no lo hemos necesitado), o a través de un programa como HyperTerminal de Windows o similar.Para el módulo XBee /Xbee-Pro entrar en el modo de comando, escriba tres caracteres “+ + +” (no presione el <ENTER>) en el Terminal X-CTU o HyperTerminal. Si el módulo a recibido correctamente el comando, se confirma enviando un mensaje Aceptar. El módulo es capaz de recibir órdenes de leer o escribir.


  • ATMY: muestra el nombre asignado al xbee.
  • ATID: muestra el PAN id.
  • ATDL: muestra el nombre del radio con el cual nos comunicaremos.
  • ATBD: muestra la tasa de transferencia en baudios.
  • ATWR: graba nuestra nueva configuración al xbee
  • ATCNcierra el modo comando.


            El comando API especifica cómo se envían los comandos, respuestas de mando y los mensajes de estado del módulo y recibidos desde el módulo.
            Estructura general de transmisión de datos por medio del modo API:


           Donde el Byte 4, nos indica que tipo de mensaje se envía o se recibe por medio de un valor que determina el frame, según la siguiente tabla: 


              Este programa es el que utilizaremos para que un arduino de los dos que vamos a utilizar, reciba los datos que le mandemos del otro objeto y haga lo siguiente función. Encender y apagar todos los leds que hemos seleccionado, a la vez cada segundo. En el cual le seleccionamos esa acción en la que veremos el otro ejercicio mas adelante. Cuando reciba una "H" desde el otro Arduino los leds se encenderan y cuando reciba una "L" los leds se apagaran.

int led10 = 5;
int led9 = 4;
int led6 = 3;
int led3 = 2;

int incomingByte;     

void setup() {
  Serial.begin(9600);
  pinMode(led10, OUTPUT);
  pinMode(led9, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led3, OUTPUT);
}
void loop() {
  if (Serial.available() > 0) { 
    incomingByte = Serial.read();
    if (incomingByte == 'H') {
      digitalWrite(led3, HIGH);
    } 
    if (incomingByte == 'L') {
      digitalWrite(led3, LOW);
    }
        if (incomingByte == 'H') {
      digitalWrite(led6, HIGH);
    } 
    if (incomingByte == 'L') {
      digitalWrite(led6, LOW);
  }
    if (incomingByte == 'H') {
      digitalWrite(led9, HIGH);
    } 
    if (incomingByte == 'L') {
      digitalWrite(led9, LOW);
  }
    if (incomingByte == 'H') {
      digitalWrite(led10, HIGH);
    } 
    if (incomingByte == 'L') {
      digitalWrite(led10, LOW);
  }
}
}

               Este es el programa que antes hemos mencionado, en el cual, manda dos señales, una "H"(HIGH) y otra de "L"(LOW). Esto hace que los leds del Arduino que recibe los datos mediante el Xbee se encienden y se apaguen cada segundo.



                 En esta imagen podemos observar como esta montado y su funcionamiento. Como están conectados los 4 leds con sus respectivas resistencias de 220 Ohm. Conectados a 4 pines del Arduino los cuales utilizamos en nuestro programa. Los ánodos de los leds los conectamos a cada pata de las resistencias que tenemos y otra pata de la resistencia a cada pin que vamos a utilizar. El cátodo de los leds los conectamos a un punto en común el cual ira al pin del GND (ground) de la placa de Arduino.


                 Lo interesante seria ver con nuestros propios ojos el montaje que tenemos en este ejercicio y también las consecuencias de ello.
                 En este primer vídeo podemos observar que creamos los ejercicios en el Arduino y sus consecuencias, en este vídeo la explicación es muy básica.      



            En este programa se cordina con el anterior pero un ejercicio mas complejo, en el cual hemos utilizado la anterior forma con 4 leds.
 


           Esperemos que os haya sido de utilidad.



           Autores: Alexander Criado
                         Ander Iñigo
                         Maite Villarrolain


No hay comentarios:

Publicar un comentario