Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Communications > Réseaux ZigBee > Configuration simple des XBee

Configuration simple des XBee

lundi 2 mars 2009, par Julien H.

Dans le premier article concernant les XBee, nous avions montré comment nous pouvions facilement faire communiquer plusieurs cartes sans-fil avec des XBee series 1 sans aucune configuration.

C’était possible grâce aux réglages par défaut qui utilisent un même identifiant de réseau (3332 comme valeur pour ID) et une adresse broadcast (pas de destinataire particulier, tout le monde, comme une antenne de télé).

Maintenant, nous allons voir comment configurer des modules pour des besoins plus particuliers :
 s’isoler sur un réseau personnel différent (changer l’ID)
 s’assigner une adresse d’émetteur
 préciser une adresse de destinataire

Matériel nécessaire

modules XBee 2 ... environ 50 euros
carte USB/XBee 2 ... environ 30 euros

Bien sûr plus vous avez de cartes, plus vous pouvez tester de combinaisons, puisque le but est de voir quand ça connecte, quand ça connecte pas et avec qui ça connecte.

Préparation

Il faut un peu d’organisation : un hub USB pour brancher/débrancher les câbles des adaptateurs USB/XBee sans se tromper, et se rappeler le numéro de port COM de chacune des cartes.

Installez si ce n’est pas déjà fait le logiciel X-CTU distribué par Digi, la société qui conçoit les puces XBee (successeur de MaxStream, ce nom pouvant être encore écrit sur vos modules).

Prenez enfin de quoi noter les paramètres.

Tests

Le premier XBee sera configuré ainsi :

Paramètre Valeur Rôle
ID 3332 adresse de réseau commun
MY 1234 l’adresse de ce XBee
DH 0 partie haute de l’adresse, indique qu’on veut utiliser les adresses sur 16 bits
DL FFFF adresse de destinataire : broadcast à tous

Le second XBee sera configuré ainsi :

Paramètre Valeur Rôle
ID 3332 adresse de réseau commun
MY 5678 l’adresse de ce XBee
DH 0 idem ci-dessus
DL 1234 adresse de destinataire : réponse au premier

Comme on le voit, le second module (on dira "remote" ou "distant") ne répond qu’au premier module (on dira "base"). On pourrait donc utiliser plusieurs modules distants. Le module base quant à lui a une adresse de broadcast (FFFF), ce qui lui permet d’atteindre tous les modules XBee qui sont sur le réseau personnel 3332 (paramètre ID identique pour tous). Bien sûr, il faudra changer la valeur de destinataire (DL) si on veut ne s’adresser qu’à un des modules.

Juste une note sur le paramètre ID : il ne s’agit pas du canal de communication dans le sens canal RF, c’est un autre paramètre qui permet de choisir parmi les 16 canaux 2.4GHz que gère le XBee, mais du PAN ID, où PAN désigne un réseau personnel (Personal Area Network).

Pour paramétrer ces valeurs, il suffit de connecter chacun des modules sur la plaquette USB et utiliser un outil de configuration (X-CTU distribué par Digi) ou un simple terminal (connecté à 9600 bauds par défaut).

On va utiliser des commandes dites "AT", une méthode qui n’a pas changé depuis les premiers modems filaires.

On ressort donc notre terminal série préféré, Docklight, et on le paramètre pour communiquer en 9600-N-1-8 sur le port COM (pour Windows) associé à la carte USB/XBee et on enregistre une série de commandes classiques :

Commande Rôle Résultat attendu
+++ démarre la connexion "AT" avec le module réponse OK dans 1 à 2 secondes (surtout pas de retour chariot)
ATID ou ATIDnnnn lit ou écrit l’adresse du réseau commun l’adresse courante si aucun paramètre, OK si l’adresse nnnn a été enregistrée, ERROR sinon
ATMY ou ATMYnnnn lit ou écrit l’adresse de ce module idem
ATDL ou ATDLnnnn lit ou écrit l’adresse du destinataire idem
ATWR sauvegarde les paramètres (sinon on perd tout quand on coupe l’alimentation) OK si les paramètres sont bien enregistrés
ATCN termine la connexion OK si on a bien terminé

