Archivo de la Categoría “Zigbee”

 
Hace ya bastante tiempo puse algunos artículos sobre modulitos zigbee, los ahora llamados XBee ZB de Digi, (distribuida por Matrix en España). Hoy voy a comentar un nuevo modulito (en realidad tiene ya unos meses) similar a los Xbee que vimos en su día, pero en esta ocasión para la banda de 868MHz (recordad que los zigbee de digi trabajan a 2.4GHz).
 
El módulo en cuestión se llama Xbee PRO 868. Es pin a pin compatible con el resto de modulitos Xbee, aunque no es zigbee ni admite repetidores. Es un módulo pensado para comunicaciones punto-punto o punto-multipunto pero con una característica destacable, el largo alcance.

xbee-868

 
Hoy me voy a centrar en esta característica, en concreto en un “white paper” que han publicado los de Digi respecto a las pruebas de alcance que han hecho con estos modulitos. Y es que algo que a todos nos gusta tener como referencia cuando empezamos un diseño con equipos de comunicaciones de radiofrecuencia es  ¿cuánto alcance tiene realmente? ¿alguien ha comprobado la máxima distancia de un enlace? ¿cómo lo ha hecho exactamente y qué elementos (antenas, …) ha utilizado?
 
Pues bien, aquí pongo las pruebas de alcance que han hecho los chicos de Digi con los XBee PRO 868 y que yo os pongo aquí gustoso para vuestro uso y disfrute.
 
Lee el resto de esta entrada »

Etiquetas: ,

Comments 8 Comentarios »

Buenas a todos. Ante todo feliz nuevo año 2008. Hace unos días publiqué la primera parte de un artículo práctico sobre Zigbee, hoy veremos la segunda. En esta ocasión veremos el programita, llamémosle entrenador, que viene con el kit de desarrollo de Maxstream. Un software llamado X-CTU.

Pero antes, vamos a acabar de ver unas pocas preguntas / respuestas que el otro día, para no extenderme, no puse.
 
 
17.- He oído que Zigbee maneja direcciones de 16bits y 64bits. ¿Eso es así?

Cada módulo Zigbee, al igual que ocurre con las direcciones MAC de los dispositivos ethernet, tiene una dirección única. En el caso de los modulitos Zigbee cada uno de ellos tiene una dirección única de 64bits que viene grabada de fábrica. Por otro lado, la red Zigbee, utiliza para sus algoritmos de routeados las direcciones de 16 bits. Cada vez que un dispositivo se asocia a una red Zigbee, el Router padre al cual se asocia le asigna una dirección única en toda la red de 16bits. Por eso el número máximo teórico de elementos que puede haber en una red Zigbee es de 2^16 = 65535, que es el nº máximo de direcciones de red que se pueden asignar.


18.- Y entonces, si tenemos direcciones de 16 y 64 bits, ¿cual he de utilizar con los modulos de Maxstream? porque además las direcciones de 16bits no son fijas, es decir, en caso de rehacerse la red éstas pueden cambiar ¿no? Que lío …

Si trabajas con comandos AT, las direcciones que debes utilizar son las de 64bits, es decir, tu con los comandos ATDH y ATDL establecerás la dirección destino (los 4 bytes altos y los 4 bytes bajos) del dispositivo al que quieres enviar la información. El módulo internamente ya se encargará de descubrir, si es que no la tiene almacenada en una tabla interna temporal de una transmisión previa, cual es la dirección de 16bits que tiene el dispositivo al que pretende enviar información. Para ello envía un broadcast a la red. Si utilizas el modo API puedes utilizar también las direcciones de 64 bits, pero si quieres, puedes indicarle también la dirección de red de 16bits, ya que por ejemplo, puedes tenerlas almacenadas en la memoria del micro con el que controlas el módulo, de esa manera, ganarás en velocidad.

Bueno, ahora os pondré un pequeño vídeo que he hecho para que veáis el software X-CTU. Para ello he utilizado dos modulitos, un coordinador y un router. Si en el vídeo del antículo antenior no pudísteis apreciar bien los modulitos, podéis hacer clic en la imágen siguiente y la veréis ampliada:
 

zigbee-xbee-mini.gif
 

Y aquí os pongo el vídeo en formato flash. Haz clic en la imagen para visualizarlo:
 

