Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Module XBee avec Arduino

Par Julien GANDIT Publié le 22/02/2016 à 13:15:40 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Chapter 1. QU’EST-CE QUE L’XBEE ???

Le XBee est un microcontrôleur sans fil fabriqué par Digi qui utilise un émetteur-récepteur sans fil 2,4 GHz pour communiquer avec un autre module XBee. Ces modules sont capables de communiquer avec plus d’un module XBee, ce qui signifie que vous pouvez créer un réseau de modules de partout, du moment qu’ils sont à portée. Il existe plusieurs catégories de modules. Le XBee standard a une puissance d’émission de 1mW avec une portée de 10 à 100 mètres (série 1 et 2) et le XBee Pro dispose d’une puissance d’émission de 60 mW avec une portée pouvant aller jusqu’à 1000 mètres. Il existe aussi différents types d’antennes du module : filaire, chip, U.FL, RPSMA.

Le protocole utilisé

Le XBee utilise le protocole IEEE 802.15.4 pour la couche 2 du modèle OSI et le protocole Zigbee pour la couche 3. Le protocole IEEE 802.15.4 permet la communication entre les modules alors que le protocole Zigbee crée la hiérarchie du réseau et configure d’autres paramètres comme l’association, l’authentification, l’encodage, le routage ou encore les services de la couche d’application autrement appelés les clusters .

Comme dans toutes les communications sans fil, des interférences ou du bruit peuvent venir perturber les données. Le 802.15.4 utilisent le Direct Sequence Spread Spectrum ( DSSS ) pour moduler les informations avant leur envoi à la couche physique. Chaque bit d’information est multiplié en 4 signaux différents. Ce processus utilise plus de bande passante mais une densité spectrale de puissance plus basse ce qui facilite la détection et le décodage du message côté récepteur.

Remarque : le 802.15.4 est un protocole à basse consommation. Il utilise des cycles courts, ce qui permet au transmetteur d’être mis en veille la plupart du temps. Les tâches de réception et d’envoi peuvent aussi être paramétrées de façon à ce qu’elles consomment peu d’énergie.

Zigbee, un protocole de maille ?

Il existe trois types de nœuds dans un protocole Zigbee :

  • Coordinateur : module "maître", il contrôle le réseau.

  • Routeurs : ils routent les informations envoyées par les terminaux.

  • Terminaux : les capteurs qui prennent les informations sur l’environnement.

Le protocole Zigbee crée des topologies en étoile :

  • Les terminaux sont connectés à un routeur ou à un coordinateur.

  • Les routeurs peuvent être connectés entre eux ou avec un coordinateur.

  • Les routeurs et les coordinateurs ne peuvent pas être mis en veille. Ils doivent conserver dans leur buffer les paquets qui sont destinés aux terminaux.

  • Les terminaux peuvent être mis en veille.

Coordinateur

Routeur

Terminal

Le protocole DigiMesh basé sur le 802.15.4 propose un réseau de distribution complète où tous les modules peuvent communiquer entre eux directement sans passer par un routeur, chose que le protocole Zigbee ne propose pas. Ici tous les nœuds ont le même rôle, celui de " end devices + routeurs" . Ils communiquent entre eux en utilisant les datagrammes peer to peer . L’avantage de ce protocole est que les modules terminaux peuvent router les informations de leurs frèros et se mettre en veille lorsqu’ils ne sont pas sollicités.

Une conception bien pensée

Le module XBee offre de nombreuses possibilités en termes d’action. La représentation de la Série 2 ci-contre peut varier légèrement sur une autre catégorie. Néanmoins, la disposition des pins reste la même.

L’espace entre les pattes du XBee étant plus petit que celui d’une plaque, on a besoin d’un adaptateur pour rattraper cet écart. Ils se trouvent facilement dans le commerce. Un simple adaptateur suffit si le XBee est destiné à être posé sur une plaque Arduino. Sinon il existe des adaptateurs avec dongle USB ou encore avec port serial.

Ici, nous avons soudé le XBee sur un adaptateur auquel nous sommes venus souder des pattes mâle-mâle permettant la pose sur la plaque Arduino. A noter : pensez à isoler avec du scotch les pistes entre l’adaptateur et le XBee.