Les commandes ATxx doivent être suivies d’un retour chariot ou \r pour les intimes et "carriage return" pour les anglophones. Pour nous qui utilisons un terminal série, c’est la valeur décimale 13.

Voici le résultat d’une session de vérification :

Vérifier la communication sans-fil

Jusque-là, rien de magique puisqu’on a utilisé une connexion filaire avec le XBee qui s’est comporté comme n’importe quel micro-contrôleur utilisant une liaison série. On va maintenant explorer le monde sans-fil avec la détection des autres modules alimentés autour de nous. Pour cela, on va utiliser une nouvelle commande AT : "ATND" comme Node Discovery ou "découverte des noeuds". Noeud désigne un module du réseau 802.15.4 sur lequel est basé le XBee.

Commande Rôle Résultat attendu
ATND recherche les modules XBee distant et affiche leurs informations voir ci-dessous le détail

Tout d’abord, précisons que le module XBee utilisé pour passer la commande ND n’est pas affiché dans le résultat, on a donc bien uniquement les modules distants. Voici ce que ça donne avec un module connecté :

Test de la commande ATND

Décryptons les informations affichées :

Ligne Valeur Signification
1 5678 adresse MY
2 13A200 numéro de série SH (partie haute)
3 40530CC7 numéro de série SL (partie basse)
4 21 force du signal radio (RSSI)
5 ’rien’ paramètre NI ou Node Identifier, un nom arbitraire qu’on peut donner au module

Vérifions les informations : le numéro de série est affiché sur le dessous d’un module, voici la comparaison :

Découverte des XBee distants
La commande "ND" (pour Nodes Discovery) montre tous les XBee distants (donc pas celui auquel on envoit la commande). Parmi les valeurs affichées, le numéro de série hardware, comme on peut le constater.

Concernant la force du signal, on peut effectivement rappeler que les modules XBee offrent la même possibilité que le Wifi que vous avez peut être déjà testé chez vous : la puissance du signal reçu. Ici, le RSSI (Radio Signal Strength Indicator) indique 0x21 soit -33 décibels d’atténuation. Si les deux modules sont côte à côte, je lis 0x17 soit -23 décibels d’atténuation.

Le paramètre NI est intéressant si vous faites un paramétrage particulier mais que les adresses MY que vous utilisez ne vous sont pas assez faciles à mémoriser, vous pouvez alors utiliser un nom plus significatif (CAPT TEMP ou BASE ou CMD RELAIS par exemple).

