¿ Qué es IEEE802.15.4 ?

Pre-Introducción
Los estándares IEEE802 son documentos que determinan el funcionamiento de algún protocolo de comunicación de áreas locales. Estos documentos son discutidos y publicados por la IEEE. Algunos ejemplos de protocolos de comunicación para alguien que no sabe absolutamente nada del tema:
  • IEEE802.3: Mejor conocido como Ethernet.
  • IEEE802.15.1: Mejor conocido como Bluetooth.
  • IEEE802.11: Mejor conocido como Wi-Fi.
  • IEEE802.15.4: Conocido por IEEE802.15.4, tema del que se hablará en las siguientes secciones.
Suena complicado, pero IEEE802.15.4 es otro protocolo de comunicación, que podría llegar a ser de gran relevancia si es IoT llega a serlo algún día.

Es necesario tener múltiples tipos de protocolos porque cada uno de estos tienen distintas ventajas y desventajas. Algunos son alámbricos, otros inalámbricos, otros necesitan de hardware caro, otros son de baja energía, otros son más complicados que otros (utilizan más memoria, por ejemplo), etc.
Introducción
Dentro del mundo de los protocolos de comunicación el protocolo de comunicación inalámbrico IEEE802.15.4 es de gran relevancia en el marco del Internet of Things (IoT).

En este blog, por simplicidad, se analizará la versión 2003 de IEEE802.15.4. Existen 2 revisiones más nuevas (2006 y 2011) que agregan más capas físicas, otras formas de seguridad y de sincronización, sin embargo, las versiones nuevas son todas compatibles con la versión 2003 y muchas de capacidades agregadas en las versiones nuevas no son muy usadas.

Las características principales de IEEE802.15.4-2003 son:

  • Inalámbrico: utiliza las bandas libres 2.4GHz y 868/915 MHz.
  • Bajo consumo: IEEE802.15.4 fue diseñado con esto en mente. Motivo por el cual es de interés en el IoT y dispositivos a base de baterías.
  • Bajo ancho de banda: 250 kbps para 2.4GHz y 40kbps o 20kbps para 868/915MHz.
  • Corta distancia: 40m linea vista aproximadamente en 2.4GHz y 120m para 868/915MHz.
  • Comunicaciones punto a punto o tipo estrella.
P2P y estrella
Las comunicaciones en IEEE802.15.4 pueden ser punto a punto (P2P) o estrella. IEEE802.15.4 normalmente es usado como protocolo P2P, ya que este da mayor flexibilidad a protocolos que pueden ser usados sobre este (protocolos mesh). Ejemplos de protocolos mesh, que utilizan IEEE802.15.4 son: ZigBee, Thread, Z-Wave, entre otros. Además, la comunicación P2P suele ser mucho más simple de manejar.

Para entender cómo funciona este protocolo, se puede comenzar estudiando los frames que se utilizan para la comunicación. Los más usados son data frames y acknowledgement frames (ACK). Los otros dos frames, los command frames y los beacon frames, no son muy usados ya que estos suelen ser reemplazados por protocolos que corren sobre IEEE802.15.4 utilizando data frames, hay excepciones para command frames, que son usados en comunicaciones P2P.

Frames
Comenzando por los data frames, estos son usados para transmitir información genérica. Y tienen el siguiente formato:

data frame ieee802.15.4

El frame tiene el PHY payload (SHR+PHR), el cual no es de interés nuestro, ya que no se maneja por el usuario de ninguna forma (en palabras burdas, hace que la comunicación física entre dispositivos funcione). Y existe el PSDU, estos son los bytes que se controlan por el microcontrolador o lo que sea esté usando la radio.

El PSDU, se divide en las siguientes partes:

  • Frame Control: El frame control indica el formato en el cual se va a mandar la información. Tales cómo: el tipo de frame (data, command, ack, beacon, etc). Qué direcciones van a estar presentes en Addressing Fields (el destino, el origen y si utiliza direcciones de 16 o 64 bit). Si es que la información está encriptada. Si es que se quiere que la información sea respondida por un ACK frame, etc.
  • Sequence Number: Es simplemente un byte que asocia un número a un frame, se utiliza por ejemplo, para que la información no se duplique (igual se duplica, pero no tan fácil) y también para que el ACK frame pueda responder a un frame en particular.
  • Addressing Fields: El tamaño y el contenido de esta area está determinado por Frame Control. En IEEE802.15.4, existen dos formas de saber el origen y destino de la información. Primero, cada dispositivo puede tener asociado una dirección de 64 bits (siempre) y una de 16 bits (opcional). Este es el equivalente a la dirección de 48 bits MAC de ethernet. La segunda manera de conocer el origen o el destino es mediante una dirección que es utilizada para englobar un conjunto de dispositivos llamada personal area network identifier (PAN-ID) que es común a varios dispositivos. Por ejemplo, si una aplicación necesita N subconjuntos de dispositivos, estos conjuntos podrían estár separados por su PAN-ID. El PAN-ID puede ser pensado como el SSID en una red WiFi (un conjunto de dispositivos conectados a una misma red).
  • Data Payload: Simplemente la información que se desea enviar. Puede estar encriptada dependiendo de la seguridad (determinada en frame control)
  • FCS: Un CRC de 2 bytes que es utilizado para verificar que la información recibida no tiene inconsistencias. Las radios suelen agregar y verificar el FCS de manera automática.
Cómo comenzar a utilizar o probar IEEE802.15.4 ?
La forma más simple de utilizar el hardware es comprando plataformas de desarrollo que incluyen un transceiver IEEE802.15.4 o 2.4GHz:

  • ATSAMR21XPRO
  • nRF52480
  • FRDM-KW41Z
  • CC2650
Para poder utilizarlos rápidamente, se puede utilizar RIOT (ver introducción a RIOT aquí). Hay ejemplos existentes en el cual no se tiene que escribir ninguna línea de código para probar las capacidades de estas plataformas.
Más información sobre IEEE802.15.4
Para aterrizar IEEE802.15.4 sin tener el hardware, es leyendo los datasheet de las radios IEEE802.15.4, los cuales son simples de entender. Algunos buenos ejemplos:

  • AT86RF233 (ATMEL)
  • MRF24J40 (MICROCHIP)
  • MCR20A (NXP)
Otra opción es descargando el estándar:

  • IEEE802.15.4-2003
  • IEEE802.15.4-2006
  • IEEE802.15.4-2011