Electronique Electrotechnique Automatisme Informatique

 


Vous êtes : (racine du site) (Electronique) > (Electronique en lycée)

Electronique
Toutes sections
Electronique en lycée
Proteus

Electrotechnique
Toutes sections

Liaison RS232 sans fil - Module XBee - Réseau ZigBee
- Nombre de visite(s) : 26649
Date de mise à jour : lundi 9 juin 2008, par Dartois Olivier


Mis à jour le 15/10/08

Le prétexte de cette réalisation

Cela fait environ un an que je cherche à programmer à distance mes pics au moyen d’une liaison série sans fil en utilisant TinyBootLoader (voir aussi l’article sur TinyBootLoader). Les "transceivers" classiques n’ont pas un débit suffisant (je veux pouvoir transmettre jusqu’à 115200 baud/s) et leur cout est relativement élevé. En parcourant le site de Lextronic, je suis tombé sur des petits modules qui prennent en charge toute la pile de protocole ZigBee. Ces modules portent le nom de XBee et sont fabriqués par Maxstream/Digi. Depuis Lextronic ne vend plus ces modules mais ils sont disponibles chez Farnell ou MatLog.

Présentation des modules XBee

Ces modules se présentent de la manière suivante :

Module XBee Série 2
Ant. planaire Ant. Externe Ant. Filaire
XBee-S2-Antenne Planaire XBee-S2-Antenne Externe XBee-S2-Antenne Filaire

- format DIL 20 broches
- sur le dessus :
— un connecteur pour antenne filaire (Ref. Farnell : 1546390)
— un connecteur UFL pour antenne externe (Ref. Farnell : 1546390)
— une antenne planaire (Ref. Farnell : 1546391)
- sur le dessous, caché sous une coque métallique qui joue certainement le rôle de cage de faraday, un "System On Chip" de marque Ember
- une version standard (émission jusqu’à 2mw) et une version pro (émission jusqu’à 10mW) avec un facteur de forme un peu plus long
- les modules sont livrés par défaut avec un firmware de type "Router/End device"

Selon la documentation constructeur, il existe deux modes de fonctionnement de ces modules :
- un fonctionnement "transparent" : les données sont directement envoyées/reçues par le module. La configuration du module s’effectue par le biais de commande "AT"
- un fonctionnement "direct" ou "API" : il faut fabriquer ces propres trames et les envoyer au module. Ce mode est plus puissant et rapide mais nécessite plus de programmation et un firmware de type "API"

Réalisation du dongle USB<->XBee

Dans notre cas, nous utiliserons le mode "transparent" de ces modules pour faire une liaison RS232 sans fil. Il faut maintenant interfacer ces modules avec un PC. Comme le port sériel est en voie de disparition, il est plus judicieux d’utiliser un port USB.

J’ai donc choisi de réaliser un "dongle USB" pour interfacer le module XBee et le PC avec l’aide du célèbre Chip de FTDI : le FT232R. Ce dongle permet une connection directe sur un port USB du PC grâce à un connecteur USB de type A mâle. Deux dels visualiseront le trafic RX et TX. Une del indiquera si le module XBee est "associé", c’est-à-dire s’il a réussi à établir la connection avec l’autre module XBee. Trois cavaliers permettent d’établir (ou non) les connections DTR, CTS et RTS. La taille étant un critère principal pour la réalisation de ce dongle, les composants seront des CMS (le FT232R n’existe de toute façon plus que dans ce format). En fait il existe des solutions de ce type chez Droids ou chez SparkFun.

Le prototype se présente de la manière suivante :

Pont USB<->XBee avec bulles d'aide Pont USB<->XBee avec bulles d'aide coté XBee

Le schéma électrique, les typons, le plan d’implantation et la liste du matériel sont données en pièces jointes en bas de cet article. Pour souder ces composants nous avons à notre disposition une machine de placement des CMS et un four. Notez cependant que la plupart des composants sont au format 1206 donc vous pouvez les souder directement avec un fer à souder à pointe fine. Seul le FT232R peut poser problème. La solution pour souder correctement ce composant est d’utiliser un flux de soudure (Ref. Farnell : 1521896) et je peux vous assurer que cela fonctionne très bien (jetez un coup d’œil à cette vidéo pour visualiser la technique de brasage). Notez que ce dongle peut recevoir indifféremment des modules XBee standards ou pro.

