Sie sind auf Seite 1von 46

Modo API en detalle

El modo API proporciona una interfaz estructurada donde los datos se comunican
a través de la interfaz en serie en paquetes organizados y en un orden
determinado. Esto le permite establecer comunicaciones complejas entre
dispositivos sin tener que definir su propio protocolo.
Por defecto, los dispositivos XBee están configurados para funcionar en modo
transparente: todos los datos recibidos a través de la entrada en serie se ponen en
cola para la transmisión de radio y los datos recibidos de forma inalámbrica se
envían a la salida serial exactamente como se reciben, sin información adicional.
Debido a este comportamiento, los dispositivos que funcionan en modo
transparente tienen algunas limitaciones:

1. Para leer o escribir la configuración de un dispositivo en modo


Transparente, primero debe hacer la transición del dispositivo al modo
Comando .

2. Si un dispositivo necesita transmitir mensajes a diferentes dispositivos,


debe actualizar su configuración para establecer un nuevo destino. El
dispositivo debe ingresar al modo Comando para configurar el destino.

3. Un dispositivo que funciona en modo transparente no puede identificar la


fuente de un mensaje inalámbrico que recibe. Si necesita distinguir entre los
datos que provienen de diferentes dispositivos, los dispositivos de envío
deben incluir información adicional conocida por todos los dispositivos para
que pueda extraerse más tarde. Para hacer esto, debe definir un protocolo
sólido que incluya toda la información que crea que necesita en sus
transmisiones.
Para minimizar las limitaciones del modo transparente, los dispositivos
proporcionan un modo alternativo llamado Application Programming Interface
(API). El modo API proporciona una interfaz estructurada donde los datos se
comunican a través de la interfaz en serie en paquetes organizados y en un orden
determinado. Esto le permite establecer comunicación compleja entre módulos sin
tener que definir su propio protocolo.
El modo API proporciona una forma mucho más sencilla de realizar las acciones
enumeradas anteriormente:

1. Debido a que hay diferentes marcos para diferentes propósitos (como


configuración y comunicación), puede configurar un dispositivo sin ingresar
al modo de comando.

2. Dado que el destino de los datos se incluye como parte de la estructura de


cuadros API, puede usar el modo API para transmitir mensajes a múltiples
dispositivos.

3. El marco de API incluye el origen del mensaje, por lo que es fácil identificar
de dónde provienen los datos.

Ventajas del modo API

 Configure los dispositivos XBee locales y remotos en la red.

 Administre la transmisión inalámbrica de datos a uno o varios destinos.

 Identifica la dirección de origen de cada paquete recibido.

 Recibe el estado de éxito / falla de cada paquete transmitido.

 Obtenga la potencia de la señal de cualquier paquete recibido.

 Realice una administración y un diagnóstico avanzados de la red.

 Realice funciones avanzadas como actualización remota de firmware, ZDO,


ZCL, etc.
Estructura de marco API
Los paquetes de datos estructurados en modo API se llaman marcos. Se envían y
reciben a través de la interfaz en serie del dispositivo y contienen el mensaje
inalámbrico en sí mismo, así como información adicional, como el destino / fuente
de los datos o la calidad de la señal.
Cuando un dispositivo está en modo API, todos los datos que entran y salen del
módulo a través de la interfaz en serie están contenidos en cuadros que definen
operaciones o eventos dentro del dispositivo.
Un marco API tiene la siguiente estructura:
comienzo Longitud Datos de marco Checksum
delimitador
1 2 3 4 5 6 7 8 9 ... norte n+1

0x7E MSB LSB Estructura específica de API Single byte

Nota MSB representa el byte más significativo, y LSB representa el byte menos
significativo.

Cualquier dato recibido a través de la interfaz serial antes del delimitador de inicio
es descartado silenciosamente por XBee. Si la trama no se recibe correctamente,
o si la suma de comprobación falla, los datos también se descartan y el módulo
indica la naturaleza de la falla respondiendo con otra trama.

Comenzar delimitador
El delimitador de inicio es el primer byte de un cuadro que consiste en una
secuencia especial de bits que indican el comienzo de un marco de datos. Su
valor es siempre 0x7E. Esto permite una detección fácil de un nuevo marco
entrante.

Longitud
El campo de longitud especifica el número total de bytes incluidos en el campo de
datos del marco. Su valor de dos bytes excluye el delimitador de inicio, la longitud
y la suma de comprobación.

Datos de marco
Este campo contiene la información recibida o que se transmitirá. Los datos del
cuadro están estructurados según el propósito del marco API:
Datos de marco

comienzo Marco Datos


delimitador Longitud tipo Checksum
1 2 3 4 5 6 7 8 9 ... norte n+1

0x7E MSB LSB API Datos específicos del tipo de trama Soltero
marco byte
tipo

Nota MSB representa el byte más significativo, y LSB representa el byte menos
significativo.

 El tipo de marco es el identificador de tipo de marco API. Determina el tipo de


marco de API e indica cómo se organiza la información en el campo Datos.

 Los datos contienen los datos en sí. La información incluida aquí y su orden
depende del tipo de marco definido en el campo Tipo de marco.

Checksum
Checksum es el último byte del marco y ayuda a probar la integridad de los
datos. Se calcula tomando la suma hash de todos los bytes de trama API que le
precedieron, excluyendo los primeros tres bytes (delimitador y longitud de inicio).
Nota Los marcos enviados a través de la interfaz serie con sumas de
comprobación incorrectas nunca serán procesados por el módulo y los datos
serán ignorados.

Calcule la suma de comprobación de un marco de API

1. Agregue todos los bytes del paquete, excluyendo el delimitador de inicio 0x7E y la
longitud (el segundo y tercer bytes).

