Introducción a la Comunicación Inalámbrica con Módulos XBee S2C

Introducción

Bienvenidos a este tutorial paso a paso sobre cómo configurar tu módulo XBee S2C. Empezaremos con una introducción al módulo y luego te guiaré a través del proceso de configuración para una configuración Punto a Punto, una conexión Broadcast y como usar los pines digitales del XBee como entradas.

¿Qué es XBee S2C?

El XBee S2C es un módulo de radiofrecuencia fabricado por Digi International. Utiliza la tecnología Zigbee para establecer conexiones de red de área personal inalámbrica de baja potencia.

Estos módulos son conocidos por su capacidad para crear redes de malla (mesh networks), en las cuales los datos pueden saltar por múltiples nodos para llegar a su destino, lo que proporciona una gran cobertura y confiabilidad. Además, su bajo consumo de energía los hace ideales para aplicaciones controladas a batería.

A continuación te presentamos algunos conceptos que proporcionarán la base para la configuración y uso de estos módulos, permitiéndonos configurar y personalizar nuestra red de acuerdo a nuestras necesidades específicas.

Coordinador, Router, y End Device en los módulos XBee:

  • Coordinador XBee: En módulos XBee, el coordinador es el módulo que inicia la red. Se encarga de escoger el canal para la transmisión y asigna las direcciones a los módulos que se unen a la red. Sólo puede haber un coordinador en cada red.

  • Router XBee: Un router XBee puede transmitir y recibir datos de otros módulos. Estos módulos pueden unirse a una red existente y ayudar a aumentar la cobertura de la red permitiendo que los datos se "salten" de un módulo a otro.

  • End Device XBee: Un end device XBee es utilizado principalmente para transmitir datos pero no puede retransmitir datos de otros módulos. Es muy útil en aplicaciones de bajo consumo de energía, ya que puede entrar en estado de suspensión para economizar energía cuando no está transmitiendo o recibiendo datos.

Conexión Punto a Punto y Broadcast en módulos XBee:

  • Punto a Punto: En la conexión punto a punto, un módulo XBee se comunica directamente con otro módulo XBee. Este tipo de conexión se utiliza generalmente para la comunicación entre dos módulos específicos.

  • Broadcast: En la conexión broadcast, un módulo XBee envía un mensaje a todos los módulos dentro del mismo PAN ID. Este tipo de conexión es útil cuando se necesita enviar el mismo mensaje a todos los módulos en la red.

Configurando el XBee S2C

Antes de poder usar tu módulo XBee S2C, necesitas configurarlo correctamente. A continuación, te muestro cómo hacerlo.

Materiales necesarios

Para seguir este tutorial, necesitarás:

Instala el software XCTU

Primero, deberás instalar el software XCTU en tu ordenador. Esto es lo que usarás para configurar tu módulo XBee. Descarga e instala XCTU desde el enlace proporcionado.

Sigue los pasos del asistente, podria requerir instalar drivers adicionales (opcional, ya que no son necesarios para el XBee S2C).

Conecta tu módulo XBee

Conecta tu módulo XBee a tu computadora utilizando el adaptador USB XBee o tu placa de desarrollo compatible. Una vez hecho esto, abre el software XCTU. En la interfaz de XCTU, ubica y haz clic en el icono representado con una lupa. Esto te permitirá ver los puertos disponibles. Selecciona el puerto al que está conectado tu módulo XBee y, posteriormente, haz clic en el botón "Siguiente".

En la configuración del puerto serie  puedes dejar los parámetros por defecto.
El software XCTU procederá a buscar los módulos disponibles. Una vez que haya localizado tu módulo, podrás añadirlo a la lista de dispositivos seleccionando el botón "Add selected devices".

Configurar los módulos XBee

En XCTU, selecciona tu módulo y luego haz clic en el botón 'Read' para leer la configuración actual del módulo. A continuación, puedes modificar la configuración según tus necesidades.

En nuestra primera configuración, estableceremos una conexión punto a punto utilizando un módulo configurado como coordinador y otro como router. Para realizar esta configuración, puedes conectar ambos módulos a la misma computadora y abrir dos ventanas del software XCTU.

Esto se debe a que, en un paso de la configuración, necesitarás el Número de Serie Alto (Serial Number High - SH) y el Número de Serie Bajo (Serial Number Low - SL) de cada módulo. Estas ventanas separadas de XCTU te permitirán visualizar y copiar fácilmente estos valores entre módulos para configurar correctamente las direcciones de destino.