video-zigbee-xctu.gif


Espero que os haya resultado interesante. Otro día más
;-)
 
P.D. He incorporado en el lateral de la página una casilla de subscripción gratutita a los artículos de mi blog, tanto por RSS como por email, para quien le interese. Salu2.
 

Comments 191 Comentarios »

Hoy voy a hablar un poco de Zigbee desde un punto totalmente práctico. Hay mucha gente que sabe lo que es Zigbee, incluso un poco a nivel teórico, pero muchos tienen una idea un tanto difusa de cómo llevarlo a la práctica. Voy a poner un par de artículos de este tema en dos entregas y espero que quien tenga actualmente dudas o simplemente no tenga claro cómo llevarlo a la práctica, tras la lectura, tenga totalmente claro qué hacer para montar un sistema Zigbee.

Como digo es totalmente práctico, si no sabes lo que es Zigbee te aconsejo que leas unos articulillos teóricos que puse ya hace tiempo en el blog sobre Zigbee y luego continues la lectura a partir de aquí.

Voy a utilizar un kit de desarrollo de Zigbee de MaxStream (distribuido en España por Matrix). Los módulos que vienen en este Kit de desarrollo son módulos llamados XBee Serie2 (con la serie 2 podemos hacer redes mesh, con la serie 1 no. Ya veremos en otra ocasión cuando elegir Xbee serie1 y cuando Xbee serie2, pero te avanzo que para trabajar con Zigbee necesitas la serie 2).

Os pongo un pequeño vídeo (que he hecho de forma rápida) con lo que viene en un kit de desarrollo Zigbee de Maxstream, pues ésto es mejor verlo que leerlo ;-) :
 
 
 

 
 

Creo que la mejor forma de entender cómo utilizar estos módulos Zigbee va a ser a través del método pregunta / respuesta. Ahí van:
 
 
1.- Estoy pensando en hacer una aplicación RF y barajo usar Zigbee, pero me han dicho que es muy complicado, ¿es así?
 
