Si alguna vez has usado los módulos XBee de Digi para ZigBee, es muy probable que te hayas encontrado con la siguiente situación:

Tienes dos dispositivos con el último firmware cargado. Uno de ellos es el Coordinador, el otro un Router o End-Device. Están en la misma PAN, y has configurado correctamente la dirección de destino de ambos, pero no se hablan. Es muy frustrante, parece que nada de lo que haces tiene resultado.

Son muchos los parámetros que se pueden ajustar, y por tanto muchas las posibles causas del problema. A continuación, describo una lista con algunos pasos que me han servido para diagnosticar este case.

  • Si estás usando un Arduino FIO, recuerda que NO puedes usar la UART para otras cosas (es decir, no debes usar Serial al mismo tiempo). Usa SoftwareSerial en su lugar.
  • Antes de nada, procura restaurar los valores por defecto del chip. Sobre todo si lo reutilizando de otro proyecto. Para ello, desde la herramienta X-CTU: Click Botón Derecho -> Show defaults. Guarda los cambios.
  • Si usas EasyXBee o IceC con el endpoint de XBee, recuerda que los niveles de la API deben ser los correctos:
    • API Level 1 para el PC
    • API Level 2 para los nodos Arduino
  • Asegúrate de que los dos dispositivos usan el mismo canal. Aunque el canal no se puede cambiar directamente (lo elige el coordinador), sí se puede forzar su actualización en el Router o En-Device. Para ello:
    • Activa el flag «Channel Verification», JV=1. Esto hará que el dispositivo compruebe que hay un coordinador en su PAN. Si no es el caso, rota por los canales buscándolo.
    • Cambia el PAN id, para forzar una búsqueda del canal. Prueba con uno que no exista, y luego con el de la red a la que quieres conectarte.
    • Opcionalmente, cuando haya encontrado el canal adecuado, vuelve a dejar la configuración JV a su valor por defecto (DISABLED).
  • Asegúrate de que el canal que hayas elegido no lo está usando otra red ZigBee próxima.
  • Si usas EasyXBee, comprueba que puedes encontrar los dispositivos con «xbee-discover«. Haz los cambios permanentes con «xbee-config -s«.