ZigBee : Decouverte des modules Xbee

Description :

Le but de cet article est une présentation et rapide mise en œuvre du Zigbee en utilisant les modules Xbee de DIGI.

Vous pouvez consulter l’article de Wikipedia pour en apprendre plus sur le protocole ZigBee. En ce qui me concerne j’ai souvent tendance a dire que le ZigBee est le WIFI des microcontroleur ayant pour optique principale une consommation réduite d’énergie.

ZigBee_comparaison

Le ZigBee semble donc être la technologie idéale pour les réseaux de capteurs en domotique 😉

Dans un réseau mailles ZigBee il y a 3 types de nœuds : coordinateur, routeur, et “end device”. Pour résumer….le coordinateur est nécessaire et gère l’ensemble du réseau. Les routeurs routent les paquets qui ne peuvent pas être atteint en directs. Les “End Device” sont les capteurs a proprement parle.

Le réseau minimum doit donc être compose d’un coordinateur et au moins 1 “end device”. Vous trouverez plus de détails sur les réseaux zigbee mailles ici. Le type du module Xbee est déterminé par sa configuration.

Création d’un réseau maille :

Matériel :

J’utilise les modules Xbee de Digi (Serie 2 uniquement) comme module ZigBee dont vous trouverez une documentation complète ici. Pour résumer il faut savoir que les modules Xbee propose plusieurs configuration en fonction de ce que l’on veut faire : ZigBee ou ZNet. Le Znet est l’ancien protocole et il n’est pas conseillé de l’utiliser (Cf Site officiel Digi : ZNet 2.5 was an interim mesh-networking release until we had full Zigbee compliance (ZB)).

Module Xbee de Digi

Je n’utilise que les Serie 2 des modules Xbee qui sont complétement compatibles avec le protocole ZigBee et permettent les réseaux mailles ! Une liste exhaustive des différences entre les Xbee Serie 1 et Xbee Serie 2 est disponible ici.

Les modules Xbee communiqueront avec le PC par une liaison série (au travers d’un port USB). Pour permettre cette communication je vous conseil d’acheter un “explorateur Xbee” tel que le modèle de sparkfun disponible ici.

Configuration :

Maintenant que tout le matériel nécessaire est présenté…. passons à l’attaque. Un module Xbee sera configure en coordinateur (il faut obligatoirement un coordinateur pour le réseau) et l’autre module sera configure en “end device”. La configuration des modules peut se faire de plusieurs manière mais le plus simple/rapide est d’utiliser le logiciel X-Ctu (téléchargeable ici) distribue par Digi combiné a un explorateur Xbee.

Je ne détaille pas toutes les possibilités de X-CTU (vous trouverez ici une documentation complète sur le logiciel). Sur le premier onglet il faut penser a activer le mode API (niveau 2) pour être capable de dialoguer avec le module. Ceci est uniquement vrai si les modules sont déjà configuré en mode API !! Si vos modules ne sont pas encore configurés en mode API vous pouvez le faire en utilisant cet article.

On peut ensuite lire la configuration des modules avec l’onglet “modem configuration” pour chaque module : Le coordinateur et le end-device.

Pour que les 2 modules fassent partis du même réseau il suffit de leur mettre le même “PAN ID” (Personal Area Network). De plus il faut bien penser a choisir les bons types (1 coordinateur ZIGBEE et 1 end device ZIGBEE).

Voilà la configuration du “coordinateur” zigbee avec le PAN ID égale a 234. Le mode API active (mode 2), ainsi que son nom sur le réseau “COORDINATOR”. Ce nom sera utilisé pour l’envoie de message (pour éviter la lourdeur de l’adresse 64 bits).

La configuration du “end device” est similaire dans le sens où elle utilise également le PAN ID 234 et le mode API. En plus il faut penser a vérifier la configuration du paramètre “D0” pour s’assurer que le setting correspond à “NODE IDENTIFICATION BUTTON”. Ce paramètre assure qu’un changement d’état de la PIN DIO0 du module générera un message d’identification du nœud. C’est grâce à ça que nous pourrons vérifier que notre réseau fonctionne bien en s’assurant que ce message est reçu par le “coordiantor”.

Voilà à quoi devrai ressembler vos 2 modules pour pouvoir passer à l’étape suivante de communication réseau.

Mise en œuvre :

Le principe du test est très simple et ne repose sur aucun code (et ne peut donc pas comporter d’erreur). J’utilise ce test pour vérifier le bon fonctionnement de mon réseau/module. Grâce a la configuration du “end device” fait précédemment on sait que chaque front sur l’input DIO0 va générer un message de “node identification” qui sera reçu par notre coordinateur. Il suffit ensuite d’installer un logiciel sur le PC capable de recevoir les trames série. J’utilise principalement 2 logiciels pour ca : Advance Serial Port Monitor et Docklight (les 2 fonctionnent bien à vous de les essayer).

