May 1, 2017 | Author: juniorfigueroa | Category: N/A
Descripción: Aprende el funcionamiento de los Módulos Xbbe, el software de configuración X-CTU, apr...
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
COMUNICACIONES INALÁMBRICAS MODULOS DE RADIO FRECUENCIA VERSION OEM XBEE
POR: Junior Figueroa Olmedo
Página 1 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
1. INTRODUCCIÓN MaxStream, que ahora forma parte de Digi International, es una empresa líder mundial en el desarrollo de módems de conexión a redes inalámbricas para dispositivos electrónicos. MaxStream dispone de módulos de módems inalámbricos, módems por radio independientes, servicios de diseño de radiofrecuencia y el software correspondiente (Para obtener más información sobre los productos y servicios, póngase en contacto con MaxStream en www.maxstream.net,
[email protected]). Los módulos XBee y XBee-PRO (fabricados por Maxstream), son los primeros productos resistentes de uso industrial con homologación ZigBee, se basan en una plataforma compatible con ZigBee, y cuentan con un rango y una fiabilidad líderes en el sector. Conseguir la homologación como producto ZigBee es todo un logro y sirve para que los consumidores, las empresas y los usuarios de aplicaciones industriales puedan comprar con toda tranquilidad productos homologados ZigBee porque están garantizados para que funcionen perfectamente en red.
Figura 1. Módulo XBEE con homologación ZigBee
Los módulos XBee y XBee-PRO OEM RF presentan una solución excepcionalmente potente para los numerosos mercados que adoptan la conexión a redes inalámbricas para sus aplicaciones de comunicaciones de datos. La línea de productos XBee se puede encontrar en diversas aplicaciones industriales y comerciales, como sensores remotos, control y manipulación de robots, control de equipos y automatización. Si bien existen bastantes módulos inalámbricos, estos son los que mantienen la relación exacta entre precio y calidad, y debido a su pequeño tamaño y fácil programación (sólo requiere una conexión serial) son ideales para cualquier proyecto.
2. GENERALIDADES DE LOS MODULOS XBEE Los módulos XBee son módulos de radio frecuencia que trabajan en la banda de 2.4 GHz con protocolo de comunicación 802.15.4 fabricados por Maxstream. Son utilizados en automatización de casas, sistemas de seguridad, monitoreo de sistemas remotos, aparatos domésticos, alarmas contra incendio, plantas tratadoras de agua, etc,etc.
POR: Junior Figueroa Olmedo
Página 2 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
2.1. Modelos, Funcionamiento, Software y Hardware.
Figura 2. Módulos RF XBEE
La figura 2 muestra los módulos XBEE, con alcance en interiores de hasta 30 mts y en exteriores el alcance es de hasta 100 mts, con antena dipolo; ahí también se muestran los 3 diferentes tipos de XBEE. Dimensiones: Ancho: 24.38 mm Largo: 27.61 mm Alto de antena: 25 mm En la figura 3 se muestran los módulos XBEE-PRO, con un alcance en interiores de hasta 100 mts y en exteriores el alcance es de hasta 1500 mts con antena dipolo, en la imagen se muestran los 3 diferentes tipos de XBEE PRO. Dimensiones: Ancho: 24.38 mm Largo: 32.94mm Alto de antena: 25 mm
Figura 3. Módulos RF XBEE-PRO
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 TTL con lo cual la comunicación necesita un adaptador intermedio en el caso de un PC, pero pueden conectarse directamente a una placa de desarrollo (ver ejemplos de placas en el apartado 3) como es Arduino. POR: Junior Figueroa Olmedo
Página 3 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
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. Los módulos XBee pueden ser programados a través de una hyperterminal y una interfase serial con un MAX3232 y una serie de comandos llamados AT. El fabricante de los módulos también facilita al usuario un software de programación llamado X-CTU y que puede ser descargado junto con la documentación necesaria desde la página: www.digi.com/support/productdetl.jsp?pid=3352&osvid=57&tp=4&s=31. Existen dos tipos de interfases, serial y USB que pueden ser utilizadas para programar los módulos XBee con un software propietario llamado X-CTU; con este software podemos definir de una forma rápida todos los parámetros que queramos modificar en nuestros módulos. En la figura 4 se puede observar la ventana del software X-CTU, con el cual se programan los módulos XBee y XBee PRO, basta con hacer click sobre cualquiera de los parámetros para introducir el valor deseado.
Figura 4. Interfaz Grafica del X-CTU
POR: Junior Figueroa Olmedo
Página 4 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Una de las ventajas de utilizar estos módulos es que podemos tener hasta 65000 combinaciones distintas de red y se pueden hacer redes de punto a punto y punto a multi-punto. El protocolo 802.15.4 pertenece a las redes PAN (Personal Area Network). Para utilizar los módulos con cualquier microcontrolador que incorpore comunicación serial, basta con configurar unos cuantos parámetros, lo cual los hace muy fácil de manejar. Al comprar los módulos se te proporciona la información para configurarlos y conectarlos a tus microcontroladores. El fabricante de los módulos XBee (Digi Internacional, www.digi.com) ofrece entre sus productos ciertos Kit de Desarrollo para realizar la interfaz con los módulos. Así tenemos el Kit de Desarrollo Profesional XBee, que incluye el hardware y el software necesarios para crear rápidamente la comunicación inalámbrica para el intercambio de datos entre estos dispositivos (también están disponibles otros Kit de Desarrollos: XBee y XBee-PRO Starter Kits, que contienen un menor número de módulos y accesorios). En la figura 5 se muestra el Kit de Desarrollo, junto con las tarjetas de interfaz USB y serial.
Figura 5. Kit de desarrollo del fabricante Digi Internacional
El kit de desarrollo incluye lo siguiente: - 1 Tarjeta de Interfaz USB. - 1 Tarjeta de Interfaz Serial - 2 Módulos XBee de alcance de hasta 100 mts. - 1 Cable USB. - 1 Cable Serial RS-232. - 1 Convertidor DB9 NULL MODEM. - Software X-CTU y Manuales. - Broche para pila de 9 volts. - Eliminador de Baterías con Adaptadores Universales (USA, Europa, etc ) POR: Junior Figueroa Olmedo
Página 5 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
El Kit de Desarrollo incluye una tarjeta de interfaz RS-232 y una tarjeta interfaz de USB. Ambas tarjetas proporcionan una conexión directa a muchos dispositivos seriales y, además, facilitan el acceso a los registros del módulo de RF. Con el Kit de Desarrollo es posible ver los datos que se están mandando de un modulo a otro, de esta forma podemos monitorear de forma independiente nuestra comunicación inalámbrica. Las tarjetas de interfaz de MaxStream proporcionan los medios para conectar el módulo a cualquier nodo que tiene disponible un puerto RS-232 o USB. Dado que el módulo requiere entradas de señales de voltajes TTL, una de las principales funciones de la tarjeta de interfaz es la de convertir señales entre niveles TTL y RS-232 y niveles USB. Para mayor información sobre el funcionamiento y forma de uso de las tarjetas de interfaz USB y serial, revisar el manual de usuario de los módulos XBee/XBee-PRO, que puede ser descargado desde la página de Digi Internacional www.digi.com (paginas 61 hasta la 67). Existen dos formas de comunicación (que son las más utilizadas) de los módulos XBEE: Una es el modo transparente en la cual se comporta como un "cable wireless" de forma que tu puerto serie puede ser transmitido como si de un cable se tratara. Esta es la forma sencilla donde puedes conectar dos dispositivos cuadrando su velocidad, es decir, si tu aplicación trabaja a 19200 baudios deberás programar esta velocidad a los XBee, para ello MaxStream pone a disposición una herramienta software gratuita (X-CTU). La segunda forma es mas compleja, se trata de utilizar la API que incorpora el microcontrolador de que dispone cada modulo XBee. En esta modalidad puedes generar una red de módulos XBee, puedes programar un XBee para que trabaje como repetidor de señal (hub) además de otras funciones que permiten a los desarrolladores tener ventajas en los protocolos de comunicación... Uno de ellos muy interesante es que el modulo que empleas como emisor/receptor te "dice" si el modulo al que quieres comunicar esta disponible, es decir, te devuelve una respuesta cada vez que intentas comunicar con otro modulo. Toda la comunicación se hace por medio de comandos AT con lo que es necesario leerse bien el manual, por lo demás es mucho más potente y fiable que muchos módulos comerciales para comunicación serie.
2.2. Características mecánicas y distribución de pines. La distribución de los pines de los Módulos de Radiofrecuencia XBee y XBee-PRO son compatibles entres sí, tal y como se muestran en las siguientes imágenes.
POR: Junior Figueroa Olmedo
Página 6 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 7. Planos mecánicos de los módulos de radiofrecuencia OEM XBee/XBee-PRO (las opciones de antenas no se muestran)
En la tabla 1 se muestra la distribución de los pines de los módulos XBee y XBee PRO.
POR: Junior Figueroa Olmedo
Página 7 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
* Función no es compatible en el momento con esta versión Tabla1. Distribución de pines tanto para los módulos XBee/XBee-PRO
Notas de Diseño:
•
Conexiones mínimas: VCC, GND, DOUT y DIN.
•
Conexiones mínimas para la actualización del firmware: VCC, GND, DIN, DOUT, RTS y DTR.
•
La dirección de la señal es especificada con respecto al módulo.
•
El módulo incluye una resistencia pull-up de 50 KΩ, adjunta para RESET (activación en bajo L).
•
Varias de las entradas pull-ups pueden ser configuradas utilizando el comando PR.
•
Los pines libres deben dejarse desconectados.
2.3. Confusión Zigbee y protocolo 802.15.4 en Módulos XBee Se ha prestado a confusión por parte de los usuarios, sobre el protocolo que soportan los módulos XBEE. Por una parte mencionan el protocolo 802.15.4 y por otra el protocolo ZigBee. Para aclarar esto se debe indicar que los módulos XBEE soportan el protocolo 802.15.4, mientras que los módulos XBEE PRO soportan el protocolo ZigBee. La principal diferencia entre estos módulos es: 802.15.4 define: POR: Junior Figueroa Olmedo
Página 8 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Capa física: tipo de modulación y frecuencia (2.4 Ghz, 16-QAM, 915 Mhz y 868 Mhz DSSS-BPSK) y el formato del paquete. Control de acceso al medio: timing, asociación con un nodo coordinador, direccionamiento, prevención de colisiones, retransmisión, encriptación, ruteo de 2 saltos a través de un nodo coordinador, etc… El protocolo ZigBee, construido sobre el protocolo 802.15.4, define: Capa de red: Estilo AODV, que permite múltiples saltos utilizando el ruteo por redes MESH. Asociación a una red (no sólo a un nodo coordinador como el caso de 802.15.4) Más tipos de encriptación y autentificación. Capa de Aplicación: Permite a los nodos exponer valores individuales, como sensores, switches o actuadores. Perfiles para varios tipos de dispositivos, etc… En general los módulos de la serie 2, y Znet 2.5 y los XBEE PRO permiten todas las ventajas del una red ZigBee. Ojala con esta explicación se aclare esta situación.
3. PLACAS DE DESARROLLO COMPATIBLES CON LOS MODULOS XBEE En el apartado 2 se hizo referencia de las tarjetas de interfaz serie y USB suministradas por Digi Internacional que es la empresa fabricante de los módulos XBee; ahora vamos a hablar de otras tarjetas de interfaz fabricadas por distintas empresas.
3.1. Tarjeta De Desarrollo Para Módulos XBee (ZigBee) Basicos y PRO
POR: Junior Figueroa Olmedo
Página 9 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 8. Vista superior y lateral de la tarjeta de desarrollo
Esta tarjeta te permite poner a funcionar los módulos XBee de inmediato. Solo conéctalo a una fuente de datos seriales RS232 como tu PC y de inmediato comienza a transmitir y recibir información entre ellos. Esta diseñado para que pueda emplear los módulos XBee Básicos OEM y los XBee PRO intercambiándolos fácilmente por medio de la base especial para los módulos, esta provisto de una interfaz serial completa DTS, RTS, TX, RX, etc, y una fuente regulada con protección de inversión de polaridad. Contiene además una fuente regulada de 3VDC para la alimentación y protección de los módulos XBee.
Tabla 2. Ficha técnica de la tarjeta de desarrollo
A continuación se muestran ciertas aplicaciones desarrolladas con esta tarjeta de desarrollo y haciendo uso de los módulos XBEE.
POR: Junior Figueroa Olmedo
Página 10 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 9. Control Remoto, Rápido y Fácil
Figura 10. Enlace de datos con solo conectar
POR: Junior Figueroa Olmedo
Página 11 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 11. Enlace de datos con solo conectar
3.2. Placa XBee de Arduino
Figura 12. Placa XBee
Esta es una placa para Arduino Diecimila USB que incorpora un módulo inalámbrico XBee de MaxStream. Usa un protocolo modificado de ZigBee y permite establecer comunicaciones inalámbricas. Ésta placa encaja perfectamente en el Arduino Diecimila USB y se alimenta de ella.
POR: Junior Figueroa Olmedo
Página 12 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 13. Arduino Diecimila USB
Se trata de una nueva placa desarrollada por M. Yarza, como parte del proceso de desarrollo realizado por la empresa Libelium de Zaragoza, España, en estrecha colaboración con Arduino.cc.
Figura 14. Placa XBee sobre Arduino GN
El blindaje (Arduino GN) permite fácilmente montar una placa XBee y todos los componentes para su creación y funcionamiento. Cuando conectado sobre una placa Arduino GN sin el procesador, este actuará como un convertidor de USB a XBee convirtiéndose en una interfaz para todos los dispositivos XBee habilitados a un ordenador.
Figura 15. Es posible adjuntar cualquier tipo de módulos XBee
3.3. SFE XBEE EXPLORER USB POR: Junior Figueroa Olmedo
Página 13 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 16. Interfaz SFE XBEE Explorer USB
Características: • Convertidor de USB a Serie • Compatible con XBee Serie 1, 2.5, Standard y Pro El SFE XBee Explorer USB es muy simple de utilizar. Esta unidad trabaja con todos los módulos incluidos XBee las Series 1 y la Series 2.5, la versión estándar y Pro. Coloque el modulo XBee sobre la unidad del XBEE Explorador USB, conecte un cable mini USB, y usted tendrá acceso directo a la programación serial y a los pines en la unidad XBee. Esta unidad también permite la configuración de los módulos a través del software Xbee X-CTU.
3.4. Droids SAS XBee - DTE Serial Board (DB9)
Figura 17. Interfaz Droids SAS XBee – DTE
La tarjeta de interfaz serial Droids SAS XBee – DTE ha sido diseñada para permitir una fácil y fiable conexión entre los módulos Xbee y tus aplicaciones de Robótica. Los módulos XBee y XBeePRO son totalmente compatibles, incluso la nueva Serie 2 XBee es compatible. La construcción sólida y el regulador de tensión de alta potencia garantizan la máxima fiabilidad y el pleno rendimiento de los módulos XBee. Dos útiles LED
POR: Junior Figueroa Olmedo
Página 14 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
permiten un control constante de la actividad de la tarjeta y una rápida solución de problemas. Tiene una salida de 3.3V, 3 LEDs de estado.
Características • RSSI y LEDs asociados para supervisar la actividad del módulo Xbee. • Salida de 3.3V a los dispositivos externos (MCU's, tarjetas, etc) • Un conector de 9 pines 2.54mm en la parte trasera para una fácil y rápida conexión • Tamaño compacto, solo unos pocos milímetros más grande que un módulo XBee Pro.
NOTA: En el mercado existen muchas otras interfaces compatibles con los módulos XBEE, el lector puede adquirir y hacer uso de cualquiera de ellas siempre y cuando comprenda su funcionamiento y el modo de manejarlas.
3.5. Construcción de una Tarjeta de Interfaz Serial Para el desarrollo de los proyectos presentes en este documento, se ha hecho uso de la implementación del circuito de un módulo comercial (Convertidor RS232/Zigbee) que permite realizar de una forma sencilla y económica comunicaciones Zigbee en tu ordenador a través del puerto RS232. Está basado en el famoso módulo XBee de la firma MAXSTREAM. Admite módulos XBEE y XBEE-PRO. Para mayor información, visite la página http://www.ray-ie.com/webray_019.htm. El circuito se alimenta con una fuente externa de 5 a 12 voltios y tiene protección contra inversión de polaridad, además su funcionamiento ha sido 100% comprobado. Aquí los elementos a emplear: Elementos: •
1 Regleta de Protoboard
•
Conectores de alimentación
•
Una fuente variable de 5-15V DC
•
1 Regulador de voltaje de 5V: L7805C
•
1 Regulador de voltaje de 3.3V: LM1117T (u otro)
•
1 Módulo XBee sobre una PCB (hecha anteriormente), para comprobación.
•
4 LEDs (1 amarillo, 1 verde, 1 rojo, 1 azul)
•
2 Capacitores de 10 µf
•
3 Capacitores de 0.1 µf
•
2 Resistencias de 120 ohm
•
1 Conector DB9 macho, para placas
POR: Junior Figueroa Olmedo
Página 15 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
En la figura 18, se muestra la circuitería a emplear.
Figura 18. Diseño de la tarjeta de interfaz: Convertidor RS232/Zigbee
Luego de armar el circuito, conecte la fuente de alimentación (5v a 12v). Cuando el modulo XBee ha sido energizado el LED ROJO debe encenderse indicando que la tarjeta esta funcionando correctamente, el LED VERDE debería permanecer encendido constante indicando que el módulo XBee está encendido (ON) y no en modo de bajo consumo (sleep mode), el LED AMARILLO parpadea, excepto cuando esta en modo de comando AT. Por último el LED AZUL se debe encender cuando se esté enviando o recibiendo datos inalámbricamente.
Figura 19. Circuito armado en el Protoboard
Después de haber comprobado el funcionamiento del circuito en el protoboard, realice la respectiva tarjeta de interfaz (ver figura 20) en baquela o fibra de vidrio, en el cual tiene que usar un cable serial hembra-hembra (ver figura 21) para poder conectar la tarjeta con un puerto serial Windows de la PC. Lo siguiente en hacer, es descargar los instaladores de X-CTU para Windows de MaxStream en este equipo, instalarlo, y poner en marcha el programa X-CTU. POR: Junior Figueroa Olmedo
Página 16 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 20. Circuito implementado en baquela
Figura 21. El primer cable se usa con el circuito armado en el protoboard y el segundo de ellos directamente con la tarjeta de interfaz Convertidor RS232/Zigbee
Si su ordenador no cuenta con puerto serial y solo tiene puertos USB para comunicaciones seriales, no se preocupe en que no pueda utilizar la tarjeta RS232/Zigbee, puesto que en el mercado existen cables de interfaz USB-SERIAL, que usted puede adquirir y están alrededor de unos $12 y hasta más baratos. En la figura 22 se puede observar un de los tantos modelos que existen, y que también se utiliza en este documento.
Figura 22. Cable de interfaz USB-SERIAL
POR: Junior Figueroa Olmedo
Página 17 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
4. CONSTRUCCIÓN DE UNA SIMPLE PLACA DE CIRCUITO IMPRESO PCB (PRINTED CIRCUIT BOARD) PARA MODULOS XBEE.
Figura 23. Módulos XBBE sobre placas PCB
Debido a que los pines del Modulo XBee no son compatibles con el tamaño de las separaciones de los agujeros de los protoboards ni con los zócalos para las placas, se hace indispensable crear una PCB que sirva como medio de comunicación entre el protoboard y el modulo XBee, y mediante en empleo de esta realizar la circutería necesaria para poner a funcionar los módulos. Esta placa no es necesaria si cuenta con alguna de las tarjetas o placas de interfaz mencionadas en el apartado 3. Las dimensiones de una PCB deben estar en proporción a las dimensiones del modulo XBee (33.24mm x 24.38mm para un modulo XBee simple y 39.47mm x 24.38mm para el modulo XBee PRO); las dimensiones utilizadas para la construcción de la PCB se muestran mas adelante (usted puede variar en unos cuantos milímetros estas medidas siempre y cuando respete la dimensiones de los módulos XBee).
4.1. Partes y Elementos a Utilizar •
1 Baquelita o fibra de vidrio (el tamaño depende de la cantidad de PCB a fabricar).
•
1 modulo XBee para cada PCB.
•
Respacks de espadines (10 espadines en cada uno).
•
1 Papel de transferencia térmica Press-n-Peel (o papel de transferencia PCB)
•
1 Funda de Cloruro Férrico.
•
Impresora Laser.
•
Plancha de vapor.
•
1 Esponja de acero, de las utilizadas para lavar los platos (lustre, estrella, etc.).
•
1 Cautín
•
Entre otros que se van mencionando en cada paso………
4.2. Procedimiento
POR: Junior Figueroa Olmedo
Página 18 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Paso 1: Lo primero que se necesita para hacer la placa de circuito impreso es el dibujo de las pistas para los elementos, esto se consigue con la ayuda de un computador, y del software PROTEUS, o cualquier software de dibujo en el que usted pueda trazar las líneas y partes de circuito, tal y como se muestra a continuación:
Figura 24. Diseño en el software Proteus, junto con las medidas implementadas
Note que el dibujo esta realizado un espejo, esto lo necesitamos para la transferencia térmica. En la figura 24 también se muestran en los extremos los pines del 1 al 20, correspondientes al modulo XBee; mientras que en el centro se ha empleado y escogido arbitrariamente uno de los CI integrados (dicho integrado debe contar con 20 pines) con los que cuenta PROTEUS, con el fin de fijar el tamaño de separación de los pines compatibles con los agujeros del protoboard. Se observa además que cada pin del modulo esta conectado con cada pin del CI. De la figura 24 hay que eliminar las franjas del CI que se tomo como referencia (puesto que como se muestran los pines actualmente, se encuentran en cortocircuito), tal y como se muestra a continuación:
Figura 25. Diseño final en Proteus POR: Junior Figueroa Olmedo
Página 19 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Paso 2:
Figura 26. Número de circuitos en Proteus para imprimir
Una vez que se tiene el diseño de la placa, se debe imprimirlo con una impresora láser o copiadora (que tengan los cartuchos toner de polvo en color negro), en un papel de transferencia térmica Press-n.Peel, que lo podemos conseguir en las tiendas electrónicas a un costo de más o menos 2 USD cada hoja.
Figura 27. Diseño impreso en papel de transferencia térmica
Para nuestro caso en particular hemos impreso 3 filas de 5 dibujos en cada una, con lo que tenemos un total de 15 PCBs (en la figura 27 se muestran 18 PCBs, pero en realidad se fabricaron 15). El tamaño de la placa debe ser proporcional a la cantidad de PCBs a fabricar, tal y como se puede apreciar en la grafica anterior. POR: Junior Figueroa Olmedo
Página 20 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Paso 3: Bueno ahora se debe cortar la placa que puede se de Baquelita o de Fibra de vidrio (el tamaño de pende de la cantidad de PCBs) utilizando una sierra o una caladora con sierra de metal (debido a que este posee dientes más finos). Una vez cortada la placa, se debe limpiar las limallas de cobre que quedan en los filos de la placa, con una lija fina de metal (Nro. 150).
Figura 28. Proceso para el corte de la placa
Luego de esto se debe limpiar el lado del cobre donde se va a transferir las pistas con una esponja de acero, notarán que la lámina de cobre cambia de color, esto es porque se está limpiando el óxido en la superficie y los rayones que pudiera tener.
Figura 29. Proceso para limpiar los residuos presentes en la placa
Paso 4: Ahora vamos a realizar la transferencia térmica propiamente dicha de las pistas sobre el lado de la lámina de cobre. Primero coloque el papel de transferencia térmica con el lado de la impresión sobre el lado del cobre, sin moverlo mucho introdúzcalo de bajo de un trozo de tela (el uso de la tela puede ser omitida), todo esto sobre una mesa rígida y luego pase la plancha que debe estar al máximo de la temperatura, aplique presión con todo el peso del cuerpo por alrededor de 1 a 2 minutos, luego de esto retire e inmediatamente coloque la placa en otra parte de la mesa que se encuentre fría, con otro trapo aplique presión uniforme frotándolo de un lado a otro hasta que se enfrié, con la finalidad de que toda la tinta (toner + barniz) se pegue a la lámina de cobre y así poder retirar el papel sin que se presente partes cortadas o faltantes. POR: Junior Figueroa Olmedo
Página 21 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 30. Proceso para la transferencia térmica
Paso 5: Una vez completado el paso anterior, procedemos a preparar la solución ácida, primero colocamos ½ vaso de agua tibia en un recipiente de plástico, luego colocamos poco a poco si es posible con una cuchara de plástico, todo el contenido de la funda de cloruro férrico, utilizamos un palillo de pincho para revolver el líquido y así ayudar a disolver el cloruro férrico. Luego procedemos a introducir la placa que contiene los 15 dibujos en la solución ya preparada, el tiempo de corrosión por ser la primera vez, puede variar entre 15 y 30 minutos. También podemos ayudar a que el proceso sea más rápido, moviendo el líquido de un lado a otro.
Figura 31. Introduciendo la placa en la solución ácida
Paso 6: Una vez que al ácido terminó de eliminar el cobre expuesto, retiramos la placa del ácido y lo lavamos con abundante agua del grifo, las pistas en esa fase se ven de color negro, por tal razón es mejor limpiar con la misma esponja de acero y un poco de agua, el resultado de la limpieza no deja rastro de tinta y se ve muy nítido.
Figura 32. Pistas finales impresas sobre la placa POR: Junior Figueroa Olmedo
Página 22 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Luego procedemos a cortar cada uno de los dibujos con respecto a los bordes de los mismos y de esta manera obtener los 15 PCBs requeridos.
Figura 33. Cortando cada uno de los PCB para cada módulo XBEE
Lo único que hace falta para que las placas estén listas (sin los elementos soldados) es realizar los respectivos agujeros con una broca de 1 mm, lo ideal es disponer de un taladro miniatura, ya que estos son de fácil manipulación
Figura 34. Haciendo los agujeros en las PCB
Paso 7: Ahora procederemos a soldar los elementos a las placas, mediante el uso del cautín y demás materiales requeridos. Primero soldamos los espadines 10 en cada lado de cada placa, tal y como se observa e las siguientes figuras:
POR: Junior Figueroa Olmedo
Página 23 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 35. Espadines soldados a cada lado de las PCBs
Luego soldamos los pines del módulo XBee a la placa PCB, como se muestra. Las letras serigrafiadas (impresas) en blanco deben mirar hacia arriba, lejos de la cabecera de la placa. Asegúrese de dejar espacio suficiente para que la cabecera de la placa no toque la parte posterior del módulo XBee (pues si se tocasen, esto provocaría un cortocircuito). Una vez soldados todos los pines verificar continuidad.
Figura 36. Soldando el módulo XBEE sobre el PCB
Por último, para limpiar los residuos de la suelda (pasta) que se encuentra en las pistas de la placa, podemos utilizar un cepillo de dientes que ya no se utilice, introducimos las cerdas en un poco de thinner, y cepillamos cuidadosamente.
POR: Junior Figueroa Olmedo
Página 24 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 37. Módulo XBEE sobre el PCB, diseño final, varias vistas.
5. CIRCUITO BÁSICO PARA EL XBEE La figura 38 muestra las conexiones mínimas que necesita el módulo Xbee para poder ser utilizado. Luego de esto, se debe configurar según el modo de operación adecuado para la aplicación requerida por el usuario.
Figura 38. Conexiones mínimas requeridas para el XBEE
El módulo requiere una alimentación desde 2.8 a 3.4 V, la conexión a tierra y las líneas de transmisión de datos por medio del UART (TXD y RXD) para comunicarse con un microcontrolador, o directamente a un puerto serial utilizando algún conversor adecuado para los niveles de voltaje. Esta configuración, no permite el uso de Control de Flujo (RTS & CTS), por lo que ésta opción debe estar desactivada en el módulo Xbee. En caso de que se envíe una gran cantidad de información, el buffer del módulo se puede sobrepasar. Para evitar esto existen dos alternativas:
bajar la tasa de transmisión
activar el control de flujo
POR: Junior Figueroa Olmedo
Página 25 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
6. CONEXIÓN DE LOS MODULOS ZIGBEE CON MICROCONTROLADORES En las figuras 39 y 40 se muestran los diagramas electrónicos entre el microcontrolador y el módulo XBEE. La conexión con EL módulo XBee o XBee-PRO es idéntica, el regulador IF33 (o también lo puede encontrar como LM1117T) se consigue fácilmente en el mercado. El divisor de voltaje a la salida del microcontrolador es totalmente necesario, ya que el nivel de tensión de entrada del modulo Zigbee no debe exceder los 3.3 voltios, es por eso que se conectan las resistencias en serie para obtener 2/3 del voltaje de salida (5/3*2)= 3.3 voltios. Si nuestro microcontrolador trabaja con niveles de tensión de 3.3 voltios como es el caso del Atmega8535l, no es necesario poner el divisor de voltaje, bastara con aplicar voltaje de 3.3 voltios a todo nuestro circuito.
Figura 39. Conexión del módulo XBEE (que hace de transmisor) con el microcontrolador
Figura 40. Conexión del módulo XBEE (que hace de receptor) con el microcontrolador
POR: Junior Figueroa Olmedo
Página 26 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
NOTA: Las conexiones anteriores son útiles para el caso en que se vaya a realizar una comunicación inalámbrica simplex. Cuando se pretende realizar una comunicación de tipo duplex, es necesario que los dos módulos se encuentren conectados al microcontrolador según la configuración mostrada en la figura 39.
7. MODOS DE OPERACIÓN Los módulos Xbee, pueden operar en los siguientes 5 modos:
Figura 41. Modos de operación del módulo XBEE
7.1. Modo Recibir/Transmitir Se encuentra en estos modos cuando el módulo recibe algún paquete RF a través de la antena(modo Receive) o cuando se envía información serial al buffer del pin 3 (UART Data in) que luego será transmitida (modo Transmit). La información transmitida puede ser Directa o Indirecta. En el modo directo la información se envía inmediatamente a la dirección de destino. En el modo Indirecto la información es retenida por el módulo durante un período de tiempo y es enviada sólo cuando la dirección de destino la solicita. Además es posible enviar información por dos formas diferentes. Unicast y Broadcast. Por la primera, la comunicación es desde un punto a otro, y es el único modo que permite respuesta de quien recibe el paquete RF, es decir, quien recibe debe enviar un ACK (paquete llamado así, y que indica que recibió el paquete, el usuario no puede verlo, es interno de los módulos) a la dirección de origen. Quien envió el paquete, espera POR: Junior Figueroa Olmedo
Página 27 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
recibir un ACK, en caso de que no le llegue, reenviará el paquete hasta 3 veces o hasta que reciba el ACK. Después de los 3 intentos se incrementa el registro de fallas ACK en uno. Para ver el conteo se utiliza el comando EA (ATEA en el Modo de Comandos– ACK Failures), el cual se satura hasta 0xFFFF (65535 decimal). Para resetear el registro se debe ingresar ATEA0. En el modo Broadcast la comunicación es entre un nodo y a todos los nodos de la red. En este modo, no hay confirmación por ACK.
7.2. Modo de Bajo Consumo (Sleep Mode) El modo de Bajo Consumo o modo Sleep, corresponde cuando el módulo entra en un estado de bajo consumo de energía. Esto depende de la configuración en la que se encuentra. Se debe indicar que el ahorro de energía depende enormemente del voltaje de alimentación. Para entrar a este modo se debe configurar el comando SM (ATSM – Sleep Mode). Si SM=4 o SM=5, el módulo entra al modo SLEEP cuando transcurre un período dado por el comando ST (ATST-Time Before Sleeping-tiempo antes de dormir). Donde ST posee un rango entre 0 y 0xFFFF (x 1ms). Si SM=4, el módem despertará cada cierto tiempo, dado por SP (ATSP – Cyclic Sleep Period), cuyo rango es entre 0 y 0x68B0 (x10 ms). Cuando despierte buscará por datos entrantes desde un módulo configurado como Coordinador (ver más adelante), en caso de no haber nada, el módem volverá al modo SLEEP. Si SM=5, el módulo realzará lo mismo que antes, pero despertará de acuerdo al estado del pin SLEEP_RQ (pin 9). Cuando el pin pase a LOW (el pin es disparado por detección de borde, no por nivel), despertará, buscará por datos entrantes, y si no hay nada volverá a cero el timer del comando ST, por lo que sólo volverá a dormir cuando transcurra el período dado por éste. Mientras transcurra ese período, cualquier actividad en el pin SPEEL_RQ será ignorada, hasta que vuelva al modo SLEEP. Si SM=1, el módulo entrará al estado de hibernación. En este estado, si el pin SLEEP_RQ está en HIGH, el módulo cortará cualquier actividad entrante, ya sea de transmisión, recepción o de asociación (se verá más adelante) y entrará al modo SLEEP, y no saldrá de ahí hasta que el pin SLEEP_RQ vuelva a estar en LOW. Mientras se encuentre en el estado de hibernación, no responderá a ninguna actividad serial ni a ningún paquete RF entrante, simplemente los desechará. En el modo hibernación el sistema ahorra una gran cantidad de potencia. Si SM=2, el sistema se comporta igual que el modo de hibernación, pero sin tanto ahorro de energía y además despierta mucho más rápido que el modo anterior. La siguiente tabla explica lo anterior:
Tabla 3. Tabla de Modo Sleep y consumos de corriente
7.3. Modo de Comando Este modo permite ingresar comandos AT al módulo Xbee, para configurar, ajustar o modificar parámetros. Permite ajustar parámetros como la dirección propia o la de destino, así como su modo de operación entre otras cosas. Para poder ingresar los comandos AT es necesario utilizar el Hyperterminal de Windows, el programa X-CTU o POR: Junior Figueroa Olmedo
Página 28 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
algún microcontrolador que maneje UART y tenga los comandos guardados en memoria o los adquiera de alguna otra forma. Para ingresar a este modo se debe esperar un tiempo dado por el comando GT (Guard Time, por defecto ATGT=0x3E8 que equivalen a 1000ms) luego ingresar +++ y luego esperar otro tiempo GT. Como respuesta el módulo entregará un OK. El módulo Xbee viene por defecto con una velocidad de 9600bps. En caso de no poder ingresar al modo de comandos, es posible que sea debido a la diferencia de velocidades entre el módulo y la interfaz que se comunica vía serial.
Figura 42. Ejemplo de Comando AT
En la figura anterior se muestra la sintaxis de un comando AT. Luego de ingresar a este modo, se debe ingresar el comando deseado para ajustar los parámetros del módulo Xbee. La lista de comandos se encuentra en las siguientes secciones. Por ejemplo si se desea modificar la dirección de origen del módulo de 16-bit (con el comando MY), se debe ingresar:
Figura 43. Ejemplo escritura de parámetros
En el ejemplo anterior, la dirección asignada equivale a 0x3F4F. Se observa que primero se ingresa al modo de comandos AT, recibiendo un OK de respuesta. Luego se ingresa el comando ATMY3F4F y se presiona ENTER o carácter (Carrier Return y Line Feed) si se maneja desde un microcontrolador. Con ello se recibe un OK como respuesta. Para salir del modo de Comandos se ingresa ATCN y se presiona ENTER. En caso de que no se ingrese ningún comando AT válido durante el tiempo determinado por CT (Command Mode Timeout), el módulo se saldrá automáticamente del modo de comandos. Para que los cambios realizados tengan efecto se debe ingresar el comando ATCN (sale del modo de comandos) o ATAC (aplica los cambios inmediatamente). Con el comando ATWR, se guardan los cambios en la memoria no volátil del módulo, pero sólo tendrán efecto una vez ingresado el comando AC o CN.
POR: Junior Figueroa Olmedo
Página 29 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Para consultar el valor asignado a un comando, éste de debe ingresar directamente sin ningún parámetro. En el ejemplo anterior se ingresaría ATMY. La siguiente figura muestra lo anterior:
Figura 44. Ejemplo lectura de parámetros
Se observa que se ingresa ATMY, donde el que módulo responde con un 3F4F, que es la dirección que tiene configurada, y luego con un OK. Otra forma de configurar el módulo por comandos AT, es ingresando varios comandos separados por coma (´,´). Esto se muestra a continuación de las dos formas:
Figura 45. Forma normal de escribir
Se observa que luego de ingresar al modo de Comandos (+++), se pregunta por la dirección de destino (ATDL), para lo cual se tiene como respuesta la dirección 0xBB3F. Con ello se modifica esta dirección por 0xCC53 ingresando ATDLCC53, obteniendo un OK como respuesta. Se confirma el correcto ajuste preguntando nuevamente y luego se guarda la configuración en la memoria no volátil del módulo usando ATWR, para lo cual se vuelve a obtener un OK. Posteriormente se saldrá del modo de comando utilizando POR: Junior Figueroa Olmedo
Página 30 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
ATCN obteniendo otro OK. Otra forma de hacer lo mismo se muestra en la siguiente figura:
Figura 46. Forma abreviada para varios comandos al mismo tiempo
Se observa que luego de ingresar al modo de comandos, se ingresa ATDLCC35, WR, CN que indica que se ingresarán tres comandos en uno, y éstos serán ATDLCC35, ATWR y ATCN. Luego se obtendrá la respuesta para cada comando en el mismo orden en que fueron ingresados. Además de los modos anteriores, existen otros modos referentes a lo que son la forma de transmitir la información. Estos modos son: Modo Transparente y Modo API.
7.4. Modo Transparente En este modo todo lo que ingresa por el pin 3 (Data in), es guardado en el buffer de entrada y luego transmitido y todo lo que ingresa como paquete RF, es guardado en el buffer de salida y luego enviado por el pin 2 (Data out), ver figura 47. El modo Transparente viene por defecto en los módulos Xbee.
Figura 47. Correspondencia de Buffer POR: Junior Figueroa Olmedo
Página 31 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Este modo está destinado principalmente a la comunicación punto a punto, donde no es necesario ningún tipo de control. También se usa para reemplazar alguna conexión serial por cable, ya que es la configuración más sencilla posible y no requiere una mayor configuración. En este modo, la información es recibida por el pin 3 del módulo Xbee, y guardada en el buffer de entrada. Dependiendo de cómo se configure el comando RO, se puede transmitir la información apenas llegue un carácter (RO=0) o después de un tiempo dado sin recibir ningún carácter serial por el pin 3. En ese momento, se toma lo que se tenga en el buffer de entrada, se empaqueta, es decir, se integra a un paquete RF, y se transmite. Otra condición que puede cumplirse para la transmisión es cuando el buffer de entrada se llena, esto es, más de 100 bytes de información.
7.5. Modo de operación API Este modo es más complejo, pero permite el uso de frames con cabeceras que aseguran la transmisión de los datos, al estilo TCP. Extiende el nivel en el cual la aplicación del cliente, puede interactuar con las capacidades de red del módulo. Cuando el módulo Xbee se encuentra en este modo, toda la información que entra y sale, es empaquetada en frames, que definen operaciones y eventos dentro del módulo. Así, un frame de Transmisión de Información (información recibida por el pin 3 o DIN) incluye: • Frame de información RF transmitida. • Frame de comandos (equivalente a comandos AT). Mientras que un Frame de Recepción de Información incluye: • Frame de información RF recibida. • Comando de respuesta. • Notificaciones de eventos como Reset, Disassociate, etc. Esta API, provee alternativas para la configuración del módulo y ruteo de la información en la capa de aplicación del cliente. Un cliente puede enviar información al módulo Xbee. Estos datos serán contenidos en un frame cuya cabecera tendrá información útil referente el módulo. Esta información además se podrá configurar, esto es, en vez de estar usando el modo de comandos para modificar las direcciones, la API lo realiza automáticamente. El módulo así enviará paquetes de datos contenidos en frames a otros módulos de destino, con información a sus respectivas aplicaciones, conteniendo paquetes de estado, así como el origen, RSSI (potencia de la señal de recepción) e información de la carga útil de los paquetes recibidos. Entre las opciones que permite la API, se tienen: • Transmitir información a múltiples destinatarios, sin entrar al modo de Comandos. • Recibir estado de éxito/falla de cada paquete RF transmitido. • Identificar la dirección de origen de cada paquete recibido.
7.6. Modo IDLE Cuando el módulo no se está en ninguno de los otros modos, se encuentra en éste. Es decir, si no está ni transmitiendo ni recibiendo, ni ahorrando energía ni en el modo de comandos, entonces se dice que se encuentra en un estado al que se le llama IDLE. POR: Junior Figueroa Olmedo
Página 32 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
8. CONFIGURACIÓN DEL MÓDULO XBEE En este apartado se explicará cómo configurar los módulos para los distintos tipos de redes que soporta Xbee. Además se mostrarán algunos ejemplos de topologías de redes. Para que los cambios realizados tengan efecto se debe ingresar ATCN (sale del modo de comandos) o ATAC (aplica los cambios inmediatamente).
8.1. Direccionamiento de los módulos Los módulos permiten 2 tipos de direccionamiento. La de 16 bit y la de 64 bits. La principal diferencia es que en la de 64 bit, es posible obtener una mayor cantidad de direcciones y por lo tanto, una mayor cantidad de nodos o equipos funcionando en la misma red. Son a través de estas direcciones que los módulos se comunican entre sí. La dirección de origen de 16 bits del módulo se define arbitrariamente con el comando MY (ATMY – 16 bit Source Address). La de destino con los comandos DL (ATDL – Destination Address Low) y DH (ATDH - Destination Address High).
8.1.1. Direccionamiento de 16 bit El comando MY, define un número de 16 bit como dirección del módulo dentro de la red. El rango se encuentra entre 0x0 y 0xFFFE (la dirección 0xFFFF y 0xFFFE son para habilitar la dirección de 64-bit, por lo que si se desea utilizar direccionamiento de 16 bits, estos valores no deben ser usados). Para definirla se ingresa ATMY y el número en formato hexadecimal, pero sin el ‘0x’. Por ejemplo si a un módulo se le quiere asignar la dirección 0x3BF1 (15345 en decimal), entonces se debe ingresar el comando ATMY3BF1. El comando DL, permite definir un número de 16 bit como dirección del módulo de destino dentro de la red al cual se va a realizar la comunicación. El rango debe estar entre 0x0 y 0xFFFE (las direcciones 0xFFFE y 0xFFFF se utilizan para direccionamiento de 64 bits). Así para habilitar el direccionamiento de 16 bit, se debe utilizar una dirección menor a 0xFFFE con el comando MY, de igual modo para DL y se debe dejar en cero el comando DH=0 (ATDH0). No se permite usar la dirección 0xFFFE ni 0xFFFE para el direccionamiento de 16 bits.
8.1.2. Direccionamiento de 64 bits El número 0xFFFF y 0xFFFE del comando MY, se usa cuando se desea desactivar el direccionamiento de 16 bit, y se habilita el uso de la dirección de 64 bit. Con este direccionamiento ya no es posible definir la dirección de origen del módulo, ya que ésta se asigna automáticamente. En este caso, la dirección del módulo corresponde a su número serial, que viene de fábrica y el cual es imposible de cambiar. Este número se encuentra guardado en dos variables de 32 bit cada una (SL y SH) y es único. SL lee los 32 bit menos significativos del número serial y SH los 32 más significativos. Cuando se utiliza direccionamiento de 64 bit, para asignar una dirección de destino, se utilizan los comandos DL y DH. Éstos son de 32 bit cada uno (para el direccionamiento de 16 bit, DL se maneja como uno de 16, mientras que DH se mantiene en cero) y juntos (DL+DH) forman el número de 64 bit que debe corresponder con el número serial de otro módulo formado por SL+SH. Así para algún dato, DL debe ser igual a SL y DH debe ser igual a SH, donde SL+SH corresponden al número serial de un módulo destino configurado para direccionamiento de 64 bits. POR: Junior Figueroa Olmedo
Página 33 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Para el direccionamiento de 64 bit, se debe dejar MY como 0xFFFF (ATMYFFFF) o 0xFFFE (ATMYFFFE) y elegir una dirección de destino usando DL+DH, que debe corresponder a una dirección de 64 bit de otro módulo, indicando su número serial dado por SL+SH. Para consultar este número se debe ingresar ATSL (32 bit menos significativos) y luego ATSH (32 bit más significativos), entregando como respuesta los números seriales en formato hexadecimal.
8.2. Modo de Conexión Transparente Esta es la conexión que viene por defecto y es la forma más sencilla de configurar el módem. Básicamente todo lo que pasa por el puerto UART (DIN, pin 3), es enviado al módulo deseado, y lo recibido en el módulo, es enviado devuelta por el mismo puerto UART (DOUT, pin2). Existen básicamente 4 tipos de conexión transparente. La diferencia principal radica en el número de nodos o puntos de acceso, y la forma en que éstos interactúan entre sí.
8.2.1. Punto a Punto Es la conexión ideal para reemplazar comunicación serial por un cable. Sólo se debe configurar la dirección. Para ello se utilizan los comandos MY y el DL. La idea, es definir arbitrariamente una dirección para un módulo, usando el comando MY, el cual se va a comunicar con otro que tiene la dirección DL, también definida arbitrariamente. Con esto cada módulo define su dirección con MY, y escribe la dirección del módulo al cual se desea conectar usando DL. En este modo, el módulo receptor del mensaje envía un paquete al módulo de origen llamado ACK (viene de Acknowledgment) que indica que el mensaje se recibió correctamente. En la siguiente figura se muestra un pequeño ejemplo donde las direcciones se eligieron arbitrariamente:
Figura 48. Configuración modulo 1
Se observa que en el módulo 1, se ajustó la dirección de origen como 0x3BA2 (ATMY3BA2), mientras que la dirección de destino se asignó como 0xCC11 (ATDLCC11) que corresponde al módulo 2. En el otro módulo se observa lo siguiente:
POR: Junior Figueroa Olmedo
Página 34 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 49. Configuración modulo 2 En este módulo se asignó como dirección de origen 0xCC11 (ATMYCC11) y como dirección de destino 0x3BA2 (ATDL3BA2) que corresponde al módulo 1. La siguiente figura muestra un ejemplo gráfico de lo anterior.
Figura 50. Ejemplo direccionamiento 16 y 64 bit
En la figura 50 se muestra que la primera conexión es una punto a punto utilizando direccionamiento de 16 bit, mientras que la segunda utiliza direccionamiento de 64 bits. Una vez configurado, el módem se encuentra listo para funcionar. Así todo lo que se transmite por el pin DIN de un módulo, es recibido por el pin DOUT del otro. Para que el modo Punto a Punto funcione, los módulos deben pertenecer a la misma PAN ID y al mismo canal. Más adelante se explica cómo configurar la PAN ID y el Canal.
POR: Junior Figueroa Olmedo
Página 35 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
8.2.2. Punto a Multipunto Esta conexión, permite prestaciones extras. Se diferencia del Broadcast, en que permite transmitir información, desde la entrada serial de un módulo (DIN, pin 3) a uno o varios módulos conectados a la misma red de manera más controlada, ya que se necesitan las direcciones de los otros módulos, por lo que existe mayor seguridad. Para esto se necesitan dos comandos más aparte de MY y DL. Se utilizará el direccionamiento de 16 bits. El primer comando es el ID de la PAN (Personal Area Network- Red de Área Personal). Todos los módulos que tengan idéntico PAN ID, pertenecerán a la misma red. El comando para configurar este valor es ID, es decir, ATID, y su rango va entre 0x0 y 0xFFFF. Por ejemplo si queremos ajustar el PAN ID como 0x3332, se debe ingresar ATID3332. Este parámetro también es arbitrario, al igual que MY y DL. El otro comando corresponde al canal por el cual se va a comunicar. Según la figura 51, se disponen de 16 canales según el protocolo IEEE 802.15.4. Este estándar indica que entre cada canal, deben existir 5 MHz de diferencia, partiendo de la frecuencia base 2.405 GHz, se llegan hasta los 2.480 GHz.
Figura 51. Canales disponibles para el protocolo IEEE 802.15.4
Se observa que hay 16 canales disponibles, sin embargo, los valores se asignan desde el 11 hasta el 26. Para calcular la frecuencia central se utiliza la siguiente fórmula: Canal = 2.405 + (CH −11)×0.005
[GHz]
Donde CH equivale al número del canal entre 11 y 26. Así para cambiar de canal se utiliza el comando CH con el número de canal en formato hexadecimal. Es decir, si se desea ocupar el canal 15 (0x10), se ingresa ATCH10. La tabla 4 muestra la frecuencia central de cada canal, así como su límite inferior y superior. La elección del canal debe ser cuidadosa, ya que otras tecnologías como WI-FI o Bluetooth utilizan el mismo espectro de frecuencias, por lo que se podría producir interferencia.
POR: Junior Figueroa Olmedo
Página 36 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Tabla 4. Frecuencia de Canales y su respectivo Comando AT
Con todo lo anterior, es posible configurar una PAN y hacer una conexión punto a multipunto. La red se vería como:
Figura 52. Configuración punto-a-multipunto POR: Junior Figueroa Olmedo
Página 37 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Así en cada nodo se configura una dirección MY distinta, pero utilizando el mismo canal y el mismo PAN ID, que en la figura corresponden al canal 15 (0x10) y al ID 0x3332 de la PAN. Para que cada módulo reciba la información, debe ser estrictamente necesario que tengan tanto el mismo canal, como el mismo PAN ID. Incluso si se trabaja en Broadcast o punto a punto los módulos deben coincidir en ello. Los módulos vienen por defecto configurados con el canal 0x0C y el PAN ID 0x3332 por defecto. Esta configuración, permite enviar información más controlada, ya que es necesario pertenecer tanto al mismo canal, como a la misma red. Además para enviar información se debe ingresar la dirección del módulo de destino, por lo que es necesario el conocimiento completo de la red. En los módulos más avanzados, como Xbee PRO, el reconocimiento de la red se realiza automáticamente.
8.2.3 Broadcast Esta configuración permite el envío de información desde un nodo a varios nodos en una misma red PAN. La información recibida es la misma para todos los nodos. Para que un módulo entregue datos a todos los nodos, es necesario ajustarlo con la dirección de Broadcast. Cualquier módulo que reciba un paquete con una dirección de destino de Broadcast será aceptado. La dirección de Broadcast es:
DL=0x0000FFFF
DH=0x00000000
Esta dirección puede ser configurada en todos los nodos de la red, ya sea que estén en direccionamiento de 16 o 64 bits. Así se puede ingresar ATDH0 y ATDL0000FFFF en todos los módulos para que el modo broadcast esté habilitado. Para que este modo funcione, los módulos deben pertenecer a la misma PAN ID y al mismo canal. La figura 53 muestra una red de Broadcast en cada nodo:
Figura 53. Red de Broadcast POR: Junior Figueroa Olmedo
Página 38 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Se observa en la figura 53 la configuración de Broadcast. Si se envía algún dato por el módulo 0x0001, la información enviada será recibida por igual en el resto de los módulos (0x0002, 0x0003 y 0x0004). Del mismo modo si se envía algún dato por otro módulo, por ejemplo por el 0x0004, este dato le llegará al resto, es decir, al 0x0001, 0x0002 y al 0x0003. Cabe mencionar que este tipo de red o de envío de datos, no entrega respuesta de recibo o ACK, por lo que no es posible saber si el paquete fue entregado correctamente o si es que llegó. Si se ajusta la dirección PAN ID del módulo como ID=0xFFFF, se produce Broadcast a todas las redes PAN. Esto es, los datos son transmitidos a las distintas redes PAN, pero no se confirma la entrega de éstos (no se recibe ACK). Si se ingresa ID=0xFFFF y además DL=0xFFFF se realiza doble broadcast, es decir, además de transmitirse los datos a todas las redes PAN, el mensaje es transmitido a todos los módulos de cada una de ellas. Si se ingresa ID=0xFFFF y DL=0xAAAA (dirección arbitraria), los datos son transmitidos a todos los módulos que posean la dirección AAAA, pero que no necesariamente se encuentren en la misma red PAN.
NOTA: Por el momento, hasta el apartado 8.2.3 vamos a llegar explicando acerca de las configuraciones más conocidas y utilizadas por los módulos XBEE. Ahora nos dedicaremos a programar los módulos con los conocimientos hasta ahora adquiridos, y a realizar algunos ejemplos prácticos. Más adelante se retomará el tema de las configuraciones faltantes.
9. MANEJO Y FUNCIONAMIENTO DEL SOFTWARE X-CTU Si bien es cierto que es posible utilizar Hyperteminal de Windows para configurar un módulo Xbee, existe un programa llamado X-CTU, el cual permite realizar estas operaciones de manera más natural, fácil y rápida. El ejecutable se puede encontrar en la página oficial de Xbee (www.digi.com). Una vez instalado correctamente el software, este puede ser accedido haciendo clic sobre el icono que se encuentra en el escritorio o desde el menú de la pestaña Inicio, ver figura 54.
Figura 54. Corriendo X-CTU desde el menú Inicio POR: Junior Figueroa Olmedo
Página 39 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Al correr el programa, tú podrás observar cuatro pestañas que conforman toda ventana del software X-CTU (ver figura 55). Cada una de esas pestañas tiene una función diferente, que se explicará a continuación.
Figura 55. Ventana que se abre tras hacer clic sobre el icono X-CTU
PC Settings: Permite al usuario seleccionar el puerto COM y configurar ese puerto para adaptarse a la configuración realizada sobre el módulo XBEE. Range Test: Permite a un cliente para realizar una serie de pruebas entre dos módulos. Terminal: Permite acceder o no a los puertos COM del computador, mediante un programa de emulación. Esta pestaña también permite la posibilidad de acceder al firmware de los módulos utilizando comandos AT. Modem Configuration: Permite la posibilidad de programar las configuraciones del firmware de los módulos a través de una interfaz gráfica de usuario. Esta pestaña también permite a los clientes la posibilidad de cambiar las versiones de firmware. A continuación se va a profundizar cada una de estas pestañas.
POR: Junior Figueroa Olmedo
Página 40 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
9.1. Pestaña PC Settings Cuando el programa se inicia, por defecto, la pestaña seleccionada es la "PC Settings". La pestaña PC Settings se divide en tres áreas básicas: Com Port Setup (configuración del puerto COM), Host Setup (configuración del Host), y User Com Ports (usuario de los puertos COM). 9.1.1. COM Port Setup (Configuración del Puerto COM) La pestaña PC Settings permite al usuario seleccionar un puerto COM y configurar dicho puerto una vez seleccionado y accedido. Algunas de esas configuraciones son:
Baud Rate (Velocidad de Transmisión): Estándar y no estándar
Flow Control (Control de Flujo): Hardware, Software (Xon/Xoff), None
Data bits (Bit de Datos): 4, 5, 6, 7, and 8 data bits
Parity (Paridad): None, Odd, Even, Mark and Space
Stop bit (Bit de Parada): 1, 1.5, y 2
Para cambiar cualquiera de las opciones anteriores, seleccione el menú desplegable de la izquierda del valor y seleccionar la opción deseada. Para introducir una velocidad de transmisión no estándar, escriba la velocidad de transmisión a la izquierda del recuadro correspondiente a la etiqueta Baud Rate. El botón Test/Query (Prueba/Consulta) se utiliza para probar el puerto COM seleccionado y las configuraciones de la PC. Si las configuraciones y el puerto COM son correctos, usted recibirá una respuesta similar a la que se muestra en la Figura 56.
Figura 56. Ventana que aparece si las configuraciones del puerto están correctas
9.1.2. Host Setup (Configuración del Host) La pestaña Host Setup permite al usuario configurar la forma en que el programa X-CTU va hacer interfaz con el firmware del módulo XBEE. Esto incluye determinar si será la API o el modo de comando AT que se utilizará para acceder al firmware de los módulos, así como el carácter de modo comando adecuado y la secuencia. Por defecto, las configuraciones del Host son los siguientes: API mode (Modo API): not enabled (Not checked) Command mode Character (Caracter de Modo Comando): + (ACSII) 2B (Hex) POR: Junior Figueroa Olmedo
Página 41 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Before Guard Time: 1000 (1 Sec) After Guard Time: 1000 (1 Sec) Este es el valor por defecto de nuestros módulos XBEE. Si este no es el valor de los comandos AT, BT, o GT del módulo conectado, ingrese en el valor respectivo aquí.
9.1.3. User COM Ports (Usuarios de los Puertos COM) La opción User COM Ports permite al usuario "Añadir" o "Borrar" un usuario creado puerto COM. Esto es sólo para uso temporal. Una vez que el programa se ha cerrado, el usuario creado puerto COM desaparecerá y ya no será accesible para el programa.
9.2. Pestaña Range Test En la pestaña Range Test (ver figura 57), es posible enviar una cadena de datos de cualquier tipo para probar el rango de alcance de la señal. Esto genera automáticamente datos y los envía por el módulo, de tal forma que permite verificar cuales datos llegan buenos y cuales no y a partir de esa estadística determinar el rango o alcance de la señal.
POR: Junior Figueroa Olmedo
Página 42 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 57. Pestaña Range Test
Figura 58. Realizando un Range Test entre dos módulos XBEE
9.2.1. Paquete de Datos y Tamaño Por defecto, el tamaño del paquete de dato enviado es de 32 bytes. Este paquete de datos especificado puede ser ajustado ya sea en el tamaño o el texto enviado Para modificar el tamaño del paquete enviado, cambie el valor en la casilla que se encuentra a la lado del botón "Create Data" y haga clic en "Create Data" (véase la figura 59). Si desea modificar los datos enviados, elimine el texto que se encuentra en la ventana transmitir y escriba su texto deseado (véase la figura 59). Para comenzar hacer el Range Test de clic en el botón Start. Al modificar el texto, el tamaño del paquete de datos, el retardo de paquetes y el tiempo de recibir los datos, el usuario será capaz de simular una amplia gama de escenarios.
POR: Junior Figueroa Olmedo
Página 43 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 59. Modificando el tamaño del paquete y los datos enviados.
POR: Junior Figueroa Olmedo
Página 44 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 60. Realizando un Range Test entre dos módulos XBEE, con los nuevos parámetros
9.2.2. RSSI
La opción RSSI del X-CTU permite al usuario ver el RSSI (Received Signal Strength Indicador de Señal Recibida) de un paquete recibido cuando se realizan una serie de pruebas.
POR: Junior Figueroa Olmedo
Página 45 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 60. Realizando un Range Test entre dos módulos XBEE, con la opción RSSI habilitada
9.2.3. Función API El X-CTU también permite al usuario probar la función API de un módulo XBEE durante un Range Test (una serie de pruebas). Para llevar a cabo un Range Test con la función API del módulo, siga los pasos que se indican a continuación: 1. Configure el módulo XBEE base con la opción API habilitada y una única dirección de origen de 16 bits o 64 bits. 2. Configure el módulo XBEE remoto con una única dirección de origen y establezca la dirección de destino que debe ser igual a la dirección de origen del módulo XBEE base (más adelante cuando se haga referencia a la pestaña Modem Configuration se explicará como configurar la dirección de origen y destino). 3. Habilitar la opción API del X-CTU, que se encuentra en la pestaña PC Settings (ver figura 61) y conectar el módulo XBEE base a la PC.
POR: Junior Figueroa Olmedo
Página 46 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
4. Conecte el módulo XBEE remoto con el circuito de acople necesario (ver apartado 6) y colóquelo a una distancia apartada. 5. Introduzca cualquiera de los 16 bits o 64 bits de la dirección destino del módulo XBEE remoto dentro de la casilla correspondiente a “Destination Address” en la pestaña Range Test (véase la figura 62). 6. Cree un paquete de datos de su elección escribiendo en la casilla correspondiente a la transmisión (ver figura 62). 7. Para iniciar un Range Test, haga clic en Stara (ver figura 62). Usted notará algunos mensajes de fallas de TX, Purge, CCA, y ACK, mientras que el Range Test se lleva a cabo. Para detener un Range Test, haga clic en el botón Stop.
Figura 61. Habilitando la opción API en la Pestaña PC Settings
POR: Junior Figueroa Olmedo
Página 47 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 62. Configuración de un Range Test en modo API
9.3. Pestaña Terminal La pestaña Terminal tiene tres funciones básicas:
Terminal Emulador
Capacidad para enviar y recibir datos predefinidos (Assemble packet) Capacidad para enviar y recibir datos en formatos hexadecimal y ASCII (Show/ Hide hex) 9.3.1. El espacio principal de la ventana Terminal La porción en blanco de esta pestaña es donde la mayoría de las comunicaciones de información se producirán, mientras el X-CTU sea usado como un terminal emulador. El texto en azul es lo que se ha escrito y será enviado hacia el módulo XBEE mediante el puerto serial, mientras que el texto en rojo es la entrada de datos (respuesta) desde el módulo XBEE mediante el puerto serial (ver figura 63). POR: Junior Figueroa Olmedo
Página 48 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 63. Algunos parámetros enviados y recibidos por el módulo XBEE, utilizando la ventana principal de la pestaña Terminal
9.3.2. Assemble Packet La opción Assemble Packet que se encuentra en la pestaña Terminal está diseñada para permitir al usuario ensamblar un paquete de datos en cualquiera de los dos caracteres ASCII o hexadecimal. Esto se logra mediante la selección de la ventana Assemble Packet y eligiendo ya sea en ASCII (por defecto) o hexadecimal. Una vez seleccionado, el paquete de datos, es ensamblado escribiendo los caracteres deseados como se ilustra en la figura 64 y haciendo clic en el botón Send Data.
Figura 64. Utilizando la opción Assemble Packet, para enviar un paquete de datos tipo ASCII POR: Junior Figueroa Olmedo
Página 49 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Los indicadores de Line Status que se observan en la figura 63, muestran los estados de las lineas del control de flujo del hardware RS-232. El color verde indica que la línea esta afirmada mientras que el color negro indica por afirmar. La opción Break (ver figura 63) es para realizar el salto de línea en serie. Esto puede ser logrado chequeando o validando la opción Break. Validando el Break pondrá la línea DI en alto y evitará que los datos se envíen hacia el módulo XBEE.
9.4. Pestaña Modem Configuration La pestaña Modem Configuration tiene cuatro funciones básicas:
1. Proveer una interfaz gráfica de usuario con el firmware del módulo XBEE. 2. Leer y escribir firmware al microcontrolador interno del XBEE. 3. Descargar archivos de actualización del firmware, ya sea desde el Internet o desde un archivo comprimido.
4. Guardar o leer el perfil de un módem
POR: Junior Figueroa Olmedo
Página 50 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 65. Ventana principal de la pestaña Modem Configuration
9.4.1. Leyendo el firmware del XBEE
Para leer el firmware del módulo XBEE, siga los pasos que se indican a continuación:
1. Conecte el módulo XBEE a la tarjeta de interfaz y conéctela al puerto correspondiente de la PC (por ejemplo, USB, RS232, Ethernet, etc.)
2. Establezca en la pestaña PC Settings (véase la figura 55) las configuraciones por
defecto del módulo XBEE (o establecer los parámetros hechos al módulo en la última configuración).
3. En la pestaña Modem Configuration, seleccione "Read" que se encuentra en la etiqueta Modem Parameters and Firmware (véase la figura 66).
Figura 66. Una vez que se ha leído el Firmware del módulo XBEE
9.4.2. Haciendo cambios al Firmware del XBEE Una vez que se ha leído el firmware, los ajustes de configuración se muestran en tres colores (ver Figura 66): POR: Junior Figueroa Olmedo
Página 51 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Negro - no configurable o sólo de lectura Verde - Valor por defecto Azul – parámetros especificados por el usuario Para modificar cualquiera de los parámetros configurables por el usuario, haga clic en el comando y tipo asociado, en el nuevo valor para ese parámetro. Para facilitar la comprensión de un comando específico y una vez que el comando está seleccionado, una breve descripción junto con sus límites es presentada en la parte inferior de la pantalla. Una vez que todos los nuevos valores se han introducido, estos valores están listos para ser guardados en la memoria no volátil del módulo XBEE. 9.4.3. Escribiendo nuevos cambios del Firmware en el XBEE Para escribir los cambios de parámetros en la memoria no volátil del módulo XBEE, haga clic en el botón Write situado en sección Modem Parameters and Firmware (véase la figura 67).
Figura 67. Respuesta del módulo XBEE una vez guardados los nuevos parámetros POR: Junior Figueroa Olmedo
Página 52 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
9.4.4. Descargando Archivos de Actualizacion del Firmware. Otra función de la pestaña Modem Configuration es la que permite al usuario descargar los archivos de actualización del firmware, ya sea por Internet o instalarlos desde un disco o CD. Esto se logra mediante el siguiente proceso: 1. Clic sobre la opción Download New Versions… prevista en la sección Versions, ver figura 67. 2. Haga clic sobre Web para descargar los nuevos archivos de firmware de Internet. Caso contrario dar clic sobre File cuando los archivos de instalación se encuentran comprimidos en algún CD o guardados en un disco (ver figura 68, 69 y 70), entonces busque la ubicación del archivo guardado y haga clic en Open (ver Figura 71). 3: Haga clic en OK y Done cuando se le pida.
Figura 68. Ventana para descargar actualizaciones Figura 69. Descargando las actualizaciones desde internet
POR: Junior Figueroa Olmedo
Página 53 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 70. Una vez finalizada la descarga de todos los archivos
Figura 71. Descargando las actualizaciones desde un CD o un disco.
9.4.5. Perfiles de Módem El X-CTU tiene la capacidad de guardar y escribir perfiles módem o la configuración para los módulos XBEE. Esta función es útil en un entorno de producción cuando los mismos parámetros deben fijarse en varios módulos XBEE. Cómo guardar un perfil:
1. Establezca la configuración deseada en el firmware del módulo XBEE, tal como se describe en la sección Haciendo cambios al Firmware del XBEE.
2. Haga clic en Save (guardar) en la sección Profile (ver figura 67). 3. Escriba el nombre de este perfil en la casilla Nombre (ver figura 72). 4. Vaya a la ubicación donde desea guardar su perfil
5. Haga clic en Guardar
POR: Junior Figueroa Olmedo
Página 54 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 72. Ventana para buscar la ubicación donde se va a guardar el perfil
Cómo cargar un perfil guardado:
1. Haga clic en Load (cargar) en la sección Profile (ver figura 67). 2. Vaya a la ubicación donde se encuentra el archivo deseado y haga clic en dicho archivo (véase la figura 73).
3. Haga clic en Abrir.
POR: Junior Figueroa Olmedo
Página 55 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 73. Ventana para buscar la ubicación del perfil a utilizar
Para guardar el perfil al módulo XBEE una vez que se haya cargado el archivo, siga los pasos descritos en la sección Escribiendo nuevos cambios del Firmware en el XBEE.
9.5. Ejemplo de configuración de dos módulos XBBE usando X-CTU Este ejemplo se va a llevar a cabo, con la ayuda de nuestra tarjeta de evaluación (serial o USB), para poder comunicar los módulos XBBE con el software X-CTU. Con el siguiente ejemplo, programamos un par de módulos XBEE para que nada mas se puedan ver entre ellos, de esta manera evitamos interferencias de otros módulos que puedan existir en el ambiente aéreo. Este será nuestro primer paso para familiarizarnos con la manipulación de los XBEE. Usando la pestaña PC Settings en el programa X-CTU, seleccione el puerto COM con el circuito conectado a este. La mayoría de las veces este será el COM1. La configuración por defecto es 9600, NONE, 8, NONE y 1. A menos que haya cambiado a otra velocidad en baudios u otra configuración hecha al XBee sobre el cual usted está programando, estos ajustes por defecto deberían estar bien.
POR: Junior Figueroa Olmedo
Página 56 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 74. Configuraciones del puerto COM1
Para verificar la correcta comunicación presionar el botón Test/Query (ver figura 74) que esta sobre el panel PC Settings y si la comunicación está bien aparecerá la siguiente ventana con la información del modelo del módulo XBee que se usa y la versión del Firmware. Si esta prueba no se realizó correctamente, verifique cuidadosamente su cableado y conexiones de soldadura antes de continuar.
Figura 75. Ventana que aparece si las configuraciones del puerto están correctas
Luego, basta con programar 3 parámetros bastante sencillos para poder conectar nuestros módulos. Estos parámetros son: MY
dirección origen
DL
dirección destino
BD
baud rate (velocidad de transmisión)
Antes de modificar algún parámetro haz clic en la pestaña Read (que está en Modem Configuration) para obtener la información que tiene grabada tu modulo XBEE.
POR: Junior Figueroa Olmedo
Página 57 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 76. Configuración módulo XBEE transmisor
En la figura 76 se muestra la programación que deberá llevar el transmisor (que coincide con los parámetros leídos con el botón Read). En el parámetro MY introducimos el valor 123 y en el parámetro DL introducimos el valor 321. Esto se traduce de la siguiente manera en términos generales: nuestro transmisor se llama 123 y le transmite a nuestro receptor que se llama 321, los valores pueden ser cualesquiera, se usaron estos valores solo como un ejemplo.
Figura 77. Configuración módulo XBEE receptor
En esta imagen se muestra la programación que deberá llevar el receptor. En el parámetro MY introducimos el valor 321 y en el parámetro DL introducimos el valor 123. Esto se traduce de la siguiente manera en términos generales: nuestro receptor se llama 321 y solo recibe de nuestro transmisor que se llama 123 El ultimo parámetro a configurar es el de BD (del menú Serial Interfacing), aquí introduciremos el valor de la velocidad a la cual nuestro microcontrolador enviara y recibirá datos. Por defecto, los módulos vienen programados a 9600 baudios, basta seleccionar el parámetro al valor deseado (ver figura 78).
POR: Junior Figueroa Olmedo
Página 58 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 78. Configuración de la velocidad de transmisión tanto para el módulo XBEE transmisor y receptor
Una vez hecho todo lo anterior, haz click en la pestaña Write (ver figura 78) para que todos los cambios se queden grabados permanentemente en el modulo XBEE. Con la programación de estos 3 sencillos parámetros, nuestros módulos están listos para trabajar.
NOTA: No olvides que los módulos se alimentan con 3.3 voltios y no permiten entrada de señal que no sea de ese nivel de tensión, ya que pueden sufrir daños permanentes.
POR: Junior Figueroa Olmedo
Página 59 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
10. INSTRUCCIONES DEL SOFTWARE PIB BASIC PRO COMUNICACIONES SERIALES CON MICRONTROLADORES
PARA
En este apartado se mencionarán las instrucciones necesarias para establecer una comunicación entre dos dispositivos que incorporen comunicación serial mediante el software PIC BASIC PRO para microcontroladores. Por lo que, no se explicarán todas las instrucciones que se vayan a utilizar en la programación, es decir, que el lector debe de revisar un manual o libro de programación de PIC BASIC PRO; en el Internet puede conseguir muchos manuales en español, pero le recomiendo un manual completo que lo puede encontrar en la dirección http://www.todopic.com.ar/pbp_sp.html, el cual le servirá de guía para que comprenda el funcionamientos de los programas que más adelante se desarrollarán. Cabe de mencionar también, que el lector no está limitado a solo emplear este software de programación para microcontroladores, en el mercado existen muchos otros como Assembler, Compilador C CCS, etc…. así que el lector puede desarrollar la programación con el software que mas se le facilite, claro está, utilizando como guía los ejemplos de este documento. Ahora sí, empecemos con la explicación de las instrucciones que vamos a emplear, las cuales son: SEROUT, SERIN, SEROUT2 y SERIN2.
10.1. LA DECLARACIÓN SEROUT Esta declaración sirve para enviar datos seriales en un formato estándar asincrónico usando 8 bits de dato, sin paridad y 1 bit de parada, (8N1), y para poder utilizarlo debemos incluir al comienzo del programa la siguiente línea: INCLUDE “modedefs.bas” ;
‘incluir el programa modedefs.bas(modos de comunicación)
Esto significa incluir el programa modedefs.bas en esta línea, aquí se encuentran algunos de los parámetros para las comunicaciones, por ejemplo en nuestro caso las velocidades de transmisión que son: para dato invertido N300, N1200, N2400, N9600, y para dato verdadero: T300, T1200, T2400, T9600. Los datos invertidos por ejemplo el N2400, quiere decir que un 1 lógico vale 0V y un 0 Lógico vale 5V, en cambio para dato verdadero por ejemplo el T2400 el 1 lógico vale 5V y el 0 lógico vale 0V. Ejemplos: SEROUT portb.1, N2400,[“HOLA”];
‘enviar la palabra ASCII “HOLA” por el puerto B1 a una ‘velocidad de 2400 8N1, en dato invertido.
SEROUT portb.1, T2400,[#num,”A“];
‘enviar el contenido decimal de la variable num ‘seguido de la letra “A”, a una velocidad de 2400 ‘baudios, en dato verdadero.
SEROUT portb.1, T2400,[#123,”A“];
‘enviar “1”, “2”, “3” en formato decimal seguido ‘por la letra “A”, a una velocidad de 2400 ‘baudios, en dato verdadero.
10.2. LA DECLARACIÓN SERIN Esta declaración sirve para recibir datos seriales en un formato estándar asincrónico usando 8 bits de dato, sin paridad y 1 bit de parada, (8N1), y para poder utilizarlo debemos incluirlo igualmente que para el SEROUT la línea INCLUDE “modedefs.bas” al inicio del programa, su forma de utilizar es la siguiente: SERIN portb.0,N2400,letra ; POR: Junior Figueroa Olmedo
‘esperar un dato serial y lo guarda en la variable Página 60 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
‘previamente creada llamada letra
Es importante saber que esta declaración detiene el programa esperando a que ingrese un dato, y solamente cuando haya recibido un dato, continúa con la siguiente línea de programa, para hacer que sólo espere un determinado tiempo y luego continúe con la siguiente línea debe utilizar Timeout. Ejemplos: SERIN portb.0,N2400,Timeout, Label, letra ; ‘esperar un dato serial y lo guarda en la variable previamente creada llamada letra, si el dato no llega hasta el tiempo especificado por Timeout salta a la subrutina especificada por Label.
Timeout y Label son opciones que pueden ser incluidas para permitir al programa continuar si no se recibe un carácter durante un cierto tiempo. Timeout está especificado en unidades de 1 milisegundo. SERIN portb.0,N2400,Timeout, Label, [cadena, #num] ;
‘esperar varios datos seriales: uno correspondiente a una letra o palabra guardarlo en la variable previamente creada llamada cadena y el otro correspondiente a un valor entero guardarlo en la variable previamente creada llamada num, si el dato no llega hasta el tiempo especificado por Timeout saltar a la subrutina especificada por Label.
10.3. LA DECLARACIÓN SEROUT2 Esta declaración sirve para enviar datos seriales en un formato estándar asincrónico. SEROUT2 es similar al comando SEROUT y para poder utilizarlo debemos incluir al comienzo del programa la siguiente línea: INCLUDE “modedefs.bas” ;
‘incluir el programa modedefs.bas (modos de comunicación)
Esto significa incluir el programa modedefs.bas en esta línea, aquí se encuentran algunos de los parámetros para las comunicaciones, por ejemplo en nuestro caso las velocidades de transmisión, tal y como se muestran en la tabla 5:
Tabla 5. Velocidades de transmisión para la instrucción SEROUT2
Una cadena de constantes es enviada como una cadena de caracteres literales. Un valor numérico (constante ó variable) va a enviar el correspondiente carácter ASCII .Más aún, 13 es retorno de carro (Carriage Return ó CR) y 10 es avance de línea (Line Feed ó LF).
POR: Junior Figueroa Olmedo
Página 61 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Ejemplos: SEROUT2 portc.6, 396, ["HOLA"]; ‘enviar la palabra ASCII “HOLA” por el puerto C6 a una velocidad de 2400. Cada letra de la ‘palabra completa se envía por separado, es ‘decir “H”, “O”, “L”, “A”.
SEROUT2 portc.6, 84, [123];
‘enviar el numero 123 por el puerto C6 a una velocidad de 9600.
SEROUT2 soporta distintos modificadores, que pueden ser combinados entre sí, dentro de una declaración SEROUT2 para obtener distintos formatos, tal y como se observa en la tabla 6:
Tabla 6. Modificadores soportados por SEROUT2
Un valor numérico precedido por BIN va a enviar la representación ASCII de su valor binario. Por ejemplo, si B0=8, entonces BIN B0 va a enviar “1000” Un valor numérico precedido por DEC va a enviar la representación ASCII de su valor decimal. Por ejemplo, si B0=123, entonces DEC B0 va a enviar “123”. Un valor numérico precedido por HEX va a enviar la representación ASCII de su valor hexadecimal. Por ejemplo, si B0=254, entonces HEX B0 envía “FE”. REP seguido por un carácter y un contador, va a repetir el carácter la cantidad de veces que indique el contador. Por ejemplo, REP “0” 4 enviará “0000” STR seguido por una variable de array, y un contador opcional, va a enviar una cadena de caracteres. La longitud de la cadena está determinada por el contador ó cuando se encuentre un carácter 0 en la cadena. BIN, DEC y HEX pueden estar precedidos, ó seguidos por varios parámetros opcionales. Si alguno de ellos está precedido por una I (por indicado), la salida estará precedida por alguno de los símbolos %, #, $ para indicar que el valor siguiente es binario, decimal ó hexadecimal. Si alguno está precedido por una S (por signo), la salida estará precedida por “-“, si el bit de alto orden del dato está alto .Esto permite la transmisión de números negativos. Recuerde que todas las operaciones u comparaciones de PBP son sin signo .Sin embargo, las matemáticas sin signo pueden llevar a resultados con signo. Por ejemplo, B0= 9 – 10. El resultado de DEC B0 será “255” .Enviando SDEC B0 daría “-1”, dado que se envía el bit de alto orden.
POR: Junior Figueroa Olmedo
Página 62 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
BIN, DEC y HEX también pueden estar acompañados de un número. Normalmente, estos modificadores muestran exactamente tantos dígitos como sean necesarios (sin enviar los ceros a la izquierda). Sin embargo, si un número sigue a un modificador, SEROUT2 siempre ese número de dígitos, agregando tantos ceros al comienzo, como sea necesario. Además, ajusta cualquier bit extra de orden superior .P.ej. BIN6 8 sería enviado como “001000” y BIN2 8 como “00”. Se puede usar cualquier combinación de modificadores simultáneamente. P.ej. ISDEC4 B0. Ejemplos: SEROUT2 portc.6, 396, [DEC3 520,"HOLA"];
‘enviar el numero 520 en formato de 3 dígitos, seguido de la palabra HOLA pero enviada como caracteres literales “H”,”O”, ”L”, ”A” por el puerto C6 a una velocidad de 2400 baudios.
SEROUT2 portc.6, 396, [DEC1 1, DEC4 1520, BIN 8, BIN6 8, HEX 254, “CHAO”];
10.4. LA DECLARACIÓN SERIN2 Esta declaración sirve para recibir datos seriales en un formato estándar. SERIN2 es similar al comando SERIN y para poder utilizarlo debemos incluirlo igualmente que para el SEROUT2 la línea INCLUDE “modedefs.bas” al inicio del programa, su forma de utilizar es la siguiente:
Tabla 7. Velocidades de transmisión para la instrucción SERIN2
SERIN2 portc.7, 32, [Temperatura]
‘esperar un dato serial y lo guarda en la variable previamente creada llamada Temperatura a una ‘velocidad de 19200 baudios
Es importante saber que esta declaración detiene el programa esperando a que ingrese un dato, y solamente cuando haya recibido un dato, continúa con la siguiente línea de programa, para hacer que sólo espere un determinado tiempo y luego continúe con la siguiente línea debe utilizar Timeout, tal como funciona para SERIN. Ejemplos: SERIN2 portc.7, 32, Timeout, Label [Temperatura]
‘esperar un dato serial y lo guarda en la variable previamente creada llamada Temperatura, si el dato no llega hasta el tiempo especificado por Timeout salta a la subrutina especificada por Label.
POR: Junior Figueroa Olmedo
Página 63 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Timeout y Label son opciones que pueden ser incluidas para permitir al programa continuar si no se recibe un carácter durante un cierto tiempo. Timeout está especificado en unidades de 1 milisegundo. SERIN2 soporta distintos modificadores, que pueden ser combinados entre sí, dentro de una declaración SERIN2 para obtener distintos formatos, tal y como se observa en la tabla 8:
Tabla 8. Modificadores soportados por SERIN2
Los modificadores BIN, DEC, HEX y STR, funcionan igual como se explicaron para la instrucción SEROUT2. SKIP seguido por un contador, va a saltear esa cantidad de caracteres en el flujo de datos .Por ejemplo, SKIP 4 salteará 4 caracteres. La lista de items de datos a ser recibidos, puede estar precedida por uno ó más calificadores entre paréntesis después del WAIT. SERIN2 debe recibir estos bytes en un orden exacto, antes de recibir los datos. Si algún byte recibido no concuerda con el próximo en la secuencia de calificación, recomienza el proceso de calificación. ( p.ej. el próximo byte recibido se compara con el primer item en la lista de calificadores ). Un calificador puede ser constante, variable ó una cadena de constantes, cada carácter de una cadena es tratado como un calificador individual. WAITSTR puede ser usado como WAIT anteriormente, para forzar a SERIN2 a esperar por una cadena de caracteres de un determinado largo, antes de seguir adelante. Ejemplos: SERIN2 portc.7, 32, 2000, NODATO, [DEC3 dato1, BIN2 dato2, HEX3 dato3] ‘espera varios datos seriales por el puerto C7 en diferentes formatos DEC3, BIN2, HEX3 y los guarda en las variables previamente creadas dato1, dato2, dato3, respectivamente; si el dato no llega hasta el tiempo especificado de 2000 ms salta a la subrutina NODATO.
SERIN2 portc.7, 32, [WAIT (“A”),B0] ‘espera hasta que el carácter “A” sea recibido en forma serial por el puerto C7 y pone el próximo carácter en B0, a una velocidad de 19200 baudios
SERIN2 portc.7, 32, [SKIP 2, DEC4 B0] POR: Junior Figueroa Olmedo
Página 64 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
‘saltea 2 caracteres y toma un número decimal de 4 dígitos
SERIN2 portc.7, 32, 2000, NODATO, [WAIT(“X”,B0), STR AR]
NOTA: Para el desarrollo de los ejemplos de este documento, se hará uso de las instrucciones SERIN2 y SEROUT2, puesto que poseen ciertas prestaciones extras que las instrucciones SERIN y SEROUT, pero queda como elección del lector hacer uso de cualquiera de las instrucciones, según las facilidades y necesidades que se presenten.
11. EJEMPLOS PRIMERA PARTE Antes de empezar con la realización de los ejemplos se recomienda revisar los contenidos explicados acerca del funcionamiento y programación de los módulos XBee/XBee-PRO OEM RF, la herramienta de software gratuita (X-CTU) y el manual en español de programación de PIC BASIC PRO para microcontroladores. En la figura 79 se muestran la mayoría de los elementos y herramientas a utilizar para la realización de los ejemplos.
Figura 79. Elementos y herramientas a emplear.
Para los ejemplos que se realizarán se emplearán dos módulos XBEE, uno que va a cumplir la tarea de transmisor y otro el rol de receptor, los cuales trabajarán a una velocidad de transmisión de 2400 baudios (parámetro que puede ser cambiado si se lo desea). Los módulos han sido configurados mediante el software gráfico X-CTU, tal como se observa en las siguientes figuras 80, 81, 82 y 83:
POR: Junior Figueroa Olmedo
Página 65 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 80. Configuración del módulo XBEE transmisor
Figura 81. Configuración del módulo XBEE receptor POR: Junior Figueroa Olmedo
Página 66 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 82. Configuración de la velocidad de transmisión
Figura 83. Consideraciones para volver a utilizar la opción Test/Query POR: Junior Figueroa Olmedo
Página 67 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
11.1. EJEMPLO 1: Armar el hardware necesario y desarrollar un programa en PIC BASIC que permita leer el estado actual de un switch conectado al puerto B0, enviar inalámbricamente (haciendo uso de los módulos XBEE) el estado de ese pin (que puede ser 0 o 1) al módulo receptor y mostrarlo en un LED conectado al puerto B1. Partes y Elementos a utilizar •
2 Regletas de Protoboards
•
Conectores de alimentación
•
Una fuente variable de 5-15V DC
•
2 Reguladores de voltaje de 5V: L7805C
•
2 Reguladores de voltaje de 3.3V: LM1117T
•
2 PIC 16F877A u otro
•
2 Módulos XBee
•
2 PCB (Placa de Circuito Impreso) para colocar el XBee
•
7 LEDs (2 rojos, 2 amarillos, 3 verdes)
•
1 Switch
•
2 Cristales de 4 Mhz
•
6 Capacitores de 10 µf
•
4 Capacitores de 22 pF
•
2 Capacitores de 1 µf
•
2 Resistencias de 1 Kohm
•
7 Resistencias de 10Kohm
Utilizar los siguientes esquemas como referencia:
Figura 83. Elementos principales a emplear
POR: Junior Figueroa Olmedo
Página 68 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 84. Circuito Transmisor
Figura 85. Circuito Receptor
Cabe mencionar que las dos configuraciones anteriores permiten al módulo XBee trabajar como emisor y receptor a la vez, todo depende de la programación interna del módulo XBee para que funcione solo como emisor o receptor o ambos a la vez. Arme dos protoboards con un PIC en cada uno, tal y como se muestra en las figuras anteriores. Tendrás que añadir un regulador de 3.3 voltios en cada board, para alimentar el módulo XBee. El regulador de 3.3V utilizado en este ejemplo dispone (de izquierda a derecha) de tierra (Ground)-salida (Output)- entrada (Input), que es diferente de los 5 voltios.
POR: Junior Figueroa Olmedo
Página 69 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Figura 86. PIC16F877A funcionando con 5 voltios. XBee funcionando con 3.3 voltios del regulador (a lado izquierdo del XBEE).
Conectar los 3.3 voltios de la fuente de poder al PIN 1 de el XBee, Ground al PIN 10, RC7 del PIC al PIN 2 y RC6 al PIN 3, como se muestra. También puede añadir LEDs a los pines 6, 13 y 15 del modulo XBee para observar algunos parámetros de estado (status feedback).
El XBee está conectado a los 3.3 V de la fuente de poder y tierra común. El pin Tx del XBee esta conectado con Rx del PIC. El LED verde (diodo 1) muestra que XBee está encendido y no en modo de bajo consumo (sleep mode), el LED amarillo parpadea, excepto cuando esta en modo de comando AT, y el LED rojo se ilumina cuando hay recepción de datos de RF procedentes de otro XBee. El siguiente programa ha sido grabado en el microcontrolador PIC16F877A y es utilizado para el envío de datos:
‘PROGRAMA PARA EL CIRCUITO TRANSMISOR
‘---------------------------------------------------------------------------------------------------------------------------INCLUDE "modedefs.bas"
‘PARA EL MODO DE COMUNICACIÓN SERIAL
‘DEFINICIÓN DE VARIABLES A UTILIZAR
POR: Junior Figueroa Olmedo
Página 70 de 93
CLUB DE ROBOTICA DE LA ESPE
VELOCIDAD CON 396 PUERTOB0 VAR BYTE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO ‘VELOCIDAD DE TRANSMISIÓN EN BAUDIOS DE 2400 ‘VARIABLE PUERTOB0 PARA GUARDAR EL ESTADO DEL PORTB.0
‘-----------------------------------------------------------------------------------------------------------------------------------------------‘PROGRAMA PRINCIPAL
MAIN:
PUERTOB0 = portb.0 IF PUERTOB0==1 THEN SEROUT2 portc.6, VELOCIDAD, [DEC1 1] PAUSE 10 ELSE SEROUT2 portc.6, VELOCIDAD, [DEC1 0] PAUSE 10 ENDIF
GOTO MAIN ‘-----------------------------------------------------------------------------------------------------------------------------------------------
Programa el otro microcontrolador utilizando este código de recepción: ‘PROGRAMA PARA EL CIRCUITO RECEPTOR
‘---------------------------------------------------------------------------------------------------------------------------INCLUDE "modedefs.bas"
‘PARA EL MODO DE COMUNICACIÓN SERIAL
‘DEFINICIÓN DE VARIABLES A UTILIZAR
VELOCIDAD CON 396 DATO VAR BYTE SERIALMENTE
OUTPUT PORTB.1 TIEMPO_ESPERA CON 2000
‘VELOCIDAD DE TRANSMISIÓN EN BAUDIOS DE 2400 ‘VARIABLE DONDE SE VA A GUARDAR EL DATO ENVIADO ‘POR EL CRICUITO TRANSMISOR ‘PORTB.1 COMO SALIDA DIGITAL ‘ES EL TIMEOUT PARA LA INSTRUCCIÓN SREIN2 DE 2000
ms
‘-----------------------------------------------------------------------------------------------------------------------------------------------‘PROGRAMA PRINCIPAL
MAIN: SERIN2 PORTC.7, VELOCIDAD,TIEMPO_ESPERA, NODATO, [DEC1 DATO] IF DATO==1 THEN HIGH PORTB.1 ENDIF
‘ENCIEDE EL LED COLOCADO EN EL PORTB.1
IF DATO==0 THEN LOW PORTB.1 ENDIF
‘APAGA EL LED COLOCADO EN EL PORTB.1
NODATO: GOTO MAIN ‘----------------------------------------------------------------------------------------------------------------------------------------------POR: Junior Figueroa Olmedo
Página 71 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Para la comprobación del funcionamiento, conecte un interruptor al pin RB0 del board de envio, y un LED verde (diodo 4) al RB1 del board receptor. Cierre el interruptor y el LED debería encenderse. NOTA: Para restablecer el XBee, sólo tiene que llevar el pin de reset XBee (patilla 5) a nivel bajo (GND) por un momento.
EJEMPLO 2: : Realizar un programa en PIC BASIC que permita leer el valor de un switch conectado al puerto B0 del microcontrolador, si portb.0 es 1 enviar inalámbricamente (haciendo uso de los módulos XBEE) el número 200 y la palabra “HOLA”, caso contrario si portb.0 es 0 enviar el número 400 y la palabra “CHAO” al módulo receptor. En el circuito receptor se debe leer serialmente la información enviada por el transmisor y mostrar en un LCD. Utilizar los siguientes esquemas como referencia.
CIRCUITO TRANSMISOR
‘PROGRAMA PARA EL CIRCUITO TRANSMISOR ‘---------------------------------------------------------------------------------------------------------------------------INCLUDE "modedefs.bas"
‘PARA EL MODO DE COMUNICACIÓN SERIAL
‘DEFINICIÓN DE VARIABLES A UTILIZAR VELOCIDAD CON 396 PUERTOB0 VAR BYTE
‘VELOCIDAD DE TRANSMISIÓN EN BAUDIOS DE 2400 ‘VARIABLE PUERTOB0 PARA GUARDAR EL ESTADO DEL PORTB.0
‘-----------------------------------------------------------------------------------------------------------------------------------------------‘PROGRAMA PRINCIPAL MAIN: POR: Junior Figueroa Olmedo
Página 72 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
PUERTOB0 = portb.0 IF PUERTOB0==1 THEN SEROUT2 portc.6, VELOCIDAD, [DEC3 200, “HOLA”] PAUSE 10 ELSE SEROUT2 portc.6, VELOCIDAD, [DEC3 400, “CHAO”] PAUSE 10 ENDIF GOTO MAIN ‘-----------------------------------------------------------------------------------------------------------------------------------------------
Circuito receptor para la visualización de los datos enviados por circuito transmisor
‘PROGRAMA PARA EL CIRCUITO RECEPTOR
‘---------------------------------------------------------------------------------------------------------------------------INCLUDE "modedefs.bas"
‘PARA EL MODO DE COMUNICACIÓN SERIAL
‘DEFINICIÓN DE CONSTANTES Y VARIABLES A UTILIZAR DEFINE LCD_DREG DEFINE LCD_DBIT
PORTB 4
‘DEFINE PINES DEL LCD B4 A B7 ‘EMPEZANDO DESDE EL PUERTO B4 HASTA B7
DEFINE LCD_RSREG PORTB
‘DEFINE EL PUERTO B PATA CONECTAR EL BIT RS
DEFINE LCD_RSBIT 3
‘ESTE ES EL PUERTO B3
POR: Junior Figueroa Olmedo
Página 73 de 93
CLUB DE ROBOTICA DE LA ESPE DEFINE LCD_EREG DEFINE LCD_EBIT
PORTB 2
VELOCIDAD CON 396
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO ‘DEFINE EL PUERTO B PATA CONECTAR EL BIT ENABLE ‘ESTE ES EL PUERTO B2
‘VELOCIDAD DE TRANSMISIÓN EN BAUDIOS DE 2400
DATO VAR WORD LETRA1 VAR BYTE LETRA2 VAR BYTE LETRA3 VAR BYTE LETRA4 VAR BYTE TIEMPO_ESPERA CON 2000
‘ES EL TIMEOUT PARA LA INSTRUCCIÓN SREIN2 DE 2000 ms
‘-----------------------------------------------------------------------------------------------------------------------------------------------‘PROGRAMA PRINCIPAL MAIN: SERIN2 PORTC.7, VELOCIDAD,TIEMPO_ESPERA, NODATO, [DEC3 DATO, LETRA1, LETRA2, LETRA3, LETRA4] LCDOUT $FE,1,"NUMERO: ",DEC3 DATO ‘LIMPIE EL VISOR DEL LCD Y SAQUE LA FRASE “NUMERO: " EN LA PRIMERA LÍNEA DEL LCD JUNTO CON EL VALOR DE LA VARIABLE DATO LCDOUT $FE,$C0,"PALABRA: ", LETRA1, LETRA2, LETRA3, LETRA4 PAUSE 1000 ‘MUESTRE LA FRASE “PALABRA: ” EN LA LINEA 2 DEL LCD, JUNTO CON EL DATO GUARDADO EN LAS VARIABLES LETRA1, LETRA2, LETRA3, LETRA4. NODATO: GOTO MAIN ‘-----------------------------------------------------------------------------------------------------------------------------------------------
Otra forma de haber recibido la palabra “HOLA” es por medio de la utilización de arreglos, con la finalidad de no crear las 4 variables una para cada letra. Primero se debe crear una variable de tipo array, en este caso la llamaremos FRASE y se la define como sigue: FRASE VAR BYTE [4]
‘CREA UN ARREGLO DE 4 ELEMENTOS, EMPEZANDO DEL
ELEMENTO 0 AL 3
Para la recepción con la instrucción SERIN2, tenemos: SERIN2 PORTC.7, VELOCIDAD,TIEMPO_ESPERA, NODATO, [DEC3 DATO, FRASE(0), FRASE(1), FRASE(2), FRASE(3)]
Para la visualización de los datos en el LCD, tenemos: LCDOUT $FE,$C0,"PALABRA: ", FRASE(0), FRASE(1), FRASE(2), FRASE(3)
POR: Junior Figueroa Olmedo
Página 74 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
EJEMPLO 3: Realizar un programa en PIC BASIC que permita realizar un comunicación bidireccional entre dos módulos XBEE. El módulo 1 debe leer el valor de un switch conectado al puerto B0 del microcontrolador, si portb.0 es 1 enviar inalámbricamente el número 200 y la palabra “HOLA”, caso contrario si portb.0 es 0 enviar el número 400 y la palabra “CHAO” al módulo 2. El módulo 2 debe leer el valor de un switch conectado al puerto B0 del microcontrolador, si portb.0 es 1 enviar inalámbricamente el número “1”, caso contrario si portb.0 es 0 enviar inalámbricamente el número “0” al módulo 1, y ese valor debe ser visualizado en un LED colocado en el puerto A2 del microcontrolador del módulo 1. Además el módulo 2 debe leer serialmente la información enviada por el módulo1 y mostrar esos datos en un LCD. Utilizar los siguientes esquemas como referencia.
Configuración para el Módulo 1 ‘PROGRAMA PARA EL CIRCUITO DEL MÓDULO 1 ‘---------------------------------------------------------------------------------------------------------------------------INCLUDE "modedefs.bas"
‘PARA EL MODO DE COMUNICACIÓN SERIAL
‘DEFINICIÓN DE VARIABLES A UTILIZAR VELOCIDAD CON 396
POR: Junior Figueroa Olmedo
‘VELOCIDAD DE TRANSMISIÓN EN BAUDIOS DE 2400
Página 75 de 93
CLUB DE ROBOTICA DE LA ESPE PUERTOB0 VAR BYTE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO ‘VARIABLE PUERTOB0 PARA GUARDAR EL ESTADO DEL PORTB.0
CMCON = 7
‘CONVIERTE EN DIGITAL TODO EL PUERTO A
DATO VAR BYTE
‘VARIABLE EN LA CUAL SE VA A GUARDAR EL VALOR ENVIADO POR EL
MODULO 2 TIEMPO_ESPERA CON 2000 OUTPUT PORTA.2
‘ES EL TIMEOUT PARA LA INSTRUCCIÓN SREIN2 DE 2000 ms ‘PUERTO POR DONDE SE VA A VISUALIZAR EL ESTADO DEL SWITCH
DEL MODULO 2 ‘HACIENDO USO DE UN LED ‘-----------------------------------------------------------------------------------------------------------------------------------------------‘PROGRAMA PRINCIPAL MAIN:
PUERTOB0 = portb.0 IF PUERTOB0==1 THEN SEROUT2 portc.6, VELOCIDAD, [DEC3 200, “HOLA”] PAUSE 10 ELSE SEROUT2 portc.6, VELOCIDAD, [DEC3 400, “CHAO”] PAUSE 10 ENDIF
NODATO: SERIN2 PORTC.7, VELOCIDAD,TIEMPO_ESPERA, NODATO, [DEC1 DATO] IF DATO==1 THEN HIGH PORTA.2 ELSE LOW PORTA.2 ENDIF GOTO MAIN ‘-----------------------------------------------------------------------------------------------------------------------------------------------
POR: Junior Figueroa Olmedo
Página 76 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Configuración para el Módulo 2
‘PROGRAMA PARA EL CIRCUITO DEL MÓDULO2
‘---------------------------------------------------------------------------------------------------------------------------INCLUDE "modedefs.bas"
‘PARA EL MODO DE COMUNICACIÓN SERIAL
‘DEFINICIÓN DE CONSTANTES Y VARIABLES A UTILIZAR DEFINE LCD_DREG
PORTB
DEFINE LCD_DBIT
4
‘DEFINE PINES DEL LCD B4 A B7 ‘EMPEZANDO DESDE EL PUERTO B4 HASTA B7
DEFINE LCD_RSREG PORTB
‘DEFINE EL PUERTO B PATA CONECTAR EL BIT RS
DEFINE LCD_RSBIT 3
‘ESTE ES EL PUERTO B3
DEFINE LCD_EREG
‘DEFINE EL PUERTO B PATA CONECTAR EL BIT ENABLE
DEFINE LCD_EBIT
PORTB 2
VELOCIDAD CON 396
‘ESTE ES EL PUERTO B2
‘VELOCIDAD DE TRANSMISIÓN EN BAUDIOS DE 2400
DATO VAR WORD LETRA1 VAR BYTE LETRA2 VAR BYTE LETRA3 VAR BYTE LETRA4 VAR BYTE TIEMPO_ESPERA CON 2000 PUERTOB0 VAR BYTE
‘ES EL TIMEOUT PARA LA INSTRUCCIÓN SREIN2 DE 2000 ms ‘VARIABLE PUERTOB0 PARA GUARDAR EL ESTADO DEL
PORTB.0 ‘------------------------------------------------------------------------------------------------------------------------------------------------
POR: Junior Figueroa Olmedo
Página 77 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
‘PROGRAMA PRINCIPAL MAIN: SERIN2 PORTC.7, VELOCIDAD,TIEMPO_ESPERA, NODATO, [DEC3 DATO, LETRA1, LETRA2, LETRA3, LETRA4] NODATO: LCDOUT $FE,1,"NUMERO: ",DEC3 DATO ‘LIMPIE EL VISOR DEL LCD Y SAQUE LA FRASE “NUMERO: " EN LA PRIMERA LÍNEA DEL LCD JUNTO CON EL VALOR DE LA VARIABLE DATO LCDOUT $FE,$C0,"PALABRA: ", LETRA1, LETRA2, LETRA3, LETRA4 PAUSE 1000 ‘MUESTRE LA FRASE “PALABRA: ” EN LA LINEA 2 DEL LCD, JUNTO CON EL DATO GUARDADO EN LAS VARIABLES LETRA1, LETRA2, LETRA3, LETRA4. PUERTOB0 = PORTB.0 IF PUERTOB0 == 1 THEN SEROUT2 portc.6, VELOCIDAD, [DEC1 1] PAUSE 10 ELSE SEROUT2 portc.6, VELOCIDAD, [DEC1 0] PAUSE 10 ENDIF GOTO MAIN ‘-----------------------------------------------------------------------------------------------------------------------------------------------
POR: Junior Figueroa Olmedo
Página 78 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
EJEMPLO 4: Realizar un programa en PIC BASIC que permita realizar un comunicación bidireccional entre un módulo XBEE y la PC. Para el envío y recepción de datos desde la PC utilice el X-CTU o cualquier otro software que tenga un funcionamiento parecido al Hyperterminal. El módulo XBBE 1 debe estar conectado al puerto COM1 mediante la tarjeta de interfaz y se encargará de enviar un número que no exceda al valor de 65535 junto con una palabra que no exceda las 6 letras, además este módulo se encarga de recibir cualquier dato enviado por el módulo XBBE 2. El módulo XBEE 2 debe de recibir los datos enviados por el módulo 1 y mostrarlos en un LCD, otra función que debe cumplir este módulo es la de enviar la frase “DATO RECIBIDO POR EL XBEE 2” una vez que se haya recibido la información previa.
Configuración del módulo XBBE 2
‘PROGRAMA PARA EL MODULO XBBE2
‘---------------------------------------------------------------------------------------------------------------------------INCLUDE "modedefs.bas"
‘PARA EL MODO DE COMUNICACIÓN SERIAL
‘DEFINICIÓN DE CONSTANTES Y VARIABLES A UTILIZAR DEFINE LCD_DREG DEFINE LCD_DBIT
PORTB 4
‘DEFINE PINES DEL LCD B4 A B7 ‘EMPEZANDO DESDE EL PUERTO B4 HASTA B7
DEFINE LCD_RSREG PORTB
‘DEFINE EL PUERTO B PATA CONECTAR EL BIT RS
DEFINE LCD_RSBIT 3
‘ESTE ES EL PUERTO B3
DEFINE LCD_EREG
‘DEFINE EL PUERTO B PATA CONECTAR EL BIT ENABLE
DEFINE LCD_EBIT
PORTB 2
POR: Junior Figueroa Olmedo
‘ESTE ES EL PUERTO B2
Página 79 de 93
CLUB DE ROBOTICA DE LA ESPE
VELOCIDAD CON 396
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
‘VELOCIDAD DE TRANSMISIÓN EN BAUDIOS DE 2400
DATO VAR WORD LETRA VAR BYTE [6] TIEMPO_ESPERA CON 2000
‘ES EL TIMEOUT PARA LA INSTRUCCIÓN SREIN2 DE 2000 ms
‘-----------------------------------------------------------------------------------------------------------------------------------------------‘PROGRAMA PRINCIPAL MAIN: SERIN2 PORTC.7, VELOCIDAD,TIEMPO_ESPERA, NODATO, [DEC DATO, LETRA(0), LETRA(1), LETRA(2), LETRA(3), LETRA(4), LETRA(5)] LCDOUT $FE,1,"NUMERO: ",DEC DATO ‘LIMPIE EL VISOR DEL LCD Y SAQUE LA FRASE “NUMERO: " EN LA PRIMERA LÍNEA DEL LCD JUNTO CON EL VALOR DE LA VARIABLE DATO LCDOUT $FE,$C0,"PALABRA: ", LETRA(0), LETRA(1), LETRA(2), LETRA(3), LETRA(4), LETRA(5) PAUSE 1000 ‘MUESTRE LA FRASE “PALABRA: ” EN LA LINEA 2 DEL LCD, JUNTO CON EL DATO GUARDADO EN LAS VARIABLES LETRA(0), LETRA(1), LETRA(2), LETRA(3), LETRA(4), LETRA(5) SEROUT2 PORTC.6, VELOCIDAD,["DATO RECIBIDO POR EL XBEE 2"] ‘ENVIE SERIALMENTE LA FRASE “DATO RECIBIDO POR EL XBEE 2” NODATO: GOTO MAIN ‘-----------------------------------------------------------------------------------------------------------------------------------------------
Ahora vamos a utilizar el XCTU para realizar la comunicación con el módulo XBBE 1, sguiendo los siguientes pasos:
1. Correr el X-CTU y verificar que la comunicación con el módulo XBEE 1 esté correcta, para lo cual en la pestaña PC Settings dar clic en el botón Test/Query.
2. Dirigirse a la pestaña Terminal y dar clicl en el botón Assemble Packet (ver figura).
POR: Junior Figueroa Olmedo
Página 80 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
3. En la ventana Send Packet escribir el número y la palabra deseada y dar clic en el botón Send Data, tal y como se muestra en la figura. 4. Una vez realizado lo anterior se realiza la transferencia y recepción de datos, teniendo en el X-CTU lo que se muestra en la figura.
POR: Junior Figueroa Olmedo
Página 81 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Para terminar la comunicación presionar el botón Close. Ahora vamos a utilizar el software, en este caso el que utilizo para realizar la programación de los microcontroladores MicroCode Studio – PICBASIC PRO, que cuenta con una ventana para comunicación serial, para esto presione en la pantalla de MicroCode F4 o abra View/Serial Comunicator y configuramos los parámetros que necesitamos, en este caso 2400/N/8/1, tal y como se observa en la figura.
POR: Junior Figueroa Olmedo
Página 82 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Para este ejemplo debemos seleccionar el puerto COM1 que vamos a utilizar, luego la velocidad que se transmiten los datos, en este caso a 2400 baud, paridad ninguna, 8 bits de datos y 1 stop bit, una vez que estemos listos para iniciar la comunicación presionamos el botón a Connected…
y notará en la parte inferior izquierda que decía Ready cambia
Ahora ya estamos listos para enviar y recibir los datos requeridos (ver figura).
POR: Junior Figueroa Olmedo
Página 83 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Para terminar la comunicación presionar el símbolo
POR: Junior Figueroa Olmedo
.
Página 84 de 93
CLUB DE ROBOTICA DE LA ESPE
POR: Junior Figueroa Olmedo
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Página 85 de 93
CLUB DE ROBOTICA DE LA ESPE
POR: Junior Figueroa Olmedo
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Página 86 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
REFERENCIAS 1. REYES, Carlos, “Microcontroladores Programación en BASIC: PIC 16F862X, 16F81X, 16F87X”, 3era Edición, Volumen1, Ecuador, 2008. 2. Manual de programación para PicBasic PRO Compiler (Español): http://www.todopic.com.ar/pbp_sp.html 3. Documento que señala las características generales de los módulos XBEE (Español): http://www.c-stamp.com/Documents/Documentation/CS47300Xd2.pdf 4. Dispositivos Electrónicos y de Cómputo DEC. GUÍA RÁPIDA PARA LA PROGRAMACIÓN DE LOS MODULOS DE RF ZIGBEE BIDIRECCIONALES (TRANSCEIVERS) (Español): http://www.decelectronics.com/html/XBEE/XBEE.htm 5. Guía de Usuario en español para el manejo de los módulos XBEE (Español): POR: Junior Figueroa Olmedo
Página 87 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
http://www.olimex.cl/pdf/Wireless/ZigBee/XBee-Guia_Usuario.pdf 6. Manual de Usuario en inglés para el manejo de los módulos XBEE (Inglés): http://ssdl.stanford.edu/ssdl/images/stories/AA236/0708A/Lab/Rover/Parts/xbeeproproduc tmanual.pdf http://ftp1.digi.com/support/documentation/90000982_A.pdf 7. Página del fabricante (Digi, antes MaxStream) (Inglés): http://www.digi.com/products/wireless/point-multipoint/xbee-series1-module.jsp 8. Procedimiento para actualizar el firmware (Inglés): http://itp.nyu.edu/~raf275/meshnetworking/XBee/XBee_firmware_upgrade.html http://www.libelium.com/squidbee/index.php?title=Uploading_XBee_firmware 9. Artículos muy completos y con ejemplos acerca de los módulos XBEE (Inglés): http://www.circuitcellar.com/library/print/0906/Eady194/Eady-194.pdf http://www.libelium.com/squidbee/index.php?title=Software 11. Esquema eléctrico para hacer una placa de desarrollo para comunicaciones Zigbee con tu ordenador “Convertidor RS232/Zigbe”, de una forma sencilla y económica a través del puerto RS232 (Español): http://www.ray-ie.com/webray_019.htm 12. Esquema eléctrico para hacer una placa de desarrollo para comunicaciones Zigbee con tu ordenador “Xbee Explorer USB”, de una forma sencilla y económica a través del puerto USB. (Inglés): http://www.olimex.cl/product_info.php?products_id=417 13. Página donde se puede descargar el software y la documentación necesaria para hacer uso de la herramienta de programación X-CTU (Inglés): http://www.digi.com/support/productdetl.jsp?pid=3352&osvid=57&tp=4&s=316 14. Proyectos de Rob Faludi que involucran XBee. Ejemplos del manejo de los módulos XBEE con microcontroladores (Inglés): http://www.faludi.com/itp_coursework/meshnetworking/XBee/ http://www.faludi.com/itp_coursework/meshnetworking/XBee/XBee_example.html http://www.faludi.com/itp_coursework/meshnetworking/XBee/XBee_Receive_Example.pde http://www.faludi.com/itp_coursework/meshnetworking/XBee/XBee_program_Arduino_wire less.html http://itp.nyu.edu/~jl2515/sustain/xbee.htm 15. El libro de Tom Igoe: Making Things Talk, que enseña como manejar módulos para comunicación inalámbrica haciendo uso de los microcontroladores (Inglés): http://www.8051projects.net/forum-t22743-last.html POR: Junior Figueroa Olmedo
Página 88 de 93
CLUB DE ROBOTICA DE LA ESPE
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
http://oreilly.com/catalog/9780596510510/preview.html http://oreilly.com/catalog/9780596510510/chapter/MakingThingsTalk_Chapter1.pdf http://books.google.com.ec/books? id=K0nLbhWrTukC&dq=Tom+Igoe+Making+Things+Talk&printsec=frontcover&source= bn&hl=es&ei=PbhXSom-Jduntgf7gqTdCg&sa=X&oi=book_result&ct=result&resnum=4
POR: Junior Figueroa Olmedo
Página 89 de 93
CLUB DE ROBOTICA DE LA ESPE
POR: Junior Figueroa Olmedo
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Página 90 de 93
CLUB DE ROBOTICA DE LA ESPE
POR: Junior Figueroa Olmedo
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Página 91 de 93
CLUB DE ROBOTICA DE LA ESPE
POR: Junior Figueroa Olmedo
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Página 92 de 93
CLUB DE ROBOTICA DE LA ESPE
POR: Junior Figueroa Olmedo
MODULOS DE RADIOFRECUENCIA XBee/XBee-PRO
Página 93 de 93