Réalisation et Première mise en fonction

Une fois la plaque réalisée et percée, vérifiez la continuité des pistes et surtout l’absence de court-circuit entre piste très proche. Soudez tous les composants CMS et la fiche USB (Ne soudez pas votre module XBee !). Téléchargez les derniers pilotes pour le FT232R sur le site de FTDI puis branchez le dongle dans un port USB de votre PC (si vous aviez déjà des pilotes FTDI installés, il faut les retirer du système avec l’utilitaire FTClean pour mettre en place les nouveaux). Une fois les pilotes installés vous disposerez d’un nouveau port série "virtuel" sur votre ordinateur. Si le FTDI n’est pas détecté, il vous faudra vérifier vos pistes et surtout les soudures au niveau du FT232R (pas de pont entre deux pattes, circuit correctement alimenté en 5V par le bus USB...). Pour tester le dialogue avec le circuit FTDI, lancez un logiciel de communication par voie série (genre TinyBootLoader au hasard ;-) puis ouvrez le port COM virtuel à une vitesse quelconque (19200baud/s, 8bits de données, pas de bit de parité, 1 bit de stop => 19200,8N1). Envoyez quelques caractères, la del TX doit clignoter à chaque envoi. Maintenant que l’on est un prés sur que le FTDI fonctionne correctement, vérifiez la tension sur la pastille 1 du XBee (Vdd => on doit trouver 3,3V) et la tension sur la pastille 10 (Gnd => on doit trouver 0V). Si ces deux tensions sont correctes alors vous pouvez souder votre module XBee.

Configuration du FT232R

Il serait bien de personnaliser le message de description du dongle, genre "Pont USB <-> XBee", lorsqu’on branche celui-ci plutôt que d’avoir "USB <-> Serial cable". Vous pensez que les deux diodes TX et RX seraient plus utiles pour indiquer d’autres évènements liés au fonctionnement du FTDI. Bref vous pouvez personnaliser le FT232R avec le logiciel MProg. Téléchargez et installez ce logiciel. Lancez-le puis cliquez sur l’icône "Loupe". Vous devriez avoir la liste des circuits FTDI détectés sur le système (Par ex : Number Of Blank Devices = 0 Number Of Programmed Devices = 1). Si vous n’obtenez rien c’est très certainement parce que vous n’avez pas les derniers pilotes d’installés (voir plus haut). Dans le cas contraire, cliquez sur le menu "Tools" puis "Read and Parse". A partir de ce moment vous pouvez personnaliser votre circuit. Ci-dessous une capture d’écran de ma configuration :

Capture Ecran du logiciel MProg

Les ampoules noires indiquent les paramètres modifiés (en particulier n’oubliez pas d’augmenter le courant max fourni par le bus USB : "Max Bus Power" si vous utilisez un XBee Pro car ils ont besoin de plus de courant sans dépasser 150mA). Le cadre rouge indique les paramètres modifiables intéressants. En particulier les paramètres C0 et C1 puisqu’ils sont "reliés" aux dels TX et RX du dongle !

Icone MProgUne fois que vous avez réglé vos paramètres, il faut les enregistrer dans un fichier avec le menu "File -> Save As". Vous aurez alors accès à l’icône de programmation du FT232 (icône en forme d’éclair). Cliquez sur celle-ci pour programmer votre FT232. Pour que les nouveaux paramètres soient pris en compte il faut réinitialiser le FT232. Soit vous débranchez/rebranchez votre dongle, soit vous cliquez sur l’icône de "Reset" du FTDI dans MProg (icône en forme de dossier avec une croix rouge).

Configuration du XBee