En absoluto. La verdad es que es bastante sencillo utilizando los módulos de Maxstream. Toda la complejidad de las tramas Zigbee recae sobre el módulo. Tú, simplemente enviando unos comandos AT vía serie puedes crear complejas redes zigbee y comunicar tus equipos a través de ellas (me atrevería a decir que casi sin saber de Zigbee). Personalmente hace ya mucho tiempo probé un kit de desarrollo Zigbee de Chipcon. Utilizar aquello sí que era complicado :-( ,  nada que ver con esto, palabra.
 

2.- ¿Qué alcance tienen estos modulitos?
 
Pues como siempre depende. Dependerá de si utilizas un módulo con antena chip integrada, o con antena dipolo integrada o con conector UFL para antena externa, de si tienes obstáculos o no, de si está pegado al suelo o a cierta altura (fresnel), … Como máximo, en un entorno urbano con obstáculos pueden llegar hasta unos 40m, y 120m si no hay obstáculos, pero como digo, depende de muchas variables, como con cualquier dispositivo RF.
 

3.- Bueno, ya he visto el kit desarrollo en el vídeo, muy bonito, pero ¿cómo me comunico con estos módulos?
 

Pues la forma de comunicarte con estos modulitos es a través de una comunicación serie por una uart. Puedes comunicarte de dos maneras, con comandos AT (modo transparente) o modo API (modo no transparente). Este modo de funcionamiento se configura con un parámetro de configuración.
 
 
4.- ¿Y qué diferencia hay entre el modo de funcionamiento por comandos AT y API?
 

En modo Comandos AT (transparente) puedes configurar el módulo a través de simples comandos AT. Ejemplo, imaginemos que queremos enviar datos desde nuestro módulo Zigbee A a un módulo Zigbee B con dirección X.  En modo transparente, enviamos el comando +++ por el puerto serie del módulo A y el módulo saldrá de modo datos para entrar en modo comandos. Establecemos entonces un parámetro con la dirección destino X del módulo B y salimos del modo comandos al modo datos. A partir de entonces, todos los datos que enviemos por el puerto serie del módulo A saldrán por el puerto serie del módulo B.

El modo API es algo más complicado. No existe el modo datos y modo comandos. Se utiliza un protocolo, es decir, nos comunicamos con los módulos mediante unas tramas con su cabecera, datos, final de trama, … es decir, con un protocolo.
 
 
5.- Entonces, si el modo API es más complicado ¿para qué sirve?
 

Con el modo API tendremos más control. Es decir, si enviamos una trama de A a B y ésta no llega, obtendremos un código de error. Si necesitamos enviar datos a distintos equipos de la red (distintas direcciones destino), si utilizamos el modo Comandos AT, tendremos que estar continuamente saliendo a modo comandos, cambiar la dirección destino, volver a modo datos y enviar los datos, así continuamente. Muy lento. En modo API la dirección destino forma parte de la trama, por lo que es mucho más rápido comunicarnos con varios equipos.
 
 
6.- ¿Todos los módulos son iguales? Es decir, en el vídeo has dicho que hay 5 módulos Zigbee, pero no si son Coordinadores, Routers o End devices ¿son distintos equipos o se pueden configurar para que actúen de un modo u otro?

El kit lo componen 1 Coordinador y 4 Routers / End devices. La diferencia hay que verla desde el punto de vista del firmware. El firmware del módulo que hace de Coordinador es distinto al firmware de los Routers o de los End devices. El fimware de los módulos Routers o End devices sí que es el mismo.

 
 7.- Y si el firmware de un Router y de un End device es el mismo, ¿cómo puedo hacer que un módulo se comporte de una manera u otra?

Pues con un parámetro de configuración. Si configuras al módulo para bajo consumo, esto es, para que duerma y se despierte cada X segundos, el módulo se convierte automáticamente en End device, en cambio si siempre está online, el módulo actúa como Router.
 

8.- ¿Y en base a qué decido configurar un equipo como Router o como End device?

Si tus equipos van a funcionar con pilas, y quieres que te duren, deberás configurarlos como End device, de esa manera los equipos pueden trabajar en modo Sleep (bajo consumo). Si algunos de tus equipos pueden obtener la alimentación de la red, configúralos como Routers.
 

9.- Hay una cosa que no entiendo. Si configuro un módulo como End device, es decir, si lo configuro para que entre en modo sleep y me quiero comunicar con él desde otro dispositivo de la red Zigbee, si está durmiendo, no va a hacer caso a las tramas que le envíe, ¿no?
 

Un End device siempre está asociado a un Router (o a un Coordinador, pero recordemos que tras iniciar la red se comporta como un Router). Un End device no hace nada mientras está durmiendo, pero cuando despierta hace un polling al Router al cual está asociado para saber si hay algo para él. Y es que los Routers almacenan temporalmente en una tabla interna las tramas que le llegan a sus dispositivos asociados, de esa manera cuando un End device asociado a un determinado Router despierta y le pregunta si hay algo para él, el Router le enviará las tramas que tenga almacenadas para él.
 

10.- He oido que en una red Zigbee es necesario un coordinador. Si por un motivo se estropea o se apaga, ¿se cae la red zigbee?
 
No. El Coordinador sólo es necesario en el arranque de la red zigbee. En el arranque de la red se encarga de seleccionar qué canal RF utilizar de los 17 disponibles (mirando en el espacio radioeléctrico en qué canal hay menor densidad de energía y por tanto menos interferencias) y se encarga de escoger el PANID (identificador) de la red. Cuando ya ha hecho esta tarea se comporta igual que un Router.
 

11.- Pero yo no quiero que escoja de manera aleatória un PANID. ¿Se puede fijar uno?
 

Efectivamente, puedes fijar uno. Si no lo especificas escogerá uno al azar.
 
 
12.- Claro, si fijo un PANID evitaré que un determinado dispositivo Zigbee en vez de conectarse a mi red se conecte a otra red Zigbee vecina ¿es así?
 
Sí. Si configuras todos los equipos con un parámetro PANID determinado evitarás que tu equipo se conecte a otra red cercana con un PANID distinto. Si no especificas un PANID, al encender un equipo, ya sea un Router o un End device, se conectaría a la primera red Zigbee que encuentre.
 

13.- Yo no quiero que puedan asociarse a mi red más dispositivos una vez formada. ¿Puedo evitarlo?
 
Sí. Hay un comando que puedes enviar a los módulos que hacen de Routers con el cual puedes definir un tiempo en el cual permites asociaciones a la red. Pasado ese tiempo la red “se cierra”.
 

14.- ¿Y luego ya no podrá asociar nunca más dispositivos a mi red?
 

No, a menos que modifiques ese parámetro del Router al cual quieres asociarlo.
 

15.- Y si se cae o se estropea un Coordinador de red y queremos adjuntar a la red un nuevo dispositivo ¿no podremos, verdad?, pues es el Coordinador quien da las direcciones de red a los nuevos dispositivos que se quieran adjuntar.
 
No es el Coordinador quien da las direcciones de red, sino los Routers. Es decir, si se cae el Coordinador sí se podrá adjuntar un equipo a la red sin problemas.
 

16.- En una red Zigbee, si quiero comunicar un dispositivo A con un dispositivo B, yo no me tengo que preocupar de la ruta ¿no? Creo que es la propia red quien se encarga de buscar la ruta óptima. ¿Es el Coordinador quien se encarga de esto?
 
Que no :-) . El Coordinador sólo se encarga de lo que pone en el punto 10).  De encontrar la ruta óptima se encargan los Routers. Efectivamente tú no te tienes que preocupar de indicar la ruta, se encarga la propia red.
 
 
 
 
Bueno, espero que os haya resultado interesante, otro día continúo (que hoy es nochebuena y hay que ir a comprar para la cena ;-) ).

