Sunteți pe pagina 1din 11

Configuración de radios XBEE s2

Una de las radios que se configurará como enrutador. La radio del enrutador se programa con el
firmware AT y la dirección de destino DH, DL se proporciona como la dirección de origen (número
de serie SH, SL) del coordinador.

La ID de PAN y la velocidad en baudios deberían ser las mismas para ambas radios.

Pin 20: el DIO 0 del enrutador se declara como ENTRADA DIGITAL.

Conecte una radio a la conexión USB y conéctela a la PC. Abra el nuevo programa XCTU y haga clic
en el icono Buscar en la parte superior. Se identifica la radio y se muestra la dirección de 64 bits
junto con el firmware cargado.

Haga clic en el icono y actualice el firmware de la Radio como XB24-ZB / ZigBee


Router AT.

La dirección de destino es la dirección de origen de otro XBee. Ingrese la dirección en DH, DL como
se muestra.
Desplácese hacia abajo y en la configuración de E / S, cambie la configuración D0 AD0 / DIO0 a 3,
que representa la entrada digital.

Haga clic en el botón Escribir para registrar los cambios realizados.

Desplácese hacia abajo para establecer la frecuencia de muestreo IR. Establezca esto en el valor
hexadecimal 1388 que equivale a 5000 en decimal. Es decir, se envía una muestra digital cada
5000 ms o 5 segundos.
Enchufe la otra radio en el explorador USB. Haga clic en el icono de actualización de firmware y
cargue el XB24-ZB / ZigBee Coordinator API firmware.

Asegúrese de que el PANID (puede alimentar su propio valor) y la velocidad en baudios son iguales
para ambas radios. La dirección de destino es la dirección de origen del enrutador como se
muestra a continuación.
Desplácese hacia abajo para configurar el modo API Habilitar (1).

Haga clic en Escribir para registrar los cambios.

La configuración de ambas radios se ha completado ahora.


Conectando Xbee Coordinadora a Arduino

Retire la Xbee Coordinator (puede hacer una marca de cinta como C para identificar) de la placa
explorer USB y conéctela a la Shield V03. Esto debe conectarse a la placa Arduino UNO según las
conexiones.

La Xbee del enrutador está conectada a la conexión explorer USB. El PIN 20 (ADIO 0) está
conectado al pulsador.
Ahora abra el IDE de Arduino y seleccione el puerto donde está conectado Arduino. Cargue el
siguiente Sketch.

Recuerde desconectar la Xbee coordinador de la shield V03 del Arduino mientras carga el Sketch.

//Pueba comunicacion entre coordinador y router

void setup()

Serial.begin (9600);

void loop ()

if (Serial.available()>=21)

for (int i = 0; i <22; i ++) {

Serial.print (Serial.read (), HEX);

Serial.print (",");}

Serial.println ();

Ahora encienda la Xbee router haciendo la conexión Explorer USB XBee. Recuerde encender
primero el coordinador y luego el enrutador.

Tan pronto como el enrutador se une al coordinador, comienza a enviar muestras digitales
recolectadas del pin 20 cada 5 segundos.

Abra el monitor de serie de Arduino para ver los marcos de API recibidos.
Analicemos los datos de la trama API recibidos del enrutador donde está conectado el pulsador:

7E 0 12 92 0 13 A2 0 40 A9 C5 92 79 9 1 1 0 1 0 0 0 F3

La trama API consta de un total de 22 bytes (contados de 0 a 21) que comienzan con un
Delimitador 7E.

Los siguientes 2 bytes representan la longitud de la trama que comienza desde el tipo de trama y
termina antes de la suma de control.

En nuestra muestra aquí es 0 12. El segundo byte 0x12 en HEX es igual a 18 en decimal. Puede ver
un total de 18 bytes después de este valor 0x12 y antes de la suma de comprobación F3.

El siguiente byte 92 es el tipo de trama API, el valor hexadecimal 92 representa "Datos de E / S RX


recibidos"

Los otros tipos de marcos son los que se ven a continuación.


Byte no. 4 a 11 representan la dirección de 64 bits desde donde se recibe la muestra de datos.

Byte 12 (MSB) y 13 (LSB) es la dirección de 16 bits del remitente.

El byte 14 representa las opciones de recepción. 0x01 es para paquetes reconocidos y 0x02
significa que el paquete es de difusión.

El byte 15 representa el número de conjuntos de muestras incluidos en la carga útil que siempre
se establece en 1.

Los bytes 16 y 17 representan la máscara del canal digital. Indica qué líneas de E / S digitales en la
radio remota tienen habilitado el muestreo. En nuestro caso, hemos habilitado D0 como entrada
digital.

El primer byte de la máscara de canal se lee según la siguiente tabla

n / a n / a n / a D12 D11 D10 n / a n / a

n / a significa que no está disponible o no está definido.

El segundo byte se lee como:

D7 D6 D5 D4 D3 D2 D1 D0
En nuestra muestra, los datos leen 0 1 que en binario es 0000 0000 0000 0001

es decir, el bit D0 solo está habilitado.

El byte 18 es el campo de máscara de bits que indica qué líneas de E / S analógicas en la radio
remota tienen muestreo analógico. En nuestra muestra es 0, es decir, no hay muestras analógicas.

Los bytes 19 y 20 entregan las muestras de datos reales. Los datos se asignan igual que en el
campo de máscara de canal digital. xxx D12 D11 D10 xx D7 D6 D5 D4 D3 D2 D1 D0

Si recibe 0x0 en el primer byte de muestra digital y 0x1 en el segundo, eso indica que se recibe alto
voltaje (nivel 1) solo en el pin D0.

El último es la suma de comprobación, que es la suma de bytes de 8 bits del desplazamiento 3 a


este byte.

Puedes ver el byte no. 20, que es el último, pero uno en los datos del Marco. Esto cambia a 1
cuando el pulsador está en 1 y cambia a 0 cuando el pulsador está en 0.

Ahora cargaremos un pequeño código modificado en Arduino.

///////////////////////////////////////////////////////////////////////

int led=10;

int readValue=0;

void setup()

pinMode(led,OUTPUT);

Serial.begin(9600);

void loop()

if (Serial.available() >=21) {

if (Serial.read() == 0x7E){

//omite los bytes del frame API que no queremos

for (int i =0; i<19; i++) {

byte skip = Serial.read();


}

readValue = Serial.read();

Serial.print("el led esta : ");

if(readValue == 0 ){

Serial.println("apagado");

digitalWrite(led,LOW);

}else if (readValue == 1) {

Serial.println("encendido");

digitalWrite(led,HIGH);

//////////////////////////////////////////////////////////////////////////////////

Si monitorea el puerto serie de la Arduino, para obtener los datos del pulsador si está oprimido
para encender el led o no está oprimido para mantener apagado el led.

S-ar putea să vă placă și