Il faut maintenant configurer un minimum votre XBee. Pour cela vous avez deux solutions. Soit vous réalisez la configuration en envoyant des commandes "AT" au module, soit vous utilisez le logiciel X-CTU. Dans un premier temps, nous allons configurer certains paramètres de bases avec le logiciel X-CTU puis nous testerons quelques commandes "AT". Notez bien que les quelques explications qui suivent ne vous dispense pas de lire la documentation officiel du logiciel (en anglais, format DOC Microsoft Word : lisible avec OpenOffice et disponible au format PDF à la fin de cette article).

Connectez votre dongle puis lancez le logiciel X-CTU. Il doit se présenter de la manière suivante :

Onglets du logiciel X-CTU

- l’onglet "PC Settings" permet de régler les paramètres de communication entre le port série virtuel créé par le FT232 et le module XBee. Par défaut, les modules XBee sont configurés à 9600bauds/s, 8 bits de données, 1 bit de stop, pas de parité (9600, 8N1).
- l’onglet "Range Test" permet de tester la portée des modules XBee ainsi que la qualité du signal reçu.
- l’onglet "Terminal" permet de dialoguer avec le module XBee par l’intermédiaire des commandes "AT". Cela évite de lancer un logiciel de dialogue par voie série genre HyperTerminal.
- l’onglet "Modem Configuration" est sans doute le plus important car il permet de régler quasiment tous les paramètres du XBee de manière graphique et de "reflasher un nouveau firmware" (en français, reprogrammer le microcontroleur avec un nouveau micro-programme :-).

Dans le premier onglet "PC Settings", réglez la vitesse à 9600bauds/s, 8 bits de données, 1 bit de stop, pas de parité. Cliquez ensuite sur le bouton "Test/Query". Si la communication se passe correctement, une nouvelle fenêtre s’ouvrira avec le type de XBee détecté et le numéro de révision du micro-programme. Dans le cas contraire, essayez avec d’autres vitesses de transmission.

Passez ensuite dans l’onglet "Modem Configuration" puis cliquez sur le bouton "Read". Le logiciel X-CTU va lire tous les paramètres du XBee. Vous pouvez alors les modifier dans la liste déroulante qui est apparue. Les paramètres importants dans notre cas (rappel : il faut établir une liaison point à point pour programmer des µc PIC ou autres à distance) :
- PAN ID : Personal Area Network => Identifiant du réseau personnel donc mettre un nombre héxa identique sur tous les XBee qui doivent appartenir au même réseau.
- SH : Serial Number High => Numéro de série du module XBee codé sur 32bits (bits de poids fort). Dans le cas de Digi/Maxstream leur identifiant pour les modules XBee est 0013A200.
- SL : Serial Number Low => Numéro de série du module XBee codé sur 32bits (bits de poids faible). C’est le numéro unique du module. Ces numéros sont imprimés sur le dessous des modules XBee et forment donc un identifiant unique codé sur 64 bits (Pensez à l’adresse MAC des cartes réseau ethernet).
- DH : Destination Address High => Numéro de série du module XBee (bits de poids fort) avec lequel vous désirez "converser" ou mettre 00000000 pour répondre au coordinateur du réseau.
- DL : Destination Address Low => Numéro de série du module XBee (bits de poids faible) avec lequel vous désirez "converser" ou mettre 00000000 pour répondre au coordinateur du réseau.
- PL : Power Level => Niveau de puissance émise. Réduisez-le si votre récepteur est proche.
- PM : Power Mode => Activation du mode avancé (Boost).
- BD : Baud Rate => Vitesse de transmission en bauds/s. Il faudra mettre une vitesse de 115200 dans notre étude.
- RO : Packetisation Timeout => Nombre de caractères tamponnés dans le XBee avant de lancer une transmission. Pour TinyBootLoader il ne faut absolument pas de latence, c’est à dire que tout paquet envoyé sur la voie série doit être transmis immédiatement. Ce paramètre sera donc positionné à 0.
- D7 : Réglage de l’entrée/sortie D7. Par défaut cette broche est configurée pour réaliser le contrôle de flux CTS. Dans notre cas, cette ligne est désactivée (Disable).