2. Del resultado, mantenga solo los 8 bits más bajos.

3. Reste esta cantidad de 0xFF.


Ejemplo: cálculo de suma de comprobación
Para calcular la suma de comprobación para el marco dado:
Datos de marco

Tipo
Comenzar de
Delimitado Longitu marc Checksu
r d o Datos m

7E 00 0F 17 0 0 1 A 0 4 A 1 2 F F 0 4 4 -
1 0 3 2 0 0 D 4 E F E 2 4 2

1. Agregue todos los bytes excluyendo el delimitador de inicio y la longitud: 17 + 01 +


00 + 13 + A2 + 00 + 40 + AD + 14 + 2E + FF + FE + 02 + 44 + 42 = 481

2. Del resultado, mantenga solo los 8 bits más bajos: 81.

3. Reste ese resultado de 0xFF: FF - 81 = 7E


En este ejemplo, 0x7E es la suma de comprobación del marco.

Verificar la suma de verificación de un marco API dado

1. Agregue todos los bytes, incluida la suma de comprobación (no incluya el


delimitador y la longitud).

2. Si la suma de comprobación es correcta, los dos últimos dígitos en el extremo


derecho de la suma serán FF.
Ejemplo: verificación de suma de comprobación
En nuestro ejemplo anterior, queremos verificar que la suma de comprobación sea
7E.
Datos de marco

Tipo
Comenzar de
Delimitado Longitu marc Checksu
r d o Datos m

7E 00 0F 17 0 0 1 A 0 4 A 1 2 F F 0 4 4 7E
1 0 3 2 0 0 D 4 E F E 2 4 2

1. Agregue todos los bytes de datos y la suma de comprobación: 17 + 01 + 00 + 13 +


A2 + 00 + 40 + AD + 14 + 2E + FF + FE + 02 + 44 + 42 + 7E = 4FF

2. Dado que los últimos dos dígitos de la extrema derecha de 4FF son FF, la suma
de comprobación es correcta.
Marcos admitidos
La compatibilidad con los tipos de marcos API depende del tipo de XBee que esté
utilizando. Los módulos 802.15.4 XBee incluidos en este kit son compatibles con
los siguientes marcos API:
Los marcos de datos de transmisión se envían a través de la entrada en serie, y
los datos se transmiten de forma inalámbrica a XBees remotos:
ID de
API Nombre del marco Descripción
0x08 Comando AT Consulta o establece parámetros en el XBee
local
0x09 Parámetro de cola de Consulta o establece parámetros en el XBee
comandos AT Valor local sin aplicar cambios
0x10 Solicitud de transmisión Transmite datos inalámbricos al destino
especificado
0x11 Marco de comando de Permite especificar campos de capa de
direccionamiento explícito aplicación de Zigbee (punto final y ID de
clúster) para una transmisión de datos
inalámbrica
0x17 Solicitud remota de Consulta o establece parámetros en el
comando AT módulo XBee remoto especificado
0x21 Crear ruta de origen Crea una ruta fuente en el módulo

0x24 Registrar dispositivo de Registra un módulo con el Centro de confianza


unión

Los marcos de datos de recepción se reciben a través de la salida en serie, con


datos recibidos de forma inalámbrica desde XBees remotos:
ID de
API Nombre del marco Descripción
0x88 Respuesta de Muestra la respuesta al marco de comando AT
comando AT anterior
0x8A Estado del módem Muestra notificaciones de eventos como restablecer,
asociar, desasociar, etc.

0x8B Estado de transmisión Indica el éxito o el fracaso de la transmisión


inalámbrica de datos

0x90 Recibir paquete Envía datos recibidos de forma inalámbrica a través


de la interfaz en serie (AO = 0)
ID de
API Nombre del marco Descripción
0x91 Indicador de Rx Envía datos recibidos de forma inalámbrica a través
explícito de la interfaz serial cuando el modo explícito está
habilitado (AO 0)

0x92 IO Data Sample Rx Envía datos IO recibidos de forma inalámbrica a


Indicator través de la interfaz serial

0x94 Indicador de lectura del Envía la muestra del sensor recibido de forma
sensor XBee inalámbrica (desde un adaptador de sensor Digi de 1
cable) a la interfaz en serie

0x95 Indicador de Muestra el mensaje de identificación del nodo


identificación de nodo recibido cuando el modo explícito está deshabilitado
(AO = 0)

0x97 Respuesta remota del Muestra la respuesta a solicitudes de comando de AT


comando AT remoto anterior

0x98 Estado extendido del Muestra lo que está sucediendo durante la asociación
módem cuando la unión detallada está habilitada (DC10)

0xA0 Estado de actualización Proporciona una indicación de estado de un intento


de firmware en el aire de transmisión de actualización de firmware

0xA1 Indicador de registro del Muestra las esperanzas de ruta múltiple después de
enrutador un comando de registro de ruta Zigbee

0xA3 Indicador de solicitud de Indica que se recibe una solicitud de ruta de muchos
ruta muchos a uno a uno

0xA5 Unirse al estado de Indica que un módulo intenta unirse, reincorporarse o


notificación abandonar la red

Para obtener más información sobre la estructura de algunos de estos marcos,


consulte la Guía del usuario del módulo XBee / XBee-PRO ZigBee RF .
Ejemplos de marcos
Los siguientes ejemplos de marcos API enviados y recibidos se expresan en
formato hexadecimal.
Ejemplo: 0x10 - Solicitud de transmisión
El siguiente marco es un marco de solicitud de transmisión con las siguientes
características:
7E 00 13 10 01 00 13 A2 00 40 DA 9D 23 A6 B9 00 00 48 65 6C 6C 6F 0C

 La ID del cuadro es 0x01, por lo que el emisor recibirá un cuadro de estado