Más adelante veremos algunas cuestiones más que me quedan pendientes y la aplicación X-CTU de Maxstream, que es como una especie de entrenador, similar a los entrenadores que habéis visto en blogElectronica de Siemens o de Coronis, así podréis ver de forma práctica cómo funcionan estos dispositivos.
 

Comments 74 Comentarios »

A continuación tenéis una serie de definiciones que hay que conocer para entender bien y poder hablar de redes Zigbee. Son toda una serie de vocablos que leeréis en cualquier artículo de Zigbee o en cualquier datasheet de dispositivos Zigbee. Espero que las encontréis de utilidad.  ;-)

zigbeelogo2.jpg

PAN.
Personal Area Networkd. Se entiende por PAN una red de comunicaciones que incluye un Coordinador de red y uno o más routers o dispositivos finales (end points).

JOINING.
Es el proceso que inicia cada dispositivo (router o end point) para formar parte de una red PAN Zigbee. Es durante este proceso cuando un el dispositivo (el coordinador o un router) padre asigna una dirección de 16 bits al nodo hijo (otro router o un end point) que se quiere unir a la red.

NETWORK MAXIMUN DEPTH
En máximo nivel de descencencia del Coordinador. Es decir, desde un coordinador no pueden descender un nº ilimitado de padres e hijos. Por ejemplo, con un Network Maximun Depth de 5 podríamos tener un Coordinador, del cual descienciende un Router R1, de este Router R1 desciende otro R2, del R2 un R3 y del R3, por ejemplo, un end point. Por supuesto de R1, R2 … pueden descender más dispositivos. Hablamos del nº de descendientes desde el Coordinador. Es decir, para un Network Maximun Depth de 5 lo máximo que puede ser el Coordinador es un Tatarabuelo. :-)

MAXIMUM CHILD ROUTER
Indica el nº máximo de routers que puede unirse a cada nodo.

MAXIMUM CHILD END DEVICES
Indica el nº máximo de dispositivos finales que puede unirse a cada nodo.

NETWORK ADDRESS
El la dirección de 16bits que un nodo asigna a un dispositivo que se une a la red.

OPERATING CHANNEL
Es la frecuencia seleccionada por el canal de comunicaciones entre nodos. En canal de comunicaciones es escogido por el coordinador al “arrancar” la red. El coordinador de la red, al iniciar la red, mide la energía RF en cada canal de comunicaciones. El canal que detecte con menos energía (menos interferencias) será el escogido para operar.

ROUTE REQUEST
Broadcast enviado a la red Zigbee por el coordinador o un router para intentar establecer la ruta hacia un determinado dispositivo.

ROUTE REPLY
Es la respuesta del dispositivo final buscado a través de un ROUTER REQUEST. Cuando este dispositivo ve que la trama (enviada en broadcast) está buscando a un dispositivo con su dirección, responde al dispositivo que envió el route request.