Configurar el módulo como Coordinador

  1. Busca la opción 'CE (Coordinator Enable)'. Configúrala en 'Coordinator [1]'. Esto estipula que este módulo funcionará como el coordinador.

  2. Encuentra la opción 'ID (PAN ID)' y establece su valor en '2000' (puedes usar cualquier valor de ID entre 0 y 0xFFFE). Esto especifica la red a la que el módulo se unirá o creará.

  3. Busca la opción 'DH (Destination Address High)' y 'DL (Destination Address Low)'. Estos deben coincidir con la dirección de tu módulo router. La dirección del módulo router se puede encontrar en las opciones SH (Serial Number High) y SL (Serial Number Low) del módulo router.

  4. Haz clic en el botón 'Write' para escribir las nuevas configuraciones al módulo.

Configurar el módulo como Router

  1. Conecta el módulo XBee que deseas configurar como router.

  2. En XCTU, selecciona este módulo.

  3. Haz clic en el botón 'Read' para leer la configuración actual del módulo.

  4. Al igual que antes, encuentra la opción 'ID (PAN ID)' y establece su valor en '2000'.

  5. Busca la opción 'JV (Channel Verification)'. Configúrala en 'Enabled [1]', Con esto, tu módulo router ahora verificará el canal de la red en busca de un coordinador.
  6. Busca la opción 'DH (Destination Address High)' y 'DL (Destination Address Low)'. Estos deben coincidir con la dirección de tu módulo coordinador. La dirección del módulo coordinador se puede encontrar en las opciones SH (Serial Number High) y SL (Serial Number Low) del módulo coordinador.
  7. Haz clic en el botón 'Write' para escribir las nuevas configuraciones al módulo.

Enviando y recibiendo mensajes entre módulos XBee

Abre la terminal en XCTU en las dos ventanas correspondientes a tus módulos configurados como coordinador y router. Establece la conexión con el botón de "Open", en esta terminal, puedes escribir y enviar mensajes de un módulo a otro.

 

Esto hace posible tener un intercambio de datos en ambas direcciones entre tus módulos XBee, permitiéndote implementar una amplia gama de aplicaciones de comunicación inalámbrica.

 

Conexión tipo broadcast

Para establecer una comunicación de tipo broadcast con módulos XBee, necesitas configurar las direcciones de destino (Destination Address) de tu módulo emisor a la dirección de broadcast.

La dirección de broadcast es un valor especial que indica que cualquier mensaje enviado a esa dirección debe ser recibido por todos los módulos en la red. En el caso de los módulos XBee, la dirección de broadcast es 0xFFFF.

Por lo tanto, los pasos para configurar una comunicación de tipo broadcast serían:

  1. Abre XCTU y selecciona el módulo coordinador.

  2. Haz clic en el botón 'Read' para leer la configuración actual del módulo.

  3. Encuentra las opciones 'DH (Destination Address High)' y 'DL (Destination Address Low)'. Configura 'DH' a 0x0000 y 'DL' a 0xFFFF. Esto establece la dirección de destino a la dirección de broadcast.

  4. Haz clic en el botón 'Write' para escribir las nuevas configuraciones al módulo.

Ahora, cualquier mensaje que envíes desde este módulo será recibido por todos los módulos de la red que tengan el mismo PAN ID. De esta forma, puedes usar la comunicación de tipo broadcast para enviar el mismo mensaje a múltiples módulos XBee a la vez.

En la configuracion del router cambia lo siguiente:

 Abre la consola serial para comprobar que puedes enviar y recibir datos.

Activando las entradas digitales

Configurar las entradas digitales y activar el modo API en módulos XBee es un proceso sencillo utilizando el software XCTU.

El modo API es un método de comunicación que permite un control más avanzado sobre las capacidades del módulo que el modo AT (Transparente). En lugar de solo enviar y recibir datos, el modo API permite al usuario enviar comandos específicos para controlar las diferentes funciones del módulo, como leer o configurar los parámetros del módulo, y tener un control más detallado sobre la transmisión y recepción de datos.

Los comandos y respuestas en el modo API se estructuran en tramas de datos que tienen un formato específico. Esto permite una comunicación más compleja y versátil con el módulo XBee, pero también requiere un procesamiento adicional de las tramas de datos en comparación con el modo AT.

Para el siguiente paso usaremos las mismas configuraciones del ejemplo de conexión Broadcast, cambiando los parámetros que se indican a continuación.