Ces paramètres sont données pour une version "1241" du firmware. Une fois que tous les paramètres sont modifiés il faut les sauvegarder dans l’eeprom du XBee en cliquant sur le bouton "Write". Il faudra alors vous reconnecter au module XBee pour voir si les paramètres ont été appliqués (attention à changer la vitesse de transmission en baud dans le premier onglet si vous avez changé le paramètre BD).

Le dongle d’émission est configuré et n’attends plus que son petit frère pour programmer des µC. Le paragraphe suivant décrit une configuration avancé du module XBee. Vous pouvez allègrement la "passer" si elle ne vous intéresse pas et vous rendre à la section décrivant le "module" de réception.

Configuration avancé du XBee

Il s’agit juste ici de vérifier ou fixer quelques paramètres du XBee en mode commande AT. Cliquez sur l’onglet "Terminal" puis tapez "+++" en moins d’une seconde sans les guillemets et sans appuyer sur la touche entrée. Cette combinaison de caractères (modifiable) permet de passer dans le mode commande AT du XBee. Celui-ci vous répond alors "OK" (en rouge pour indiquer les réponses du module, en bleu ce que vous avez tapé). Si vous ne câblez pas la del asso du dongle vous ne pouvez pas savoir si le module XBee est correctement démarré. Il est aussi intéressant de savoir si d’autre module XBee sont dans le voisinage, etc... Vous disposez des commandes suivantes :
- ATAI : donne l’état de la pile ZigBee et répond par l’un des codes suivants :
— 0x00 : pile initialisée correctement, coordinateur PAN démarré ou "routeur/end device" a joint un PAN.
— 0x21 : la recherche d’un PAN a échoué (pas de coordinateur ou routeur à portée).
— 0x22 : pas de PAN qui corresponde aux paramètres SC et ID (vérifiez en particulier l’ID qui doit être identique sur tous les modules du réseau).
— 0x23 : coordinateur ou routeur trouvé mais n’autorisant pas le jonction au réseau (vérifiez le paramètre NJ).
— 0x27 : jonction au réseau refusé. Un paramètre se rapportant à la sécurité sur le routeur ou le coordinateur empêche la connexion, vérifiez l’encryptage AES et s’il s’agit d’un réseau fermé ou ouvert.
— 0x2A : Démarrage de la pile ZigBee sur le coordinateur a échoué.
— 0x2B : recherche d’un coordinateur en cours.
— 0xFF : recherche d’un réseau en cours.
- ATND : permet de rechercher les modules XBee à portée. En fonction du nombre de module trouvé, vous obtiendrez plusieurs fois la description suivante :
— MY : identifiant sur 16 bits du module
— SH : numéro de série (poids fort) 32 bits
— SL : numéro de série (poids faible) 32 bits
— NI : identifiant du module sous forme de chaine de caractères, peut être vide
— Adresse du module parent
— Type de module : 0:coordinateur, 1:routeur, 2 :"end device"
— Status de la pile ZigBee (voir plus haut pour la définition des codes)
— Identifiant de profil
— Identifiant du fabricant

Ainsi avec la commande précédente vous pouvez découvrir et identifier individuellement tous les modules XBee pour éventuellement dialoguer en point à point avec eux grâce à leurs SH et SL (voire NI).

Il peut être utile de "reflasher" un module. Soit pour lui changer son type de fonctionnement (coordinateur ou routeur/end device), soit pour mettre un firmware de type AT ou API, soit parce qu’une nouvelle version du firmware en place est sortie. Pour effectuer cette opération, il faut cliquer sur l’onglet "Modem Configuration" puis lire la configuration actuelle en cliquant sur le bouton "Read". Ensuite sous la zone "Function Set" vous voyez apparaitre le type de firmware qui est programmé dans le module. Si vous n’avez pas reprogrammé le module, le firmware disponible doit être ZNET 2.5 ROUTER/END DEVICE AT. Pour changer le micro-logiciel, cliquez simplement sur le firmware désiré, dans notre cas ce sera ZNET 2.5 COORDINATOR AT. Ensuite il suffit de cocher la case "Always update firmware" puis de cliquer sur le bouton "Write" pour changer de firmware. Une fois l’opération finie, il faut avoir à l’esprit que le module XBee est remis en configuration par défaut. Il faudra se déconnecter et se reconnecter en 9600 bauds/s.

Le module récepteur

Le module récepteur se présente physiquement de la manière suivante :

Pont XBee-PIC Pont XBee-PIC coté XBee

Le schéma structurel au format Proteus Isis 7.2, le typon au format Ares 7.2 et un document au format PDF de présentation du module de réception sont disponibles à la fin de l’article en pièce jointe. Avant de souder le XBee, il faudra vérifier au multimètre que les tensions de 3,3V en sortie du régulateur et la masse sont correcte. L’alimentation du XBee peut être fourni de manière "extérieur" par une pile de 4,5V, de 9V ou une alimentation stabilisée sur les deux picots prévus à cet effet sur la carte ou l’alimentation peut venir d’un 5V sur le connecteur HE10-10 (broche 1-2), le régulateur 3,3V s’occupe d’abaisser la tension. Dans ce cas, l’interrupteur devra être positionné vers le "bas". Si l’interrupteur est en position vers le "haut", l’alimentation du module XBee est alors fourni DIRECTEMENT à travers le connecteur HE10-10 (broche 1-2). Cette alimentation DEVRA IMPERATIVEMENT ETRE DE 3,3V sous peine de destruction du module. Cela sous-entend que sur la carte qui héberge le PIC a programmer, vous avez un régulateur 3,3V ou que le PIC fonctionne lui-même avec une tension de 3,3V (ce qui serait de tout façon bien mieux pour ne pas faire souffrir les entrées/sorties du module XBee en lui envoyant du 5V issu du PIC).

Pour tester votre module de réception, procédez de la sorte :
- Reflashez votre dongle USB<->XBee avec un firmware "Coordinateur AT" à l’aide du logiciel X-CTU comme indiqué plus haut. Le module XBee sera alors dans la configuration par défaut d’un coordinateur. La DEL bleue de celui-ci clignotera à environ 1Hz pour indiquer que le module fonctionne.
- Alimentez votre récepteur avec une tension de 5V en mettant l’interrupteur sur la position externe. Si votre module XBee est neuf ou dans sa configuration par défaut (firmware routeur/end device) il va essayer de joindre un coordinateur. Normalement il devrait trouver votre coordinateur de l’étape précédente. S’il a rejoint le réseau géré par le coordinateur, la DEL bleue de votre récepteur clignotera à environ 2Hz.
- Connectez-vous sur votre coordinateur à l’aide de X-CTU (vitesse par défaut 9600bauds/s) et cliquez sur l’onglet "Terminal". Dans la zone de saisie de texte, tapez la lettre ’U’ (u majuscule). Le coordinateur doit alors transmettre ce caractère au récepteur. La DEL rouge RSSI (Receive Signal Strenght Information) doit alors s’allumer pour indiquer que le module a bien reçu le caractère.
- Si vous disposez d’un oscilloscope vous pouvez observez le signal reçu sur la broche 2 du module (2ème broche en bas à droite sur l’image du récepteur vu plus haut). Le caractère ’U’ est représenté par une alternance de 0 et de 1.

Pour la suite....c’est à dire la programmation du PIC à distance avec TinyBootLoader c’est pour trés bientôt !!! Je pense faire avec un élève une vidéo qui présente tout ce qui est décrit auparavant, ca sera nettement plus parlant (au sens strict comme au sens figuré :)

Pont USB<->XBee 145.8 ko

Schéma Isis 7.2 du pont USB<->XBee 14 ko

Schéma Ares 7.2 du pont USB<->XBee 7.8 ko

Manuel du logiciel X-CTU au format PDF (en anglais) 288.3 ko

Schéma Isis 7.2 du pont XBee<->Pic 16.1 ko

Schéma Ares 7.2 du pont XBee<->PIC 7.5 ko

Pont XBee<->PIC 124.3 ko

Liaison RS232 sans fil - Module XBee - Réseau ZigBee
22 septembre 2008, par Dom Fleury