Il faut donc générer un front sur l’entree DIO0 du “end device” en mettant l’entrée a 0Volt un bref instant. Pour cela vous pouvez relier cette entrée avec la PIN masse du module.

Ceci va générer le message de “node identification” qui sera reçu par le coordinateur. Voilà ce que vous devriez obtenir sur le coordinateur.

 Analyse du message :

Voilà l’analyse de la trame réseau reçu par le coordinateur du réseau.

Offset Signification Valeur recu Explication
Message Trame
0 Debut de message 0x7E
1 Taille message (MSB) 0x00 0x22 = 34 bytes en plus (sans compter le checksum)
2 Taille message (LSB) 0x22
3 Type de frame 0x95
4 Adresse 64 bits émetteur(MSB) 0x00 0x007D33A200 correspond en fait à 0x0013A200 car le bit 0x13 est remplacé par 0x7D33 à cause du mode API 2 qui remplace certains caractères spéciaux (0x13 est utilisé dans le control de gestion de message)
5 Adresse 64 bits émetteur 0x7D
6 Adresse 64 bits émetteur 0x33
7 Adresse 64 bits émetteur 0xA2
8 Adresse 64 bits émetteur 0x00
9 Adresse 64 bits émetteur 0x40 0x406B7B64 correspond aux 32 bits de poids faible de l’adresse réseau du module. Cette adresse ne changera jamais
10 Adresse 64 bits émetteur 0x6B
11 Adresse 64 bits émetteur 0x7B
12 Adresse 64 bits émetteur(LSB) 0x64
13 Adresse 16 bits émetteur(MSB) 0xDE 0xDE39 est l’adresse 16 bits du module. Visible dans la configuration du module (paramètre MY). Attention cette adresse peut changer
14 Adresse 16 bits émetteur(LSB) 0x39
15 Option reçue 0x01 Acknowledge (car ce type de message peut aussi être une réponse générée suite à une requête du coordinateur)
16 Adresse 16 bits émetteur (MSB) 0xDE 0xDE39 est l’adresse 16 bits du module. Visible dans la configuration du module (paramètre MY). Attention cette adresse peut changer
17 Adresse 16 bits émetteur (LSB) 0x39
18 Adresse 64 bits émetteur (MSB) 0x00 0x007D33A200 correspond en fait à 0x0013A200 car le bit 0x13 est remplacé par 0x7D33 à cause du mode API 2 qui remplace certains caractères spéciaux (0x13 est utilisé dans le control de gestion de message)
19 Adresse 64 bits émetteur 0x7D
20 Adresse 64 bits émetteur 0x33
21 Adresse 64 bits émetteur 0xA2
22 Adresse 64 bits émetteur 0x00
23 Adresse 64 bits émetteur 0x40 0x406B7B64 correspond aux 32 bits de poids faible de l’adresse réseau du module. Cette adresse ne changera jamais
24 Adresse 64 bits émetteur 0x6B
25 Adresse 64 bits émetteur 0x7B
26 Adresse 64 bits émetteur (LSB) 0x64
27 Node Identifier émetteur(MSB) 0x45 0x45443100 = ED1/0 (string) et correspond au nom du module émetteur. Ce nom est un paramètre (NI) du module visible ds X-CTU
28 Node Identifier émetteur 0x44
29 Node Identifier émetteur 0x31
30 Node Identifier émetteur (LSB) 0x00
31 Adresse 16 bits du parent (MSB) 0xFF 0xFFFE car notre module émetteur n’a pas de parent
32 Adresse 16 bits du parent (LSB) 0xFE
33 Type de device 0x01 0x01 indique que notre “end device” est un module de type routeur
34 Evènement générateur de l’envoie du message 0x01 Le message d’identification a été envoyé suite à un front sur l’entrée DIO0
35 DIGI profil ID (MSB) 0xC1
36 DIGI profil ID (LSB) 0x05
37 Identification du constructeur du module (MSB) 0x10
38 Identification du constructeur du module (LSB) 0x1E
39 Checksum du message 0x10

Voilà! Nous avons créé un réseau ZIGBEE comportant 2 modules Xbee serie 2 de DIGI en utilisant le mode API. Nous avons également présenté un trame ZigBee ce qui nous permettra dans un prochain tutorial de créer un réseau plus large et de faire communiquer plusieurs module Xbee couple avec des cartes Arduino.

2 thoughts on “ZigBee : Decouverte des modules Xbee

  1. Pingback: Merge ! | Djynet

  2. Pingback: Xbee | Pearltrees

Comments are closed.