ZIGBEE STACK
La pila zigbee es un protocolo de alto nivel pensado para dispositivos de bajo consumo. Opera encima de la capa de especificación 802.15.4 (protocolo de comunicaciones RF). Por ejemplo las capacidades mesh y de ruteado forman parte de la pila Zigbee.

Es importante el conocimiento de las anteriores definiciones. Próximamente en una próxima entrega Zigbee escribiré acerca de la formación de redes zigbee, del direccionamiento, de las transmisiones broadcast y de las capacidades mesh.

Comments 2 Comentarios »

Voy a iniciar una serie de capítulos breves introductorios a las redes Zigbee. Será teórico-práctico, recomendable para aquellos de vosotros que no sepáis nada de Zigbee y os interese esta tecnología para vuestros futuros desarrollos RF.

zigbeelogo2.jpg

Como digo será teórico-práctico. En la parte práctica veremos como llevar a la práctica una red de dispositivos Zigbee resulta muy sencillo. Para ello utilizaremos unos conocidos módulos de la marca MaxStream, que es líder en desarrollo de dispositivos radio y Zigbee. MaxStream es distribuido en España por Matrix Electrónica.


Definición de Zigbee

Zigbee es un protocolo de comunicaciones inalámbrico basado en el estandar de comunicaciones para redes inalámbricas IEEE_802.15.4. Creado por Zigbee Alliance, una organización, teóricamente sin ánimo de lucro, de más de 200 grandes empresas (destacan Mitsubishi, Honeywell, Philips, Motorola, Invensys, …) , muchas de ellas fabricantes de semiconductores.

Zigbee permite que dispositivos electrónicos de bajo consumo puedan realizar sus comunicaciones inalámbricas. Es especialmente útil para redes de sensores en entornos industriales, médicos y, sobre todo, domóticos.

Las comunicaciones Zigbee se realizan en la banda libre de 2.4GHz. A diferencia de bluetooth no utiliza FHSS (Frequency hooping), sino que realiza las comunicaciones a través de una única frecuencia, es decir, de un canal. Normalmente puede escogerse un canal de entre 16 posibles. El alzance depende de la potencia de emisión del dispositivo así como el tipo de antenas utilizadas (cerámicas, dipolos, …) El alcance normal con antena dipolo en visión directa suele ser aproximadamente (tomando como ejemplo el caso de MaxStream, en la versión de 1mW de portencia) de 100m y en interiores de unos 30m. La velocidad de transmisión de datos de una red Zigbee es de hasta 256kbps. Por último decir que una red Zigbee la pueden formar, teóricamente, hasta 65535 equipos, es decir, el protocolo está preparado para poder controlar en la misma red esta cantidad enorme de dispositivos. La realidad es menor, siendo, de todas formas, de miles de equipos.


Pero, ¿cómo es la arquitectura básica de una red Zigbee?

Una red Zigbee la forman básicamente 3 tipos de elementos. Un único dispositivo Coordinador, dispositivos Routers y dispositivos finales (end points).

 

redzigbee.gif

 

El Coordinador.

Es el nodo de la red que tiene la única función de formar una red. Es el responsable de establecer el canal de comunicaciones (como hablábamos antes) y del PAN ID (identificador de red) para toda la red. Una vez establecidos estos parámetros, el Coordinador puede formar una red, permitiendo unirse a él a dispositivos Routers y End Points. Una vez formada la red, el Coordinador hace las funciones de Router, esto es, participar en el enrutado de paquetes y ser origen y/o destinatario de información.


Los Routers.

Es un nodo que crea y mantiene información sobre la red para determinar la mejor ruta para enrutar un paquete de información. Lógicamente un router debe unirse a una red Zigbee antes de poder actuar como Router retransmitiendo paquetes de otros routers o de End points.


End Device.

Los dispositivos finales no tienen capacidad de enrutar paquetes. Deben interactuar siempre a través de su nodo padre, ya sea este un Coordinador o un Router, es decir, no puede enviar información directamente a otro end device. Normalmente estos equipos van alimentados a baterías. El consumo es menor al no tener que realizar funciones de enrutamiento.

Comments 41 Comentarios »