Le montage du XBee est très simple. Il nécessite seulement 4 fils.

Arduino <--> XBee

Vcc +5V <--> Vcc

GND <--> GND

Pin numérique 2 <--> TxD

Pin numérique 3 <--> RxD

On commence par connecter l’alimentation électrique (Vcc) et la terre (GND). On relie ensuite les pins Tx et Rx (Transmission-Réception) du XBee aux pins numériques de la carte.

Selon la carte utilisée, il faut ajouter une résistance 10K/15K pour réduire la tension du Tx de 5V à 3,3V. Je vous conseille de le faire, cela évitera de griller votre XBee.

Cette année, après avoir suivi les instructions de certains sites, j’avais connecté en direct le XBee à ma carte Arduino Dualmilanov. Résultat des courses, le XBee a grillé. Je ne suis pas certain que ça en soit la cause, ça a peut-être été dû à une mauvaise manipulation, mais dans tous les cas, il est préférable de mettre une résistance. Cela vous évitera de perdre du temps à rechercher la panne.

Ces premières pins vous permettent d’être opérationnel rapidement et d’obtenir des premiers résultats. Le XBee dispose de nombreuses autres pins :

  • Les pins analogiques permettent d’obtenir des valeurs qui varient dans un intervalle de 0 à 5V,

  • Le RESET permet d’effacer manuellement les données sur le XBee.

Enfin, un câble USB Serial permet le téléchargement du programme depuis le logiciel vers la carte émettrice. Pour notre projet, il s’agit d’une carte Arduino Dualmilanov.

Un logiciel avancé

Depuis le site de Digi, il est possible de télécharger le logiciel XCTU . Ici je ne vous parlerai pas de la version " Next Generation XCTU" mais de la "Legacy XCTU". L’installation de drivers supplémentaires est parfois demandée. Après avoir branché la carte émettrice à l’ordinateur, et lancer le logiciel, vous devez vous connecter. Dans l’onglet " PC Settings" , sélectionnez le bon port, laissez par défaut 9600ms pour le "Baud rate" (rapidité de la connexion) et connectez-vous. La fenêtre ci-dessous devrait apparaître vous donnant les informations sur le XBee. Vous pouvez retrouver ces informations au dos du XBee.

Cliquez ensuite sur l’onglet " Modem Configuration".

Premiers paramètres à configurer :

Après quelque temps d’inutilisation du logiciel, il est recommandé de vérifier les mises à jour en cliquant sur " Download new versions…" .

Commencez par sélectionner le modèle de votre XBee et sa version. " Function Set" est le rôle que vous souhaitez donner à ce XBee. Il regroupe le protocole utilisé, le type de nœud, et le mode. Il existe 2 modes :

  • AT (ou transparent) se contente de recevoir et d’envoyer les données.

  • API (ou commande) permet de construire des messages au format XBee à partir d'un ordinateur ou d'un microcontrôleur comme Arduino.

Ou alors vous pouvez simplement cliquer sur "Read" pour lire directement les données du XBee.

De nombreuses options de configuration sont ensuite proposées. Selon la configuration choisie, certaines ne sont pas accessibles. Les plus importantes sont les suivantes :

  • ID : PAN ID – l’ID du réseau sur lequel les XBees vont communiquer. Il est donc indispensable que cet identifiant soit le même pour tous les XBee du réseau.

  • DH : Adresse Haute – égale à 0 si la communication se fait avec un seul autre XBee.

  • DL : Adresse Basse – égale à FFFF si on envoie en broadcast.

  • Dans les "Settings" , "D0"…"D5", vous pouvez changer les connexions à digitales (=numériques), analogiques, entrée, sortie.

Chapter 2. COURSE D’ORIENTATION ROBOT

La mission du Follower-Explorer

Le Follower doit parcourir le labyrinthe et rejoindre son ami l’Explorer, en passant par le chemin le plus court. Ce dernier le guidera car lui seul connaît le chemin. On pourra par la suite ajouter plus de modules Explorer pour résoudre le labyrinthe encore plus rapidement.

Un projet ambitieux

