Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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.
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).
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.
void setup()
Serial.begin (9600);
void loop ()
if (Serial.available()>=21)
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 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.
D7 D6 D5 D4 D3 D2 D1 D0
En nuestra muestra, los datos leen 0 1 que en binario es 0000 0000 0000 0001
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.
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.
///////////////////////////////////////////////////////////////////////
int led=10;
int readValue=0;
void setup()
pinMode(led,OUTPUT);
Serial.begin(9600);
void loop()
if (Serial.available() >=21) {
if (Serial.read() == 0x7E){
readValue = Serial.read();
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.