Vos commentaires

  • Le 21 juillet 2013 à 23:59, par maxime En réponse à : Configuration simple des XBee

    Bonjour,$

    Je travaille actuellement sur un projet a base d’arduino et de modules Xbee. J’ai découvert il y a peu une commande AT : ATND, celle ci permettant de trouver les xbee aux alentour faisant parti du meme réseau. Mon but et d’utiliser cette commande via le module maitre : coordinateur afin de voir si un module en particulier est à porter : ATNDXXXXX avec xxxxx le node identifier du module en question. Lorsque je fais cette commande sous XCTU je recois bien la réponse, mais quand je fais cette commande via arduino je ne sais pas comment récupérer les informations renvoyées. J’ai pourtant tester la fonction SerialReadBytes qui permet de stocker dans un tableau ce que l’on lit sur le serial avec la longueur désirée connaissant la longueur de la réponse.
    Mes Xbee son en mode AT (l’API ne convient pas pour certaines raisons). Y’a t’il un processus à suivre ?
    je fais bien le +++ suivi d’une seconde de delay pour etre sur de passer en mode AT. voici une partie du code :

    Serial.print("+++") ;
    delay(1020) ;

    Serial.print("ATND" + horses_name[j] + "\r") ;

    while(!Serial.available()){}

    //Serial.readBytes(buffer,43) ;
    buffer[0] = Serial.read() ;

    Serial.print("ATCN\r") ;

    Serial.flush() ;

    Merci de votre intérêt.

    • Le 20 août 2015 à 13:46, par Loup phoque En réponse à : Configuration simple des XBee

      Ton serial.flush() doit avoir pour argument l’ATND du module xbee détecté. Sans ça, ton arduino ne sait pas quelle réponse lire, c’est normal que tu n’arrives pas à sortir les infos.

    • Le 11 février 2017 à 22:54, par ans En réponse à : Configuration simple des XBee

       ???
      Depuis quand Serial.flush() admet il un argument ?
      Peux tu préciser ?

    • Le 17 février 2017 à 14:02, par Eric P. En réponse à : Configuration simple des XBee

      Ca me surprend également car flush ne concerne que la gestion du stream fichier, et ne sait absolument rien du contexte (ici le fait que ce stream concerne la communication avec un XBee).
      Peut-être que l’auteur de ce commentaire pourra nous en dire plus.

    Répondre à ce message

  • Le 16 février 2014 à 21:59, par ROMUALD En réponse à : Configuration simple des XBee

    Bonjour,

    voila après avoir lu votre article, je me suis décider à jouer avec des module xbee.

    Mais j’ai un problème de configuration, car je ne sais pas modifier le paramètre MY de mes xbee.

    Pourriez-vous me diriger pour résoudre mon problèmes.

    j’utilise xctu 6.

    bien à vous,

    • Le 18 février 2014 à 11:49, par Eric P. En réponse à : Configuration simple des XBee

      Bonjour,

      Ce paramètre est avec les autres dans la liste des registres auxquels XCTU donne accès. De mémoire, c’est même l’un de premiers de la liste.

      Cordialement

    Répondre à ce message

  • Le 29 novembre 2012 à 20:10, par seen En réponse à : Configuration simple des XBee

    Bonsoir,

    j’utilise pour l’un de mes cours 5 robots de chez Easyrobotics. J’utilise Tinybootloader pour la programmation de mon Pic 16f877a. Via le câble tout fonctionne bien. Mais j’ai essayé de travailler avec des Xbee et là j’ai des problèmes d’effacement de mon bootloader ! J’ai Accouplé mes Xbee en modifiant les paramétrés MY et DL. Mais j’ai le même ID pour tous les Xbee.

    Pourriez vous m’aider à résoudre mon probleme ?

    Merci d’avance,

    Enzo

    • Le 29 novembre 2012 à 21:45, par Julien H. En réponse à : Configuration simple des XBee

      Bonjour. Non, retournez-vous vers l’auteur de tinybootloader.

    • Le 14 février 2013 à 14:32, par Boubi En réponse à : Configuration simple des XBee

      Bonjour, je travaille sur un projet pour mon Bac STI2D. Je suis en SIN (Système d’Information et Numérique). Mon projet consiste à envoyer des données récupérées sur une voiture télécommandé à un ordinateur.
      J’ai choisi pour ça les modules XBee pro série 1 (pour la distance et leur simplicité). N’y connaissant rien, j’ai essayer de me baser sur votre cours. j’ai donc pris en main les logiciel X-Ctu et Docklight (dont j’apprends chaque jour même si mon anglais n’est pas des meilleurs).

      Cependant les commandes AT ne fonctionnent pas sur Docklight mais la commande démarrer "+++" me confirme une transmission. Quelle configuration ai-je pu oublier ? J’ai cherché sur d’autres forums en vain.

      Merci d’avance pour votre aide et merci pour votre site.

    • Le 14 février 2013 à 14:49, par Julien H. En réponse à : Configuration simple des XBee

      Avez-vous pensé au retour à la ligne qui doit suivre une commande AT ?

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.