Montaje
El módulo XBee de MaxStream prevé 2 formas amigables de comunicación: Transmisión
serial transparente (modo AT) y el modo API que provee muchas ventajas. Estos módulos
pueden ser configurados desde el PC utilizando el programa X-CTU o bien desde tu
microcontrolador. Los Xbee pueden comunicarse en arquitecturas punto a punto, punto a
multi-punto o en una red mesh.
Los módulos Xbee son económicos, poderosos y fáciles de utilizar. Algunas sus principales
características son:
- Buen Alcance: hasta 300ft (100 mts) en línea vista para los módulos Xbee y hasta 1 milla (1.6 Km) para los módulos Xbee Pro.
- 9 entradas/salidas con entradas analógicas y digitales.
- Bajo consumo <50mA cuando están en funcionamiento y <10uA cuando están en modo sleep.
- Interfaz serial.
- 65,000 direcciones para cada uno de los 16 canales disponibles. Se pueden tener muchos de estos dispositivos en una misma red.
- Fáciles de integrar.
Los módulos XBee son módulos de radio frecuencia que trabajan en la banda de 2.4
GHzcon protocolo de comunicación 802.15.4 fabricados por Maxstream.
Los módulos tienen 6 convertidores análogo-digital y 8 entradas digitales además de Rx
y Tx. Trabajan a 2.4 GHz y generan una red propia a la que puedes conectarte o
desconectarte. Entre otras características a tener en cuenta hay que decir que son
módulos microprocesados con lo cual tienes solucionados los problemas de fallo de
trama, ruidos, etc. Los módulos, se comunican con un dispositivo RS232 a niveles TTLcon lo
cual la comunicación necesita un adaptador intermedio en el caso de un PC, pero
pueden conectarse directamente a una placa de desarrollo como es Arduino.
Los módulos ofrecen una velocidad de comunicación desde 1200 hasta 115.200
baudios pasando por todos los valores convencionales, también disponen de varias I/O
que pueden ser configuradas para diferentes funciones.
Una vez explicado lo que es cada módulo lo siguiente será acoplarlo a nuestro Arduino
y empezar a configurarlos.
¿Qué es X-CTU?
En la imagen se puede observar la ventana del software X-CTU, con el cual se
programan los módulos XBee y XBee PRO de la manera más fácil, basta con hacer click
sobre cualquiera de los parámetros para introducir el valor deseado.
Para una mayor explicación de X-CTU, seguir el tutorial de Álvaro Neira Ayuso:
Comandos AT y Cómo configurar
A pesar de tener la comodidad del programa X-CTU, hemos decidido programar los
nodos mediante comandos AT.
Hay múltiples parámetros que necesitan ser configurados correctamente para que los
módulos puedan comunicarse entre ellos. Necesitan estar en la misma red (ID), mismo
canal (CH) y conocer la dirección destino de cada módulo (DH y DL). Esto último puede
aparecer de varias formas:
- Si el DH de un módulo es 0 y su DL es menor de 0xFFF, los datos transmitidos por ese módulo serán recibidos por cualquier módulo cuyos 16 bits de dirección de lparámetro MY sea igual al DL.
- Si el DH es 0 y el DL es igual a 0xFFFF, las transmisiones del módulo serán recibidas por todos los módulos.
- Si el DH no es cero o el DL es mayor de 0xFFFF, la transmisión solo será recibida por el módulo cuyo número de serie sea igual a la dirección de destino del módulo transmisor. Por ejemplo. cuyos SH es igual al DH del módulo transmisor y cuyo SL sea igual a su DL).
Todas estas correspondencias sólo funcionaran si los nodos están en la misma red y en el
mismo canal.
Aquí hay algunos de los parámetros más útiles para configurar un módulo. Siempre
antes de cada comando hay que escribir AT antes de enviarlo. Por ejemplo si vamos a
cambiar el ID de un nodo sería:
+++ (Y esperar a que devuelva OK), y luego ATID3332 (volver a esperar a que
devuelva OK, y se habrá cambiado el ID de nuestro módulo.
“0x” indica que los valores son hexadecimales, pero a la hora de indicarlos en los
parámetros no hay que ponerlos.
Comando
|
Descripción
|
Valores válidos
|
Valor por defecto
|
ID
|
El ID de la red del módulo Xbee.
|
0 - 0xFFFF
|
3332
|
CH
|
El canal del módulo Xbee.
|
0x0B - 0x1A
|
0X0C
|
SH y SL
|
El número serie del módulo Xbee (SH devuelve los 32 bits superiores, SL los
32 inferiores). De solo-lectura
|
0 - 0xFFFFFFFF
(para ambos SH y SL )
|
diferente para cada módulo
|
MY
|
La dirección de 16-bit del módulo.
|
0 - 0xFFFF
|
0
|
DH y DL
|
La dirección de destino para las comunicaciones inalámbricas
(DH son los 32 bits superiores, DL son
los 32 inferiores).
|
0 - 0xFFFFFFFF
(para ambos DH y DL )
|
0 (para ambos DH y DL )
|
BD
|
La velocidad de transmisión usada para las
comunicaciones con el Arduino o el ordenador.
|
0 (1200 bps)
1 (2400 bps)
2 (4800 bps)
3 (9600 bps)
4 (19200 bps)
5 (38400 bps)
6 (57600 bps)
7 (115200 bps)
|
3 (9600 bps)
|
Otros comandos útiles son:
Comando
|
Descripción
|
RE
|
Restaura los valores por defecto (notar que como el parámetro
cambia, esto no es permanente a no ser que está seguido por el comando WR ).
|
WR
|
Escribe un nuevo valor para un parámetro configurado a
la memoria no volátil (larga-duración). De otro modo, solo durarán hasta que
el módulo sea desconectado de la corriente.
|
CN
|
Sale del modo de comandos. (Si no mandas ningún comando
a un módulo durante unos pocos segundos, el modo de comandos saldrá tras un
tiempo incluso sin el comando CN ).
|
Configuración de cada nodo
Para
nuestro desarrollo hemos tenido que configurar únicamente dos nodos. Para ellos
hemos introducido los siguientes comandos a través del puerto serie con nuestro
Arduino SIN microcontrolador.
Nodo 1:
ATID1111 para configurar
que su red ahora será la 1111, y éste devolverá OK.
ATMY1234, cambiará su
identificador a 1234 y devolverá OK.
ATDH0 y ATDLFFFF, configurará qué nodo es el
destinatario de su información y en este caso será toda la red, ya que el modo
es broadcast.
ATWR, para guardar
los cambios realizados.
ATCE1, para poner el
nodo en modo Emisor.
ATCN para finalizar
la configuración.
Nodo 2:
ATID1111 para configurar
que su red ahora será la 1111, y éste devolverá OK.
ATMY4567, cambiará su
identificador a 4567 y devolverá OK.
ATDH0 y ATDLFFFF, configurará qué nodo es el
destinatario de su información y en este caso será toda la red, ya que el modo
es broadcast.
ATCE0, el nodo se
configura en modo receptor aunque también puede mandar datos.
ATWR, para guardar
los cambios realizados.
ATCN para finalizar
la configuración.
Todo
esto creará este un sistema de comunicación entre los arduinos pudiendo así
transmitirse los datos desde un nodo a otro.