Nos objectifs sur ce projet sont en plus de passer du bon temps avec une équipe de passionnés, d’étudier de plus près les systèmes embarqués. Nous nous initierons au matériel et à l’IDE de XBee et apprendrons à paramétrer les modules de façon à récupérer les informations souhaitées. Nous étudierons en profondeur le protocole Zigbee et apprendrons à gérer les données reçues entre l’émetteur et le récepteur. Enfin, nous aurons recours à l’utilisation d’algorithmes axés robotique. Ce projet rassemble donc les côtés hardware et software pour le plaisir de chacun ;-)

Pour ce projet, nous avons à notre disposition 2 Arduinos BOE Shield chacun équipés d’un module XBee de Série 2.

Schéma simplifié sur le transport des données

Plan d’attaque

Communication chat

Branchez le XBee qui jouera le rôle de coordinateur au port Serial. Reprenez les instructions données plus haut pour vous connecter. Dans "Modem Configuration" , sélectionnez " ZIGBEE COORDINATEUR AT". Donnez un PAN ID et cliquez sur " Write". Débrancher le Serial et connectez-le à l’autre XBee. Ouvrez un nouveau logiciel XCTU sans fermer le premier et sélectionnez cette fois-ci " ZIGBEE ROUTER AT". ". Rentrez le même PAN ID et cliquez sur " Write". Positionnez les deux fenêtres côte-à-côte.

Sur chacune des fenêtres, rendez-vous sur l’onglet "Terminal". Côté routeur, tapez du texte. Ce texte se répète du côté du coordinateur. Le routeur envoie les informations au coordinateur par ondes radios.

Connexion entre routeur et coordinateur

A présent, on peut rentrer du code, par exemple des déplacements, du côté de l’Explorer et le Follower les répètera.

Exploration du labyrinthe

Nous considérons dans un premier temps un labyrinthe parfait, c’est-à-dire rectangulaire. L’Explorer équipé de capteurs ultrasons le parcourt jusqu’à ce qu’il trouve la sortie. Plusieurs algorithmes sont envisagés comme celui du suivi du mur de côté qui consiste à dire que l’on trouve obligatoirement la sortie d'un labyrinthe si on longe systématiquement un mur en le gardant, sans jamais le lâcher, à main droite ou à main gauche. Cela implique de parcourir le labyrinthe dans sa totalité.

Mémorisation

L’Explorer doit mémoriser le trajet qu’il a fait et donc la cartographie du labyrinthe afin de pouvoir à la fin les traiter. Nous n’avons pas encore étudié cette partie.

Algo du plus court chemin

A partir des données mémorisées, il s’agit de calculer le plus court chemin à travers le labyrinthe. Nous utiliserons pour cela l’algorithme de Dijkstra basé sur le principe de récursivité en fonction des distances les plus courtes entre les nœuds.

  • A partir de A, 2 routes accessibles, B et F. Les nœuds inconnus sont affectés d’une valeur infinie.

  • La distance la plus courte est celle menant à B. Le passage par B ouvre la voie à C (5) et E (3)

  • La distance la plus courte suivante mène à E et ne change aucune autre distance.

  • Ce tableau donne non seulement la distance minimale du nœud A au nœud J mais aussi le chemin à suivre (J - H - C - A) ainsi que toutes les distances minimales du nœud A aux autres nœuds rangées par ordre croissant.

Les retrouvailles

Après avoir calculé le plus court chemin, l’Explorer envoie ses données au Follower. Celui-ci les intègrent à son code et se déplace via le plus court chemin jusqu’à la sortie.

To be continued…

J’espère que cette première partie vous aura appris des choses et vous aura donné envie d’aller plus loin dans l’étude de ces petits (mais costauds) modules. Je vous invite à monter votre propre projet. Vous ne vous ruinerez pas puisqu’ils ne coûtent que 25€ plus 4€ pour l’adaptateur. Il vous en faut au minimum 2, donc pour moins de 60€ vous pouvez vous éclater. Et si vous êtes en manque d’idée, jetez un œil sur Internet.

Pour ma part, je vous dis "au prochain tutoriel" dans lequel je devrais pouvoir vous présenter plus de pratique.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels