ZigBee: ¿complejidad y sencillez unidas?

por Ricardo Vega el 10/09/2014

Hoy acabo con mi pequeña trilogía de protocolos inalámbricos. En anteriores episodios (que seriéfilo) hemos hablado de EnOcean y Z-Wave pero hoy para acabar, tenemos un protocolo inalámbrico generalista como es ZigBee y que también se ha empleado y se emplea en domótica.

ZigBee es una tecnología de comunicación que basa sus niveles de enlace y radio en el estándar IEEE 802.15.4 Para el resto de niveles no hay un estándar internacional, pero, de igual manera que EnOcean y Z-Wave, existe la ZigBee Alliance que se encarga de mantener la interoperabilidad en los niveles superiores al enlace.

ZigBee es una tecnología ampliamente usada, tanto en entornos profesionales como de aficionados. La Alianza ZigBee (mayor que las de Z-Wave y EnOcean) cuenta con más de 200 miembros. Dado el volumen de ventas de dispositivos ZigBee, sus módulos pueden ser más baratos.

ZigBee: ¿complejidad y sencillez unidas? #domótica.

[Tweet]

ZigBee es un conjunto de protocolos mucho más sofisticado que Z-Wave. Las especificaciones, mucho más largas, son públicas. Sin embargo, para obtenerlas hay que aceptar un compromiso de confidencialidad, pues no está permitido usar la información para fines comerciales (no se pueden vender productos si no estás en la Alianza). Sin embargo, sí que permiten el estudio de ZigBee para ámbitos universitarios o para realizar pruebas técnicas.

arquitectura-zigbee

A pesar de ser un protocolo más complejo (sobretodo a nivel de red), no lo es tanto usarlo ni desarrollar aplicaciones usando ZigBee. Los miembros de la Alianza reciben unas bibliotecas donde está implementada toda la parte común ZigBee, de manera que sólo hay que preocuparse de implementar los objetos de aplicación.

Niveles OSI implementados en ZigBEE

Nivel físico (PHY) 802.15.4

Este nivel proporciona el servicio de transmisión de datos sobre el medio físico y su gestión. Las frecuencias pueden estar en una de las tres bandas:

  • 868 - 868,8 MHz. En Europa, hasta tres canales.
  • 902 - 928 MHz. En EEUU y Canadá, hasta 30 canales.
  • 2400 - 2483,5 MHz. En todo el mundo, hasta 16 canales.

El estándar se ha ido extendiendo y se han ido definiendo cada vez más medios físicos. Algunos de ellos son:

  • 2400 MHz basado en DSSS con modulación OQPSK, alcanza hasta 250 kbps.
  • 868 y 915 MHz basado en DSSS, con modulación BPSK, alcanza hasta los 250 kbps.
  • 868 y 915 MHz basado en DSSS, con modulación OQPSK.
  • 868 y 915 MHz basado en PSSS, con una combinación de modulación binaria y ASK.

logo-zigbee

Nivel de enlace (MAC) 802.15.4

Este nivel gestiona el medio físico, ofreciendo servicios de control, regulación del acceso al medio y balizado, y el servicio de datos. Controla también las asociaciones entre nodos y la validación de las tramas, garantiza las ranuras de tiempo y ofrece puntos de enganche para los servicios seguros, usando claves simétricas y listas de control de acceso.

Nivel de red (NWK)

El nivel de red soporta trabajar en tres topologías: estrella, árbol y malla.

En estrella, toda la red la mantiene el coordinador ZigBee. Todos los demás dispositivos (llamados dispositivos finales) se comunican directamente con el coordinador.

En las topologías en árbol y en malla, el coordinador ZigBee todavía existe, pero con el papel de crear la red y escoger ciertos parámetros. La red se puede extender usando enrutadores ZigBee. En la topología en árbol, en enrutamiento es jerárquico; en cambio, en la topología en malla, se permite una comunicación totalmente punto a punto.

Este nivel controla el nivel MAC y proporciona una interfaz apropiada a la capa de aplicación.
Para interactuar con el nivel de aplicación, este nivel incluye dos servicios:

  • NLDE: Network Layer Data Entity, proporciona el servicio de transmisión de datos.
  • NLME: Network Layer Management Entity, proporciona el servicio de gestión. Este servicio también puede usar el NLDE para algunas tareas.

Descripción funcional

Este nivel, a grandes rasgos permite:

  • Mantenimiento de red: esto incluye crear una nueva red, descubrir redes, registrarse en una red, mantener la tabla de vecinos, asignación de direcciones distribuida, asignación de direcciones estocástica, resolución de conflictos de direcciones, cambiar el coordinador de una red.
  • Transmisión y recepción.
  • Enrutamiento.

Sólo los dispositivos que están asociados a una red ZigBee pueden enviar tramas desde el nivel de red. Cuando se va a enviar una trama desde este nivel, se pasa, si se requiere, por el servicio de seguridad, que se encarga de cifrar los datos usando CCM y AES.

Todas las tramas se envían con un número de secuencia, para dar soporte a mensajes fragmentados. También tienen una dirección de origen y destino. La dirección de destino puede ser individual o de grupo. Las tramas se pueden enviar a un único dispositivo (unicast), a un grupo (multicast) o a todos los dispositivos de la red (broadcast).

ZigBee
domótica

Para recibir datos, el dispositivo debe activar antes el hardware de recepción. Cuando el receptor está activo, el nivel de red (a través del nivel MAC) empieza a recibir tramas. A cada trama recibida se le debe restar 1 del número de saltos (llamado ''Radius''). Si este número llega a cero como resultado de este decremento, en ningún caso podrá retransmitirse la trama; sin embargo sí que se puede interpretar aunque el campo Radius alcance el valor cero. Las tramas que se harán llegar al nivel superior deben cumplir las siguientes condiciones:

  • Si es una trama broadcast, la dirección usada debe concordar con la dirección broadcast de la red de la cual el dispositivo es miembro.
  • Si la trama es unicast, la dirección destino debe concordar con la dirección del dispositivo.
  • Si la trama es multicast, el identificador de grupo debe ser el de algún grupo al que el dispositivo pertenezca.

A continuación se detallan algunos de los aspectos más importantes del nivel de red ZigBee.

Direccionamiento en el protocolo ZigBee

Asignación de direcciones distribuida

Este mecanismo permite que los dispositivos ZigBee tomen una dirección de red sin necesidad de configurarla manualmente. La asignación se produce jerárquicamente, siguiendo una estructura con forma de árbol. Cada padre decide las direcciones de sus hijos.

Este tipo de asignación de direcciones está diseñado para dotar de un bloque de direcciones a cada posible nodo padre en la red ZigBee. El coordinador determina el número máximo de nodos hijo que un nodo padre puede tener. De estos hijos, hay un máximo que pueden ser routers, el resto deben ser dispositivos finales. Cada dispositivo tiene asociada una profundidad en la jerarquía, que indica el mínimo de saltos que un telegrama debe dar para llegar hasta el Coordinador ZigBee (el coordinador tiene profundidad cero). El coordinador determina también la profundidad máxima en la red ZigBee.

Asignación de direcciones estocástica

Con este principio de direccionamiento, los dispositivos deciden su dirección autónomamente, calculándola de forma aleatoria. El controlador ZigBee siempre tendrá la dirección cero.

Cuando un nodo decide su dirección no tiene razón por la cual deba liberarla, a menos que reciba una notificación de que la dirección ya está en uso.

NLME

Este nivel permite realizar tareas de gestión y mantenimiento de la red ZigBee.

Aquí sólo se enumerarán algunos de los servicios más importantes que ofrece la NLME:

  • Descubrir redes ZigBee.
  • Crear una red ZigBee.
  • Registrarse en una red ZigBee.
  • Iniciar funciones de enrutado ZigBee.
  • Salir de una red ZigBee.
  • Reiniciar dispositivo ZigBee.

Todos los servicios tienen los tres tipos de mensaje request, confirm e indication.

Direccionamiento en grupo

Este nivel también da soporte al direccionamiento en grupo. Para ello, mantiene una tabla que permite que los endpoints se asocien con grupos y permite que las tramas dirigidas a grupos se entreguen selectivamente a los endpoints del nivel superior.

Transmisión y recepción de datos

Las tramas de este nivel deben incluir el endpoint de origen y endpoint de destino, salvo en el caso de las tramas enviadas a grupos, que contendrán el endpoint de origen y la dirección de grupo de destino.

En recepción, este nivel se encarga de recoger la información contenida en la trama y dejarla disponible en el endpoint correspondiente para que el nivel superior acceda a ella.
Las tramas se pueden enviar requiriendo acuse de recibo o sin requerirlo.

Como se ha visto, este protocolo es mucho más versátil, pero también más complejo. El trabajo de los fabricantes se centra en el Application Framework, donde se implementan los perfiles ZigBee. De este modo, los fabricantes no deben ocupar su tiempo en implementar los niveles inferiores. Esto hace, a pesar de la complejidad del protocolo, que no sea especialmente difícil desarrollar un dispositivo ZigBee.

El problema es de nuevo el consumo. Aunque ZigBee se ha diseñado con el consumo energético en mente, no ha sido una de sus prioridades. ZigBee es muy interesante por sus capacidades de enrutamiento y en generar por su nivel de red y aplicación (APS) tan robusto.

Existen varios fabricantes de módulos ZigBee (Atmel, Digi, Microchip, etc.) y cada uno ofrece prestaciones diferentes y múltiples gamas entre las que elegir. El consumo de los módulos está entre los 148 mW y los 165 mW. Para la versión de alta potencia de ZigBee el consumo se dispara hasta los 709 mW, aunque tiene un alcance en campo abierto de aproximadamente 1,5 Km.

Desde mi punto de vista, ZigBee no está pensado para comunicaciones domóticas sino para otro tipo de actividades como control de drones, comunicaciones punto a punto, redes de sensores, etc. Recientemente, se han alcanzado los 1000 productos con certificación Zigbee, lo que da cuenta del gran número de usos que tiene.

Está claro que es un protocolo muy eficaz. Es flexible y aunque es complejo, trabajar con él no es demasiado complicado. Sus elevadas prestaciones también se ven repercutidas en un elevado consumo, por lo que una vez más la autonomía es un punto complicado.

Con él, acabamos esta serie de protocolos inalámbricos. ¿Que opinas de él? Para ti, ¿cuál es el más eficaz? ¿Te gustaría que ampliara información sobre alguno en concreto? Puedes utilizar los comentarios para responder a estas preguntas y/o dejarme sugerencias de próximos temas a tratar.

No te olvides tampoco de compartir este enlace con tus amigos! Gracias!

Apoya al blog


Si te ha gustado este artículo, valora apoyarme económicamente a través de Patreon, una plataforma de Micro-mecenazgo con la que puedes hacerme un donativo que ayude a la continuidad del blog. Una pequeña ayuda significa mucho. 😃

Permanezcamos en contacto!


¿Quieres enterarte de todas las novedades del sector? ¿Te gustaría trabajar conmigo? ¡Puedes contactar conmigo de forma muy sencilla!