Bravo pour cet article très pédagogique et utile ! J’ai aussi l’idée de relier par radio un PC et un microcontrôleur Cubloc (pour le fun car je suis amateur et en retraite !). La liaison PC-USB-XBee marche. Avec XCTU sur le PC je peux interroger et modifier les deux modules XBee, mais pas de com à la mise en service (Led RSSI éteintes sur les deux extrémités, même si on envoie des données). Pas possible de maj A1 et CE pour mode transparent. Problème version ? Xbee série 2 et doc série 1 ? Firmware à recharger (XB24 B, firm 1220) ? J’attend avec impatience la suite de votre article. Merci encore !

Dominique (Orléans) Ps : dommage que limoges soit si loin, j’ai aussi besoin de recyclage en électronique car ce n’était pas mon métier)

Répondre à ce message

Liaison RS232 sans fil - Module XBee - Réseau ZigBee
25 septembre 2008, par Olivier DARTOIS

Merci pour vos encouragements ça fait toujours plaisir. Pour discuter de votre projet merci de me contacter directement par mail :

olivier point dartois at ac-limoges point fr

merci d’avance et bonne expérimentation

Répondre à ce message

Liaison RS232 sans fil - Module XBee - Réseau ZigBee
5 août 2008

merci pour ce didactiel détaillé.

j’ai une tablette graphique intuos serie et j’en ai marre du fils. ( cela sera un bon moyen de passé en USB et sans fils.)

j’attend donc le module de reception avec impatience.(a moins que cela soit le meme module mais reprogrammé)

Répondre à ce message

Liaison RS232 sans fil - Module XBee - Réseau ZigBee
7 août 2008

Je pense terminer l’article avant fin aout. J’ai testé une communication entre deux modules XBee à 115200baud/s pour programmer un PIC à distance et çà fonctionnait bien. Je pense que la tablette doit avoir une vitesse de transmission plus faible (peut être 9600). En tout cas si c’est le cas la transmission devrait passer dans tous les cas (j’ai eu quelques problèmes pour atteindre 115200). Il vous faudra donc juste un module en mode coordinateur (a reflasher car les modules sont livrés en mode routeur/end device) et un module en mode routeur/end device. En configurant le SL et SH de chacun la communication s’effectuera sans problème. N’hésitez pas à me recontacter quand l’article sera terminé. Cordialement.

Répondre à ce message

Liaison RS232 sans fil - Module XBee - Réseau ZigBee
21 juin 2008

Bonjour ,

j’aurai juste une petite remarque sur la liaison FT232 <-> Xbee. Le xbee communique avec tension de 3,3V . Sur le schema le VCCIO du FT232 est connecté au VCC (5V) donc les liaison avec le Xbee sont en + 5V.

Il faudrait juste relié le 3V3OUT au VCCIO pour avoir les bonnes tension. Le xbee supporte le +5V mais vu que le FT232 permet d’avoir le 3,3 autant l’utilisé non ? En tout cas tres bon article , bonne continuation.

Répondre à ce message

Liaison RS232 sans fil - Module XBee - Réseau ZigBee
23 juin 2008, par Dartois Olivier

Bonjour,

Votre remarque est tout à fait pertinente. Le XBee est tolérant sur ces entrées au 5V mais il n’y a aucune raison de ne pas lui fournir du 3,3V.

Je corrigerai donc cette erreur dans un nouveau schéma structurel. Par contre je ne referai sans doute pas tout de suite un nouveau routage.

Merci encore.

Répondre à ce message

Dans la même rubrique :
Programmateur de PIC12F au format DIL ou SO
Initiation au langage C pour µC PIC
Projet Station Météo Simple piloté par µC PIC
TP d’initiation au langage C pour PIC
Sujet BAC 2006 ESTI
Programmation d’un PLD par liaison JTAG
Affichage à persistence rétinienne
Gestion d’un clavier de type PC-AT par un PIC
GBF à PIC 16F876 ou PIC18F2520 (DDS or NCO with PIC 16F/18F)
Programmation des PIC 16F et 18F avec TinyBootLoader


| Visiter le site de l'académie de Limoges | Plan du site | Accueil
|