de transmisión con el resultado de la transmisión.

 El destino XBee tiene una dirección de 64 bits de 00 13 A2 00 40 DA 9D


23 y una dirección de 16 bits de A6 B9 .

 No especifica ninguna opción.

 La información a transmitir es 'Hola' ( 48 65 6C 6C 6F ).

Campos de cuadros Compensar Ejemplo Descripción

Comenzar 0 0x7E
delímetro

Longitud MSB 1 0x00 Número de bytes entre la longitud y la suma


de comprobación

LSB 2 0x13

Datos de Tipo de 3 0x10 0x10 - Indica que este es un marco


marco marco de solicitud de transmisión

Identifica el marco de datos para que el


ID de 4 0x01 host se correlacione con un marco
fotograma de estado de transmisión (0x8B) posterior .
Campos de cuadros Compensar Ejemplo Descripción

Establecer Frame ID en '0' deshabilitará el


marco de respuesta.

Dirección de MSB 5 0x00 Establecer en la dirección de 64 bits del


destino de 64 XBee de destino
bits Las siguientes direcciones también son
6 0x13 compatibles:
 0x0000000000000000 - Dirección de
7 0xA2 coordinador

 0x000000000000FFFF - Dirección de
8 0x00
difusión
 0xFFFFFFFFFFFFFFFF: dirección
9 0x40
desconocida si se desconoce la
dirección de 64 bits del destino
10 0xDA

11 0x9D

LSB 12 0x23

Dirección de MSB 13 0xA6 Establezca en la dirección de 16 bits del


destino de 16 XBee de destino, si lo conoce.
bits Las siguientes direcciones también son
LSB 14 0xB9 compatibles:

 0x0000 - Dirección del coordinador

 0xFFFE - Desentierra la dirección si


la dirección de 16 bits del destino es
desconocida, o si estás enviando
una transmisión
Campos de cuadros Compensar Ejemplo Descripción

Radio de 15 0x00 Establece el número máximo de saltos que


radiodifusión puede ocurrir una transmisión de
difusión. Si se establece en '0', el radio de
transmisión se establecerá en el valor
máximo de saltos.

Opciones 16 0x00 Bitfield de opciones de transmisión


compatibles

Los valores admitidos incluyen lo siguiente:

 0x01 - Deshabilitar reintentos

 0x20 - Habilita el cifrado APS (si EE


= 1)

 0x40: use el tiempo de espera de


transmisión extendido para este
destino
Todos los demás bits deben establecerse
en 0.

La habilitación del cifrado APS reduce la


cantidad máxima de bytes de carga de RF
en 4 (por debajo del valor informado por
NP).

Configurar el bit de tiempo de espera


extendido hace que la pila establezca el
tiempo de espera de transmisión extendido
para la dirección de destino.

Datos de RF MSB 14 0x48 Hasta 255 bytes de datos que se envían al


XBee de destino

15 0x65

... 0x6C
Campos de cuadros Compensar Ejemplo Descripción

17 0x6C

LSB 18 0x6F

Checksum 22 0x6E Cantidad de hash de bytes de datos de


marco

Ejemplo: 0x91 - Indicador de Rx explícito


El siguiente cuadro es un cuadro de indicador de Rx explícito con las siguientes
características:
7E 00 17 91 00 13 A2 00 40 DA 9D 05 00 00 E8 E8 00 11 C1 05 01 48 65 6C 6C
6F 61

 El módulo XBee que envió estos datos tiene una dirección de 64 bits de 00
13 A2 00 40 DA 9D 05 y una dirección de 16 bits de 00 00 .

 El punto final de la fuente que inició la transmisión es E8 y el punto final de


destino es E8 .

 La ID del clúster al que se dirigen los datos es 00 11 .

 La ID de perfil a la que se dirigen los datos es C1 05 .

 El paquete fue reconocido porque el valor de Opciones de recepción es 01 .

 Los datos recibidos 'Hola' son ( 48 65 6C 6C 6F ).

Campos de cuadros Compensar Ejemplo Descripción

Comenzar 0 0x7E
delimitador

Longitud MSB 1 0x00


Campos de cuadros Compensar Ejemplo Descripción

LSB 2 0x17 Número de bytes entre la


longitud y la suma de
comprobación

Datos de Tipo de 3 0x91 0x91 - Indica que este es


marco marco un cuadro de indicador de Rx
explícito

Dirección de remitente de 64
Dirección MSB 4 0x00 bits
fuente de
64 bits Se establece en
5 0x13 0xFFFFFFFFFFFFFFFF
(dirección desconocida de 64
bits) si se desconoce la
6 0xA2 dirección de 64 bits del
remitente
7 0x00

8 0x40

9 0xDA

10 0x9D

LSB 11 0x05

Dirección MSB 12 0x00 Dirección de remitente de 16


de red de bits
origen de
16 bits LSB 13 0x00
Campos de cuadros Compensar Ejemplo Descripción

Punto final 14 0xE8 Punto final de la fuente que


de origen inició la transmisión

Punto final 15 0xE8 Punto final del destino al que


de destino se dirige el mensaje

ID de 16 0x00 ID de clúster al que se dirigió


grupo el mensaje

17 0x11

Perfil Id 18 0xC1 ID de perfil al que se dirigió


el mensaje

19 0x05

Recibir 20 0x01 Bitfield de opciones de


opciones transmisión compatibles
Los valores admitidos
incluyen lo siguiente:

 0x01 - Paquete
reconocido

 0x02 - El paquete era


un paquete de
difusión

 0x20 - Paquete cifrado


con encriptación APS

 0x40 - Paquete
enviado con tiempo de
espera extendido
habilitado
Campos de cuadros Compensar Ejemplo Descripción

Datos MSB 21 0x48 Hasta 255 bytes de datos


recibidos recibidos de la fuente XBee

22 0x65

... 0x6C

24 0x6C

LSB 25 0x6F

Checksum 26 0x61 Cantidad de hash de bytes


de datos de marco
Configuración del modo de operación
El parámetro API Enable ( AP ) configura el módulo XBee para que funcione
utilizando una API basada en marcos en lugar del modo transparente
predeterminado. Le permite seleccionar entre los dos modos API admitidos y la
operación transparente predeterminada.

Valor
Modo AP Descripción

Transparente 0 Los modos API están desactivados y el módulo funciona en


modo transparente

API 1 1 Modo API sin caracteres escapados

API 2 2 Modo API con caracteres escapados

La única diferencia entre API 1 y API 2 es que el modo operativo API 2 requiere
que los marcos usen caracteres de escape (bytes).
La configuración de la comunicación serial XBee, ya sea transparente, API no
escapada (API 1) o API escapada (API 2), no impide la comunicación inalámbrica
entre los módulos XBee. Dado que solo la porción de carga útil del marco API se
transmite por aire, los módulos XBee receptores alterarán la información del
paquete en función de su configuración AP , permitiendo que un módulo API no
escapado se comunique exitosamente con otros que trabajen en modo escapado
API o transparente.

Nota Los dispositivos que trabajan en modo transparente y los módulos


configurados en la operación API sin escape (API 1) pueden comunicarse con
dispositivos configurados para funcionar en el modo de escape API (API 2).
Modo de funcionamiento escapado API (API 2)
La operación API sin escape (API 1) se basa únicamente en el delimitador de
inicio y los bytes de longitud para diferenciar los marcos de la API. Si se pierden
bytes en un paquete, el recuento de longitud estará desactivado, y el siguiente
marco API (paquete) también se perderá. El funcionamiento de la API con escape
(API 2) implica el escape de secuencias de caracteres en un marco API para
mejorar la fiabilidad, especialmente en entornos de RF ruidosos.
La estructura de trama básica de ambos modos de API es la misma, pero en modo
de API escapada (API 2), todos los bytes, excepto el delimitador de inicio, deben
escaparse si es necesario. Los siguientes bytes de datos se deben escapar en
modo API 2:

 0x7E: delimitador de inicio

 0x7D: personaje de escape

 0x11: XON

 0x13: XOFF
El modo API 2 garantiza que todos los bytes 0x7E recibidos son delimitadores de
inicio: este carácter no puede formar parte de ninguno de los otros campos de
cuadro (longitud, datos o suma de comprobación), ya que debe escaparse.
Para escapar de un personaje:

1. Inserta 0x7D, el carácter de escape.

2. Añádelo con el byte que se escapará, XORed con 0x20.


En el modo API 2, el campo de longitud no incluye ningún carácter de escape en
el marco y la suma de comprobación se calcula con datos no escapados.
Ejemplo: escapar de un marco API
Para expresar el siguiente marco de API sin escape en modo API 2:
Datos de marco
Comenza Tipo
r de
Delimitad Longitu marc Checksu
or d o Datos m
7E 00 0F 17 0 0 1 A 0 4 A 1 2 F F 0 4 4 6D
1 0 3 2 0 0 D 4 E F E 2 E 9

El byte 0x13 debe ser escapado:


1. Inserta un 0x7D.

2. XOR el byte 0x13 con 0x20: 13 ⊕ 20 = 33.


Este es el marco resultante. Tenga en cuenta que la longitud y la suma de
comprobación son las mismas que las del marco no escapado.
Datos de marco
Comenza Tipo
r de
Delimita Longit mar Checks
dor ud co Datos um
7E 00 0F 17 0 0 7 3 A 0 4 A 1 2 F F 0 4 4 6D
1 0 D 3 2 0 0 D 4 E F E 2 E 9
Intercambio de cuadros XBee
Ahora que comprende cómo funciona el modo API y cómo están estructurados los
marcos API, el siguiente paso es aprender cómo se intercambian los marcos
cuando realiza ciertas operaciones comunes, como configurar un módulo XBee o
transmitir datos inalámbricos.
La siguiente sección proporciona ejemplos usando XCTU. Puede usar la
herramienta de intérprete de marcos de la consola XCTU para ver la estructura
detallada del marco API.
Comando AT: configure un dispositivo XBee local
Para consultar o establecer el valor del XBee local, es decir, el dispositivo
conectado directamente a un dispositivo inteligente como un microcontrolador o
una PC a través de la interfaz en serie, debe usar parámetros y comandos de
AT. Estos son los mismos parámetros y comandos de AT que están disponibles en
el modo Transparente / Comando, pero incluidos en un marco de Comando AT
(0x08). La respuesta que contiene el resultado de la operación se envía de vuelta
en un marco de respuesta de comando AT (0x88).
La siguiente imagen muestra el intercambio de cuadros de API que tiene lugar en
la interfaz en serie al enviar un comando AT (0x08) o una solicitud de valor de
parámetro de cola de comandos AT (0x09).

Durante un intercambio de marcos API, ocurre el siguiente proceso:

1. Un marco de comando AT (0x08) se envía al dispositivo a través de la


entrada en serie. Este marco contiene instrucciones de configuración o
parámetros de consultas en el dispositivo XBee local.

2. El dispositivo XBee procesa el comando y devuelve una respuesta de


comando AT (0x88) a través de su salida en serie. Si la ID del marco AT
Command es 0 , esta respuesta no se envía.
Paquete de solicitud / recepción de transmisión:
transmite y recibe datos inalámbricos
Una trama de solicitud de transmisión encapsula datos con su destino remoto y
algunas opciones de transmisión. Los datos inalámbricos recibidos por un módulo
XBee se incluyen en un marco de paquete de recepción junto con el transmisor
remoto y las opciones de recepción.
Dos marcos más usan el direccionamiento explícito. Requieren que especifique
campos de direccionamiento de capa de aplicación (puntos finales, ID de clúster,
ID de perfil).
Para obtener más información acerca del direccionamiento explícito, consulte
el capítulo sobre comunicación de Zigbee en profundidad .
La siguiente imagen muestra los intercambios API que tienen lugar en la interfaz
serie al transmitir datos inalámbricos a otro módulo XBee.

1. El dispositivo inteligente (host) envía una solicitud de transmisión (0x10) o


un cuadro de comando de direccionamiento explícito (0x11) a XBee A a
través de la entrada serie para transmitir datos a XBee B.

2. XBee A transmite de forma inalámbrica los datos en el marco al módulo


configurado como destino en el mismo marco; en este caso, el destino es
XBee B.

3. El módulo remoto XBee B recibe los datos inalámbricos y envía a través de


la salida en serie un paquete de recepción (0x90) o un indicador de Rx
explícito (0x91), según el valor de la configuración de las opciones API
( AO ). Estos cuadros contienen los datos recibidos por el aire y la dirección
de origen del módulo XBee que lo transmitió, en este caso XBee A.

4. El módulo remoto XBee B transmite un paquete de confirmación


inalámbrica con el estado al remitente, XBee A.

5. El módulo emisor XBee A envía un estado de transmisión (0x8B) a través


de su salida en serie con el estado de la transmisión a XBee B.
La trama Estado de transmisión (0x8B) siempre se envía al final de una
transmisión inalámbrica de datos, a menos que la ID de trama esté configurada en
'0' en la solicitud de transmisión. Si el paquete no puede entregarse en el destino,
el cuadro de estado de transmisión indicará la causa de la falla.
Para enviar datos usando un marco explícito:

 Los puntos finales de origen y destino deben ser E8.

 La ID del clúster debe ser 0011.

 La identificación del perfil debe ser C105.


Para recibir un marco explícito, el parámetro de Opciones de API ( AO ) se debe
configurar en API Explicit Rx Indicator - 0x91 [1]. Si esta configuración es Indicador
API Rx - 0x90 [0], se recibirá un Paquete de recepción (0x90) en lugar de un
Indicador de Rx explícito (0x91).
Comando AT remota: configure de forma remota un
módulo XBee
Trabajar en modo API también le permite configurar módulos XBee remotos de
forma inalámbrica. Cualquier comando o parámetro AT que se pueda emitir
localmente también se puede enviar de forma inalámbrica para su ejecución en un
módulo XBee remoto.
La siguiente imagen muestra los intercambios de marcos API que tienen lugar en
la interfaz serie cuando se envía una solicitud de comando AT remota (0x17) para
leer o establecer un parámetro XBee de forma remota.

1. El dispositivo inteligente (host) envía una solicitud de comando AT remota


(0x17) a XBee A a través de la entrada en serie para configurar el XBee B.

2. XBee A transmite de forma inalámbrica el comando AT en el marco al


módulo configurado como destino en el mismo marco; en este caso, el
destino es XBee B.

3. XBee B recibe el comando AT y procesa el comando para devolver de


forma inalámbrica el resultado al emisor, XBee A.

4. XBee A envía una Respuesta de Comando AT remota (0x97) a través de su


salida en serie con el resultado del comando AT procesado por XBee B. Si
la ID de trama del marco de Comando AT remota es '0', esta respuesta no
se envía.
Enrutamiento de origen: cree y obtenga la ruta de un
paquete
Los módulos XBee también le permiten crear y obtener una ruta fuente en el
módulo. Una ruta de origen especifica la ruta completa que un paquete viaja para
llegar desde el origen hasta el destino. En este caso, antes de enviar los datos
(una solicitud de transmisión o un marco de comando de direccionamiento
explícito), debe enviar aa Crear ruta de origen (0x21) con la ruta del siguiente
paquete.
Utilice el enrutamiento de origen con enrutamiento de muchos a uno para obtener
mejores resultados, por lo que debe establecer el parámetro de Tiempo de
difusión de ruta (AR) de múltiples a un valor distinto de FF en el módulo de
remitente.
La siguiente imagen muestra los intercambios de API en la interfaz serie cuando
está enviando un marco Crear ruta de origen (0x21).

1. El dispositivo inteligente (host) envía una Ruta de creación de origen (0x21) a


XBee A a través de la entrada en serie para especificar la ruta de los siguientes
datos a XBee B.

2. El dispositivo inteligente (host) envía una solicitud de transmisión (0x10) o un


cuadro de comando de direccionamiento explícito (0x11) a XBee A a través de
la entrada serie para transmitir datos a XBee B.

3. El XBee B remoto recibe los datos inalámbricos y envía a través de la salida en


serie un paquete de recepción (0x90) o un indicador de Rx explícito
(0x91). Este marco contiene los datos recibidos por el aire y la dirección de
origen del XBee que lo transmitió, en este caso XBee A.
4. El XBee B remoto transmite un registro de ruta al emisor, XBee A, con la ruta
seguida por los datos transmitidos.

5. El emisor XBee A envía un Indicador de registro de ruta (0xA1) a través de su


salida en serie con las direcciones de 16 bits de los nodos que atraviesa el
registro de ruta recibida.

6. El emisor XBee A envía un estado de transmisión (0x8B) a través de su salida


en serie con el estado de la transmisión a XBee B.
Ejemplo: configure su módulo XBee local
Esta sección muestra cómo leer el identificador de nodo (NI) de su módulo XBee
local configurado en modo API. Para hacerlo, cree un marco de comando AT para
leer el parámetro NI, enviarlo al módulo XBee y analizar la respuesta.
Si te quedas atascado, mira Solución de problemas .
Paso 1: Configurar el módulo XBee
Antes de crear y enviar el marco, configure el módulo XBee de la siguiente
manera:

Valor Efecto
PARAM
Define el identificador de nodo, un nombre amigable para el usuario para el
NI XBEE_A módulo.

de eliminar
El valor
el espacio
predeterminado
cuando cambie
de NI el
esvalor.
un espacio en blanco. Asegúrese
AP AP habilitado Habilita el modo API.
[1]
Paso 2: Abra la consola XCTU

1. Cambia al modo de trabajo Consolas .

2. Abra la conexión en serie con el módulo de radio .


Paso 3: Generar el marco de comando AT
Estas instrucciones describen cómo generar un marco de comando AT utilizando
la herramienta XCTU Frame Generator.

1. Haga clic en Agregar nuevo marco a la lista .

2. Abra la herramienta Generador de marcos .

3. En la sección Tipo de marco , seleccione 0x08 - Comando AT .

4. En la sección de comando AT , seleccione la pestaña ASCII y escriba NI .

5. Haga clic en Aceptar .

6. Haga clic en Agregar marco .


Etapa 4: Enviar el marco de comando AT
Después de haber creado un cuadro de comando AT, debe enviarlo al módulo
XBee local para recibir una respuesta que contenga el valor NI configurado .

1. Seleccione el marco en la sección XCTU Enviar marcos .

2. Haga clic en Enviar paquete seleccionado .

El registro de marcos indica que se ha enviado un cuadro (azul) y otro (rojo).


Paso 5: Analiza la respuesta
Una vez que haya enviado el marco, puede analizar las respuestas en el extremo
receptor.

1. Seleccione el marco recibido (Respuesta de comando AT) para ver sus


detalles en la sección Detallesdel marco .

2. Analice sus detalles y verifique que contenga el valor NI de su módulo.

 Tipo de trama : la trama recibida es una respuesta de comando AT.

 ID de trama : esta trama de respuesta de comando AT es la


respuesta a la solicitud de comando AT enviada porque ambas
tienen el mismo valor (1).

 Estado : el valor fue leído con éxito porque el estado es correcto.

 Respuesta : Esta trama recibida contiene el valor del parámetro NI


previamente solicitado en el cuadro de comando AT, XBEE_A

3. Desconecte la consola haciendo clic en Cerrar la conexión en serie .

VIDEO!!!!!
Ejemplo: Transmitir y recibir datos
Esta sección describe cómo transmitir datos a otro módulo XBee utilizando la
consola XCTU. Los pasos incluyen crear una trama de Solicitud de Transmisión
con el mensaje que desea transmitir al otro módulo y enviar el cuadro en serie al
módulo XBee local. A continuación, puede analizar las respuestas, tanto en el
módulo local como en el remoto.
Si te quedas atascado, mira Solución de problemas .
Paso 1: Configure los módulos XBee
Antes de crear y enviar el marco, configure los módulos XBee de la siguiente
manera:

XBee A XBee B Efecto


PARAM
Define la red a la que se conectará una radio. Esto
CARNÉ DE 2015 2015 debe ser igual para todas las radios en su red.
IDENTIDAD

JV — Habilitado [1] Verifica si existe un coordinador en el mismo canal para


unirse a la red o para irse si no se puede encontrar.

CE Habilitado — Establece el dispositivo como coordinador.


[1]

NI ENVÍO RECEPTOR Define el identificador de nodo, un nombre amigable


para el usuario para el módulo.

cambie El
blanco. el valor predeterminado
Asegúrese
valor. de eliminar elde NI es un
espacio espacio en
cuando
AP API API habilitada Habilita el modo API.
habilitada [1]
[1]
Paso 2: Abra la consola XCTU
1. Cambia al modo de trabajo Consolas .

2. Abra la conexión en serie con el módulo de radio .

3. Cambie a la consola del otro módulo XBee.

4. Abra la conexión en serie con el módulo de radio .

5.
Paso 3: Generar el marco de solicitud de transmisión
Este tema describe cómo generar una trama de solicitud de transmisión utilizando
la consola XCTU SENDER.

1. Vaya a la consola SENDER y sepárela para ver dos consolas al mismo


tiempo.

2. En la consola SENDER, haga clic en Agregar nuevo paquete a la


lista .

3. Abra la herramienta Generador de marcos .

4. En el control de protocolo , selecciona Zigbee .

5. En el control Tipo de marco , seleccione 0x10 - Solicitud de transmisión .

6. En el destino de 64 bits cuadro de dirección , escriba la dirección de 64


bits del módulo RECEPTOR.

7. En el cuadro de datos de RF , haga clic en la pestaña ASCII y escriba el


mensaje "Hola, este es SENDER!"

8. Haga clic en Aceptar .

9. Haga clic en Agregar marco .


Etapa 4: Enviar el marco de solicitud de transmisión
Después de haber creado un marco de solicitud de transmisión, debe enviarlo.

1. Seleccione el marco en la sección XCTU Enviar marcos .

2. Haga clic en Enviar paquete seleccionado .

El registro de marcos indica que se ha enviado un cuadro (azul) y otro (rojo).

Además, la consola RECEIVER indica que se ha recibido otro paquete.


Paso 5: Analiza las respuestas
Una vez que haya enviado los marcos, puede analizar las respuestas en el
extremo receptor.

1. Seleccione el cuadro recibido (Estado de transmisión) en la consola


SENDER para ver los detalles del marco en el panel derecho. Verifique que
el mensaje se haya enviado correctamente.

 Tipo de marco : el marco recibido es un estado de transmisión.

 ID de fotograma : dado que ambos fotogramas tienen la misma ID


de fotograma, esta es la respuesta para el fotograma de solicitud de
transmisión.

 Estado : el estado de éxito indica que el mensaje se envió con éxito.

2. Analice los detalles del paquete de recepción de RECEIVER. Verifique que


el mensaje sea el que escribió y que la dirección del remitente pertenezca a
SENDER.
 Tipo de marco : el marco recibido es un paquete de recepción

 Dirección de origen de 64 bits : este campo muestra la dirección


de 64 bits del módulo emisor, SENDER.

 Recibir opciones :

 El paquete fue acknowledge ( 0xC1 = 1100 0001 ).

 Datos de RF : el mensaje del paquete es "¡Hola, esto es SENDER!".

3. Desconecte ambas consolas haciendo clic en Cerrar la conexión en serie


.

VIDEO!!!!!

Bibliotecas
Digamos que desea escribir una aplicación para permitir que un dispositivo
inteligente monitoree y administre una red XBee. Puede escribir su propio código
para trabajar con el modo API, y también puede aprovechar las bibliotecas de
software existentes que ya analizan los marcos de la API. Dependiendo de su
lenguaje de programación preferido y del dispositivo inteligente conectado a la
interfaz en serie del XBee, puede elegir entre una variedad de bibliotecas
disponibles:
 XBee mbed Library es una extensión de mbed lista para importar para
desarrollar proyectos XBee en las plataformas mbed. Para obtener más
información, vaya a https://developer.mbed.org/teams/Digi-International-
Inc/code/XBeeLib/ .

 La biblioteca Digi XBee Ansi C es una colección de código ANSI C portátil


para comunicarse con los módulos XBee en modo API. Para obtener más
información, vaya a https://github.com/digidotcom/xbee_ansic_library/ .

 XBee-arduino es una biblioteca Arduino para comunicarse con XBees en


modo API. Para obtener más información, vaya
a https://code.google.com/p/xbee-ard uino / .

 XBee Java Library es una biblioteca fácil de usar desarrollada en Java


que le permite interactuar con módulos XBee que funcionan en modo
API. Para obtener más información, visite la documentación de la biblioteca
XBee Java.
En este kit, utiliza la Biblioteca XBee Java para conocer las características y
capacidades de XBee que se ofrecen en el modo operativo API. Puede crear
varias aplicaciones Java para controlar y monitorear XBees conectados a su
computadora a través de la Junta de Desarrollo de XBee Grove.
xbee-arduino
La biblioteca Arduino para comunicarse con XBees en modo API, con soporte para
la Serie 1 (802.15.4) y la Serie 2 (ZB Pro / ZNet). Esta biblioteca incluye soporte para
la mayoría de los tipos de paquetes, incluidos: TX / RX, comando AT, AT remoto,
muestras de E / S y estado del módem.

Noticias
 18/11/15 El nuevo libro de Matthijs Kooijman, Building Wireless Sensor
Networks Using Arduino ya está disponible. Cubre los fundamentos del
trabajo con XBees en modo API, incluidos algunos temas avanzados (cifrado,
seguridad, suspensión), así como la creación de proyectos con esta
biblioteca.
 15/09/15 Matthijs Kooijman ha contribuido con numerosas mejoras en la
biblioteca, incluidas devoluciones de llamada, depuración mejorada,
funciones adicionales y corrección de errores. Estos se pueden encontrar en
la versión 0.6.0.
 28/02/15 El código está ahora en github ya que Googlecode se ha apagado
 01/02/14 La versión 0.5 está disponible. Esta es esencialmente la versión 0.4
Software Serial con una corrección de errores o dos. Si se actualiza desde
una versión anterior a la 0.4, tenga en cuenta que el método para especificar
el puerto serie ha cambiado; ver Ver SoftwareSerialReleaseNotes. Junto con
este lanzamiento, he convertido el repositorio de Subversion a Git
 10/15/12 La versión 0.4 (beta) está disponible. Paul Stoffregen (creador de
Teensy) ha contribuido con un parche que permite el uso de
SoftwareSerial. para la comunicación de XBee! Esto libera el puerto serie
para la depuración o para usar con otro hardware. Pruébelo e informe
cualquier problema en la página del grupo de Google. Importante: Consulte
SoftwareSerialReleaseNotes ya que fue necesario cambiar la API para admitir
esta característica.
 21/12/11 La versión 0.3 ya está disponible. Esta versión incluye soporte para
Arduino 1.0 junto con algunas correcciones de errores y una nueva función
setSerial para usar puertos seriales alternativos (por ejemplo, Mega). Esta
versión también es compatible con versiones anteriores de Arduino.
 4/3/11 Creé una wiki de XBeeUseCases en la API de XBee que describe
varios casos de uso para comunicarse con XBees.
 14/11/09 La versión 0.2.1 está disponible. Esta versión contiene una
corrección de errores para Remote AT
 26/10/09 XBee-Arduino 0.2 ya está disponible. Esta versión agrega soporte
para AT Command, Remote AT y paquetes de muestra de E / S (series 1 y
2). Junto con este lanzamiento, he creado varios ejemplos nuevos.
 8/09/09 Lancé Droplet, una pantalla LCD inalámbrica / control remoto con
soporte para Twitter, Google Calendar, clima, etc. Utiliza este software para
enviar y recibir paquetes XBee.
 19/04/2009 Versión 0.1.2: en este lanzamiento agregué algunos
constructores abreviados para crear solicitudes básicas y obtener /
establecer métodos para facilitar la reutilización de solicitudes
 29/03/09 lanzamiento inicial

Documentación
La documentación de Doxygen API está disponible en las
descargas. Lamentablemente, ya no está disponible en línea, ya que Git no es
compatible con el tipo de mime html como lo hace Subversion.

Guía del desarrollador

Proyecto XBee API (Java) Aunque este proyecto es una implementación de Java,
contiene algunas wikis relevantes para este proyecto, incluida la configuración de
xbee y casos de uso.

Grupo de Google

Ejemplo
He creado varios bocetos de envío / recepción de paquetes con radios XBee Series
1 y 2. Puedes encontrarlos en la carpeta de ejemplos. Aquí hay un ejemplo de
cómo enviar un paquete con una radio de la Serie 2:

// Create an XBee object at the top of your sketch


XBee xbee = XBee();
// Start the serial port
Serial.begin(9600);
// Tell XBee to use Hardware Serial. It's also possible to use SoftwareSerial
xbee.setSerial(Serial);

// Create an array for holding the data you want to send.


uint8_t payload[] = { 'H', 'i' };

// Specify the address of the remote XBee (this is the SH + SL)


XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x403e0f30);

// Create a TX Request
ZBTxRequest zbTx = ZBTxRequest(addr64, payload, sizeof(payload));

// Send your request


xbee.send(zbTx);
Vea la carpeta de ejemplos para la fuente completa. Hay más ejemplos en la
descarga.

Vea el proyecto de la API de XBee para Arduino <-> Comunicación de la


computadora.

Para agregar compatibilidad con XBee a un nuevo boceto, agregue "#include


<XBee.h>" (sin comillas) a la parte superior de su boceto. También puede
agregarlo seleccionando el menú "boceto" y seleccionando "Importar biblioteca->
XBee".

Aprendizaje / Libros
Vea estos libros para aprender más sobre Arduino y XBee:

 Construyendo redes inalámbricas de sensores usando Arduino (versión


Kindle disponible)
 Redes de sensores inalámbricos: con ZigBee, XBee, Arduino y
procesamiento (versión Kindle disponible)
 Programación de Arduino Primeros pasos con bocetos
 Hacer las cosas hablar
 Comenzando con Arduino (Marca: Proyectos (Disponible en Kindle)
 Arduino Cookbook (Oreilly Cookbooks) (Disponible en Kindle)

Hardware
Para el desarrollo y las modificaciones generales, recomiendo usar un Arduino que
tenga 2 puertos seriales, como el Arduino Leonardo. La razón es que el XBee
requiere acceso de puerto serie y es útil tener otro puerto en serie disponible para
la depuración a través de la consola serie de Arduino.

 Arduino Leonardo (recomendado)


 Arduino UNO R3 (puerto serie único)
 Arduino Pro (puerto serie único)

Las radios XBee vienen en dos modelos: Serie 1 (S1) y Serie 2 (S2). La serie 1 es la
mejor opción para la mayoría de las personas, ya que son las más fáciles de
configurar. Las radios XBee de la serie 2 tienen ZigBee y requieren una
actualización de firmware para usar este software. Las Series 1 y 2 no son
compatibles entre sí.

 Serie XBee 1
 Serie XBee 2 (ZigBee)

El Arduino XBee Shield es la opción más fácil para conectar el XBee a un


Arduino. Puede encontrar XBee Shields de varios proveedores e incluso en
ebay. Tenga en cuenta que si selecciona SparkFun XBee Shield, se requieren
cabezales de soldadura (no incluidos) para conectarse a una placa Arduino.

Si no utiliza un escudo XBee, necesitará un regulador de 3.3V y un cambio lógico


para convertir de 5V (Arduino) a 3.3V (XBee). El Arduino es 3.3V tolerante.

Un XBee Explorer es muy recomendable para actualizar el firmware y configurar la


radio. Esto también es útil para conectar un XBee con una computadora. Si está
utilizando radios de la Serie 2 necesitará un XBee Explorer para cargar el firmware
API a la radio, a través de X-CTU (se envían con firmware AT).

Instalación
Arduino 1.5 y posterior

Arduino ahora incluye un administrador de biblioteca para facilitar la instalación de


la biblioteca. En el menú Boceto, seleccione incluir biblioteca-> Administrar
bibliotecas, luego escriba "xbee" en el filtro e instálelo.

Antes de la instalación de Arduino 1.5 hay un manual


Descargue una versión .zip o .tar.gz de github. Determine la ubicación de su
cuaderno de bocetos seleccionando "preferencias" en el menú de Arduino. Cree
una carpeta de "bibliotecas" en su cuaderno de bocetos y descomprima el archivo
de lanzamiento en esa ubicación.

Carga de bocetos
Cargar bocetos con un Leonardo es tan simple como conectar el Arduino a su
computadora y cargarlo. Cuando se utiliza un solo puerto serie Arduino, como el
UNO, los puentes en el XBee Shield deben configurarse en USB. Luego, después de
la carga, regrese a la posición XBee para que el XBee tenga acceso al puerto
serie. Recuerde siempre apagar el Arduino antes de mover los puentes.

Configuración
Para utilizar esta biblioteca, su Xbee debe configurarse en modo API (AP = 2). Eche
un vistazo a esto para obtener información sobre la configuración de sus radios
para formar una red.

Preguntas / Comentarios
Las preguntas sobre este proyecto deben publicarse
en http://groups.google.com/group/xbee-api?pli=1 Asegúrese de proporcionar
tantos detalles como sea posible (por ejemplo, qué radios s1 o s2, versiones de
firmware, configuración y código). )

Licencias de Consultoría / Comercial


Estoy disponible para asesorar a empresas o empresarios que necesitan ayuda para
poner en marcha sus proyectos. También puedo proporcionar una licencia
comercial para situaciones en las que necesite distribuir código a clientes / terceros
que de otra manera entrarían en conflicto con GPL. Para estos asuntos, me pueden
contactar en andrew.rapp [at] gmail.

Das könnte Ihnen auch gefallen