Activar las entradas digitales DIO0-DIO3 en el Router

  1. Abre XCTU y selecciona tu módulo router.
  2. Haz clic en el botón 'Read' para leer la configuración actual del módulo.
  3. Localiza las opciones para DIO0, DIO1, DIO2 y DIO3.
  4. Configura cada una de estas opciones a '3 - Digital Input'. Esto establecerá los pines correspondientes como entradas digitales.
  5. Busca la opción 'IR (IO Sampling Rate)'. Este valor se establece en milisegundos. Por ejemplo, para tomar una muestra 100ms, debes ingresar '64' que es el equivalente hex de 100 en decimal.
  6. Haz clic en el botón 'Write' para escribir las nuevas configuraciones al módulo.

Activar el modo API en el Coordinador

  1. Abre XCTU y selecciona tu módulo coordinador.
  2. Haz clic en el botón 'Read' para leer la configuración actual del módulo.
  3. Localiza la opción 'AP (API Enable)'. Configura este valor a '1 - API Enable'.
  4. Haz clic en el botón 'Write' para escribir las nuevas configuraciones al módulo.

Conexión

Conecta el módulo configurado como router a los botones:

  1. Conexión de los botones: Conecta un lado de cada botón a una de las entradas DIO0-DIO3 en el módulo XBee.

  2. Conexión a tierra (GND): Conecta el otro lado de cada botón a tierra (GND).

  3. Conexión a VCC: Conecta la terminal VCC a una fuente de 3.3V.
  4. Conexión a GND: Conecta la terminal GND a GND.

Conecta el módulo configurado como coordinador:

  1. Monta el XBee en el socket del adaptador USB (No conectes el cable USB).
  2. Conecta la terminal RX al pin 10 del Arduino.
  3. Conecta la terminal TX al pin 11 del Arduino.
  4. Conecta la terminal GND a GND del Arduino.
  5. Conecta la terminal 5V a 5V del Arduino.

El módulo XBee puede enviar una trama de datos, cuando está configurado en modo API (Interfaz de Programación de Aplicaciones). Esta trama de datos incluye varias secciones como el delimitador de inicio, la longitud, el tipo de trama, los datos en sí y un checksum para la verificación de errores. Los datos dentro de la trama pueden contener información variada, como comandos, respuestas a comandos, información de estado o datos de los pines de entrada/salida del módulo tal como se describe en: XBee-Quick-Reference-Guide.

Carga el siguiente código al Arduino que utiliza la biblioteca SoftwareSerial para establecer una comunicación con un módulo XBee. Si recibe el delimitador de inicio de una trama de datos XBee (0x7E), imprime el byte entrante en la consola serial en formato hexadecimal. Continúa leyendo y mostrando los bytes hasta que ha procesado una trama completa de 22 bytes.

 

 Abre el monitor serie a 9600 baudios para ver la trama que es recibida y que coincide con la documentación.

Ahora carga el siguiente código que  busca la trama de datos, representada por el delimitador de inicio 0x7E. Cuando se han leído más de 19 bytes de la trama, lo que indica que ha llegado a los datos de los pines DIO, el código descompone y muestra el estado de cada pin DIO. Esto continúa hasta que se ha procesado una trama completa, momento en el que se restablece el conteo de bytes y se inicia la búsqueda de la próxima trama.

Abre el monitor serial y prueba a presionar los botones, el estado logico de los pines debe cambiar, ten en cuenta que cuando los botones no estén presionados, las entradas DIO leerán '1' debido a las resistencias de pull-up internas. Cuando se presionen los botones, las entradas DIO deberían leer '0'.

Conclusiones 

En este tutorial, hemos explorado cómo configurar y utilizar módulos XBee para establecer una comunicación inalámbrica en diferentes modos: punto a punto, broadcast y mediante el uso de funciones digitales de entrada. Las capacidades de estos módulos, como el coordinador y el router, junto con el modo API, nos permiten configurar y personalizar nuestra red acorde a nuestras necesidades específicas.

Hemos observado cómo el código Arduino puede ser utilizado para interactuar con los módulos XBee, leer tramas de datos y desglosar la información contenida en ellas.

Esto demuestra la flexibilidad y el poder de los módulos XBee para la comunicación inalámbrica. Ya sea que estés trabajando en un proyecto de IoT, en una red de sensores inalámbricos o simplemente necesites una forma eficiente de comunicación inalámbrica punto a punto, los módulos XBee ofrecen una solución robusta y versátil.

 

 

Productos Relacionados

Ver artículo

Ver artículo

Ver artículo

ArduinoRadio

Deja un comentario