Vous êtes sur la page 1sur 36

XBee Arduino

Jrme Abel Jan 21, 2013

Quand il sagit de concevoir des systmes embarqus, interactifs ou bien quand des objets doivent communiquer entre eux, plusieurs solutions sont possibles. Nous explorerons ici le protocole Zigbee qui permet de communiquer par ondes radio, cest--dire sans l. Je meorcerais dans un premier temps de prsenter les caractristiques de ce protocole et dviter certaines confusions (partie 1). Ensuite je prsenterais des cas pratiques avec et sans la carte Arduino (parties 3 et 4). Pour en savoir plus sur la carte Arduino, vous pouvez consulter ma page Arduino. noter que ces cas pratiques ne concernent pour linstant (01/2013) que la srie 1 du module XBee. Nous aborderons des domaines varis faisant appel des notions plus ou moins avances en rseaux informatiques. Loin dtre un obstacle, ce sera loccasion dapporter quelques lments de comprhension dans lapprentissage classique des systmes informatiques (partie 2). Nhsitez pas me faire part de vos remarques pour amliorer ce document, rectier certaines erreurs sur la page contact. PDF : xbee-arduino.pdf (4.7M0) SOURCES : ./ressources/xbee-arduino (images, textes, codes, schmas) URL : http ://jeromeabel.net/ressources/xbee-arduino LICENCE : GNU/GPLv3

Table des matires


1 Prsentation du XBee 1.1 Applications . . . . . . . . . . . . 1.2 Pourquoi choisir le sans l ? . . . 1.3 Xbee ou Zigbee ? . . . . . . . . . 1.4 ZigBee et 802.15 . . . . . . . . . 1.5 Sries 1 et 2 ? . . . . . . . . . . . 1.6 Antennes . . . . . . . . . . . . . 1.7 Communication avec lordinateur 1.8 Alimentation . . . . . . . . . . . 1.9 Matriel ncessaire . . . . . . . . 2 Notions de rseaux 2.1 Protocoles de communication . 2.2 Communication srie . . . . . . 2.2.1 Duplex / transceiver . . 2.2.2 Liaison srie / parallle 2.2.3 Synchrone / asynchrone 2.2.4 Baud / bits par seconde 2.2.5 Norme RS 232 . . . . . 2.3 Rseaux sans ls . . . . . . . . 3 Conguration 3.1 Montage . . . . . . . . 3.2 Connatre son matriel 3.3 Terminal . . . . . . . . 3.4 Modes . . . . . . . . . 3.5 Commandes AT . . . . 3.6 Adressage . . . . . . . 3.7 Entres / sorties . . . 3.8 Mode API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 5 6 7 7 9 9 10 11 13 13 16 16 17 18 19 20 20 24 24 24 25 26 26 27 27 29 30 30 31 32 33 36 36 36 36 36

4 Montages 4.1 XBee > XBee . . . . . . . . . . . . 4.2 XBee > XBee/ordinateur . . . . . 4.3 XBee/Arduino > XBee/ordinateur 4.4 XBee/Arduino > XBee/Arduino . 5 Ressources 5.1 Livres . . . . . . . . . 5.2 Manuels et rfrences . 5.3 Tlchargements . . . 5.4 Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Prsentation du XBee

Les produits MaxStream XBee sont des modules de communication sans l trs populaires fabriqus par lentreprise Digi International. Ils ont t certis par la communaut industrielle ZigBee Alliance en 2006 aprs le rachat de MaxStream par Digi International. La certication Zigbee se base sur le standard IEEE 802.15.4 qui dnit les fonctionnalits et spcications des rseaux sans l dimension personnelle (Wireless Personal Area Networks : WPANs). Nous verrons plus loin chacun des termes qui peuvent poser problme. Les principales caractristiques du XBee : frquence porteuse : 2.4Ghz portes varies : assez faible pour les XBee 1 et 2 (10 - 100m), grande pour le XBee Pro (1000m) faible dbit : 250kbps faible consommation : 3.3V @ 50mA entres/sorties : 6 10-bit ADC input pins, 8 digital IO pins scurit : communication able avec une cl de chirement de 128-bits faible cot : 25 simplicit dutilisation : communication via le port srie ensemble de commandes AT et API exibilit du rseau : sa capacit faire face un nud hors service ou intgrer de nouveaux nuds rapidement grand nombre de nuds dans le rseau : 65000 topologies de rseaux varies : maill, point point, point multipoint

1.1

Applications

Le ZigBee semble avoir t conu pour raliser ce quon appelle lInternet des objets, un ensemble dobjets communiquants voir "autonomes", une extension dInternet aux objets physiques. La domotique est lexemple le plus parlant.

Sen entrer dans les dtails car ce nest pas le propos ici, la vision dun monde o tout doit tre connect, du frigo aux enfants, se rapproche pour ma part plus du cauchemar que du rve. Les technologies de communication sont aussi utilises par des groupes mercantiles et cyniques qui ne cessent de faire reculer la dmocratie. Voir ce propos le chapitre "Intrusion" page 53 de ma prsentation sur la vie des objets. Heureusement, des artistes sapproprient ces technologies et les utilisent des ns plus potiques.

Ici un couple doiseaux de papier communiquent ensemble. Quand lun est manipul, lautre sallume (Jie Qi messenger).

Dans Robotics drums, des servo-moteurs contrls distance tapent sur 18 percussions Darbukas pour crer des rythmes indits dans la ville.

Une autre application peut savrer trs utile : programmer distance une carte Arduino. En eet, dhabitude on relie sa carte avec cble USB, mais comment faire quand la carte est situe trois mtres de hauteur comme cest le cas dans mon projet Chimres Orchestra ? La programmation distance est donc la solution : programming Arduino Wirelessly.

1.2

Pourquoi choisir le sans l ?

premire vue, le sans l prsente bien des avantages. Il permet de ne pas encombrer un espace de travail, dquiper des appareils mouvants, de communiquer dans des endroits innacessibles. Cependant, il faut aussi prendre en considration dautres paramtres : La communication sans l ne sera jamais aussi able quune communication laire. Le signal peut tre dform par dautres ondes et par des obstacles. Par consquent, commencez toujours tester votre systme avec une communication laire. moins de rcuprer lnergie des ondes lectromagntiques ambiantes (Free Energy), vous aurez toujours besoin dun l pour alimenter votre module. Lenvironnement semble aujourdhui satur dondes lectromagntiques, on parle de pollution lectromagntique. Le XBee gnre des radiations lectromagntiques alors pourquoi en rajouter ? La communication nest pas 1-1 entre lmetteur et le rcepteur. En eet les ondes radio rayonnent en cercle autour de lmetteur. Seuls les appareils dcryptant le bon protocole peuvent direncier les informations provenant dun module Zigbee, dun module Bluetooth ou de routeurs Wi-Fi, pourtant tous moduls par la mme frquence de 2,4Ghz.

Par exemple, lartiste Benjamin Gaulon dmontre dans son projet 2.4Ghz quil est possible de recevoir dans lespace public le signal des vidos de surveillance sens rester priv ... Note : certains lments de cette rubrique sinspirent de la page 178 du livre Making Things Talk de Tom Igoe.

1.3

Xbee ou Zigbee ?

Bee signiant "abeille", le choix du nom donne limage quil peut y avoir plusieurs petits modules connects ensemble comme une colonie dabeilles. Au dbut, on peut confondre les termes XBee et ZigBee. En fait, comme expliqu au dbut de larticle, le ZigBee est un protocole de communication qui sappuie sur le travail du groupe IEEE 802.15.4 et dnit par le groupe de professionnels ZigBee Alliance. Le XBee est une marque, un produit qui utilise le protocole ZigBee. Do you bien compris ?

Le XBee tant devenu populaire, sa forme si particulire est aujourdhui reprise par des fabricants de puces Bluetooth. Comme il existe beaucoup de shields arduinos et dadaptateurs XBee, cela sera sans doute compatible avec les puces Bluetooth.

1.4

ZigBee et 802.15

Dans cet image, on voit bien la rpartition des rles entre le standard 802.15 et le protocole ZigBee. Tout cela est expliqu dans la partie 2 qui traite des rseaux, des protocoles et des couches du modle OSI.

1.5

Sries 1 et 2 ?

Plusieurs produits XBee existent, ce qui peut crer quelques confusions. Il faut retenir quil y a deux catgories de XBee : la srie 1 et la srie 2. Les modules de la srie 1 ont souvent un "802.15.4" qui sajoutent leurs noms. 7

Les modules de la srie 2 sont disponibles en plusieurs versions : XBee ZNet 2.5 (obsolte), le ZB (lactuel) et le 2B (le plus rcent). Vous avez aussi des XBee Pro, qui font la mme chose, mais avec de plus grandes capacits, notamment la porte qui semble pouvoir aller jusqu 1000 mtres ! Pour en savoir plus, tlcharger le tableau de comparaison des modules XBee : http ://www.digi.com/pdf/chart_xbee_rf_features.pdf.

Ce quil faut retenir : les modules des sries 1 et 2 ne sont pas compatibles entre eux ; la porte et la consommation sont sensiblement les mmes ; le nombre dentres et sorties est dirent et surtout la srie 2 ne possde pas de sorties analogiques PWM ; les topologies de rseaux possibles ne sont pas les mmes. Avec la srie 1, larchitecture est simple : point point (pair ) ou multipoint (star ). La srie 2 permet en plus de crer des rseaux plus complexes : maills (mesh ) ou en "arbre" (cluster tree ).

1.6

Antennes

Vous aurez aussi choisir le type dantennes du module. En eet, les ondes radios ont besoin dantennes pour mettre et recevoir les signaux.

Ce quil faut retenir : wire : simple, radiations omnidirectionnelles ; chip : puce plate en cramique, petite, transportable (pas de risques de casser lantenne), radiations cardiodes (le signal est attnu dans certaines directions) ; U.FL : une antenne externe nest pas toujours ncessaire ; RPSMA : plus gros que le connecteur U.FL, permet de placer son antenne lextrieur dun botier.

1.7

Communication avec lordinateur

Pour tablir une communication avec lordinateur, il y a deux options : lassemblage de dirents lments comme sur limage ou le XBee USB Explorer. Jai choisi la premire option car un peu moins cher et plus exible. Linconvnient est que a ncessite un peu de soudure (3 minutes) et un petit montage sur plaque essais. Bref, cela revient au mme. La communication en direct sans passer par une Arduino vous permet de congurer rapidement votre XBee. On verra plus loin dans les cas pratiques (partie 4) quon peut aussi congurer le module en le branchant lArduino. Donc se procurer un explorateur nest pas indispensable, mais cest conseiller pour dbuter car cest tout de mme plus simple. La communication entre lordinateur et le XBee se fait via une liaison srie, que je dtaille dans la partie 2.

1.8

Alimentation

Lalimentation doit tre comprise entre 2,8V et 3,4V. Dans mes montages jutilise lalimentation stabilise 3.3V. Dans dautres exemples, il semblerait quassembler deux piles 1,5V ensemble soit susant. Pour tre plus autonome, on peut trouver des montages sur le Web avec le rgulateur de tension LM7833 qui sort directement une tension de 3,3V ou bien avec le LM317 qui permettrait avec des valeurs de rsistances adaptes dobtenir ce que lon souhaite, mais je ne lai pas test.

10

1.9

Matriel ncessaire

Vous trouverez une liste intressante de magasins en ligne sur codelab.fr/177. Je vous conseille de prendre tout dans le mme magasin pour limiter les frais de transports et en France ou en Europe pour viter les taxes (TVA) qui ne sont pas incluses dans certains pays, je pense surtout aux magasins situs aux tats-Unis. En gros, essayez dviter Sparkfun. Synthse de ce dont nous aurons besoin : Modules XBee x 2 (au moins 2 pour crer une connection !) : srie 1 ou 2, antennes laire ou puce XBee Explorer USB (Platine dinterface USB pour modules "XBEE") : en option si vous choisissez la carte FT232 Breakout Board for FT232RL USB to Serial (Module "FTDI Basic Breakout" - 3,3V) Cble mini-USB/USB Breakout board XBee x 2 (Platine dinterface pour modules "XBEE") 2mm XBee socket x 2 Break away headers x 1 Fils prdcoups de prototypages x 1 Plaques essais x 2 (solderless boards) Potentiomtres 10K LEDs x 4 (nimporte lesquelles) Bouton poussoir x 1 Rsistances : 10K, 330 Ohms Coupleurs deux piles 1.5V x 2 Breadboard Power Supply 5V/3.3V (si besoin) Connceteur embase jack/T pour pile 9V Pile 9V Piles 1.5V x 2 Cartes Arduino x 2 Xbee Shield (si besoin) Exemple de ralisation pour voir comment tout sarticule :

11

12

Notions de rseaux

Comme lordinateur, Internet est une uvre collective, compose de briques, dastuces mathmatiques, physiques et lectroniques. Pour utiliser les rseaux informatiques de faon constructive, il faudrait connatre un minimum leur fonctionnement. Rester sur la couche applicative, celle la plus proche de lutilisateur ne nous permet pas dapprhender les concepts et les mots cls auxquels nous sommes confronts quand nous devons nous-mme grer notre propre rseau. Je mettrais laccent sur deux notions qui nous serviront directement apprhender le XBee : les protocoles et la communication srie.

2.1

Protocoles de communication

Entre 1960 et 1964, lide gniale de commutation de paquets est formule conjointement par Leonard Kleinrock, Donald Davies et Paul Baran.

Paul Baran part du constat quun rseau centralis est vulnrable. Si un nud tombe en panne, linformation narrivera pas son destinataire. Cest lpoque de la guerre froide, ces questions sont stratgiques. Une architecture distribue avec des nuds interconnects parait la solution la plus exible et la plus able.

13

Le message envoyer est dcoup en paquets (datagram ). On leur ajoute gnralement une tiquette compose de son adresse, celle du rcepteur et son ordre dans le message original. Il est envoy par des chemins divers vitant les congestions du rseau. Le destinataire remet ensuite le message dans lordre grce aux tiquettes. On oppose cette technique la commutation de circuits utilise par le rseau tlphonique qui bloque un circuit pour une seule communication. Avec la commutation de paquets les ressources sont mutualises, une ligne physique achemine dirents bouts de messages provenant de dirents expditeurs.

Le modle Internet qui est une simplication du modle OSI donne une cohrence la construction et lenvoie de messages. Il propose une architecture en couches, on parle aussi de pile (stack ), dnies et dlimites avec les notions de service, de protocole et dinterface. Chaque couche eectue des tches spciques (services) et doit respecter certaines rgles pour communiquer avec les couches infrieures et suprieures (protocole). Noter que le "P" la n des acronymes HTTP, TCP, UDP, PPP, POP, IP, ICMP, FTP signie bien "protocole". Cette notion est donc centrale. On fait souvent une analogie avec les langages humains : dire "bonjour" pour commencer une conversation ne se fait pas de la mme faon selon les cultures, les protocoles sont dirents. De mme, je ne serais peut-tre pas sensible aux protocoles de sduction des koalas, ce qui serait regrettable tant cet animal a lair sympathique. Le modle OSI nous permet de ne plus confondre le Web et Internet : le Web, via le protocole HTTP, 14

est seulement une des nombreuses applications fonctionnant sur Internet, qui lui est un ensemble de rseaux interconnects. Les protocoles peuvent tre ouverts et devenir des standards. Ils sont alors dcris dans des textes publics dont nous avons accs et qui sont approuvs par des organismes de normalisation nationaux, internationaux ou privs. Lintrt est de poser un rfrentiel commun pour rendre le systme ouvert, stable et modulaire. Vous verrez en fouillant sur le Web, beaucoup dacronymes concernant les documents et organismes. Il est intressant davoir une petite ide de ce que signient les plus connus : RFC, IEN, ISO, ANSI, AFNOR, IETF, IEEE. Le protocole UDP par exemple, est dcrit dans la RFC 768 (Requests For Comments ) datant de 1980 selon les mcanismes dnis par lIETF. Cest une vidence, mais il y a bien des hommes et une histoire derrire ces protocoles.

Dans la construction dun paquets, les donnes utiles, celles de lutilisateur ou du processus sont entoures, on dit encapsules, par des informations gres par les protocoles infrieures, comme les en-ttes (header ). Celles-ci rpondent aux besoins de chaque protocole et identie le paquet travers le rseau.

15

Chaque en-tte a des champs spciques qui ont une taille prcise mesure en octets et qui sont cods. Par exemple, dans len-tte IPv4, un champ cod sur 8 bits dnit le protocole utilis par la couche suprieure, la couche transport. Sil sagit dun paquet UDP, ce champ est 00010001, soit 17 en dcimal ou 0x11 en hexadcimal. Une liste des nombres utiliss permet de dterminer le protocole. Ces champs peuvent tre visualiss par des programmes qui analysent les paquets ou "sniers)" comme Wireshark. Nous aurons besoin plus loin de connatre la composition de la trame ZigBee.

2.2

Communication srie

Pour transmettre des donnes, il faut : coder les donnes (metteur) pour quil y ait le moins de pertes possibles ; les acheminer via un support physique ; les dcoder (rcepteur) suivant les mmes rgles. Au niveau physique, il sagit surtout de lenvoi en srie dtats lectriques binaires (0 ou +5V par exemple). Le signal numrique est converti en signal analogique par des modems et transport sur des supports laires base de cuivre ou de bre optique, ou bien travers le milieu arien pour les transmissions non laires. La transmission numrique des donnes est un ensemble de techniques fascinantes, qui consiste trouver la meilleure solution pour transmettre les niveaux lectriques reprsentant les bits. 2.2.1 Duplex / transceiver

La communication avec le module XBee stablit par une communication srie asynchrone. Cest trs pratique, il sut de quatre ls : deux pour lalimentation (la masse et le +), un pour la rception et un pour lmission. En eet le XBee permet de recevoir et dmettre des donnes en mme temps, on dit quil est full duplex, contrairement la radio FM qui envoient les informations dans un seul sens (simplex) et au talkie-walkie qui ne permet pas deux metteurs de parler en mme temps (half-simplex). On dit aussi que le XBee est un transceiver qui est la contraction de TRANSmitter (metteur) et de reCEIVER (rcepteur).

16

2.2.2

Liaison srie / parallle

On distingue ensuite deux types de communications : srie ou parallle. La premire ncessite moins de ls, toutes les donnes sont envoyes la suite les unes des autres sur le mme l. La seconde est aujourdhui moins utilise du fait des perturbations des la promiscuit des ls sur une nappe parallle et aussi grce la rapidit de traitement des ordinateurs actuels.

"Dans une liaison en srie, les donnes sont envoyes bit par bit sur la voie de transmission. Toutefois, tant donn que la plupart des processeurs traitent les informations de faon parallle, il sagit de transformer des donnes arrivant de faon parallle en donnes en srie au niveau de lmetteur, et inversement au niveau du rcepteur. Ces oprations sont ralises grce un contrleur de communication (la plupart du temps une puce UART, Universal Asynchronous Receiver Transmitter ). Il fonctionne grce un registre dcalage. Le registre de dcalage permet, grce une horloge, de dcaler le registre (lensemble des donnes prsentes en parallle) dune position gauche, puis dmettre le bit de poids fort (celui le plus gauche) et ainsi de suite." (source : http ://www.commentcamarche.net/contents/transmission/transnum.php3) "Serial : Used for communication between the Arduino board and a computer or other devices. All Arduino boards have at least one serial port (also known as a UART or USART) : Serial. It communicates on digital pins 0 (RX) and 1 (TX) as well as with the computer via USB. Thus, if you use these functions, you cannot also use pins 0 and 1 for digital input or output." (source : http ://arduino.cc/en/Reference/Serial)

17

"Toute lastuce dune liaison srie asynchrone repose sur la forme des signaux envoys ; signaux qui permettent une synchronisation du rcepteur sur chaque caractre reu. Examinez la gure ci-dessus qui reprsente la transmission asynchrone de loctet 01010010 (caractre ASCII "R", valeur dcimale 82). Au repos (idle ) la ligne de transmission est ltat logique haut. La transmission dbute par le passage 0 de cette ligne pendant une priode de lhorloge de transmission ce qui constitue le bit de start (ce qui signie dbut ou dpart). Les bits du mot transmettre sont ensuite envoys derrire ce bit de start comme dans une transmission srie synchrone et, aprs le dernier bit utile, la ligne passe nouveau ltat haut pendant une ou deux priodes dhorloge pour constituer ce que lon appelle le ou les bits de stop." (source : http ://www.tavernier-c.com/serie.htm) 2.2.3 Synchrone / asynchrone

On distingue encore deux modes de communication qui spcie le type de synchronisation entre lmetteur et le rcepteur : synchrone et asynchrone. Il faut en eet chantillonner le signal la mme cadence pour rcuprer les bits dans lordre qui constituront le message dorigine. Dans le mode asynchrone, il sagit de se mettre daccord la connexion sur une vitesse de transmission, la synchronisation se faisant ensuite par les bits de start et de stop. Le mode synchrone ddie un l pour la synchronisation, cest le signal dhorloge (clock ).

18

2.2.4

Baud / bits par seconde

La vitesse de transmission est mesure en bauds quil ne faut pas confondre avec le dbit binaire qui mesure la quantit dinformations en bits par seconde bps. Le baud est le nombre de symboles transmis physiquement par seconde, alors que le bit dsigne une unit dinformation. La confusion vient du fait quau dbut les modems transmettaient seulement 1 bit par baud, le dbit en bits par seconde tait donc quivalent au nombre de bauds. Aujourdhui, il est souvent possible de transmettre plusieurs bits par symbole. La mesure en bps de la vitesse de transmission est alors suprieure la mesure en baud. La forumle est la suivante : bps = baud * number of bits per baud.

Dans lexemple ci-dessus, le nombre de symboles possible un instant donn est de quatre : 00, 01, 10, 11. Ces symboles peuvent correspondre des tats lectriques dirents comme -5V, -3V, +3V, +5V ou des modulations damplitude, de frquences ou de phases direntes. Le tout est de pouvoir distinguer au mieux les symboles. Dans cet exemple, le dbit en bauds est de 4 symboles par seconde, et 2 bits sont transmis par symbole. Le dbit binaire est donc le double du dbit en bauds. 8 bps = 4 baud x 2 bits per baud.

La valeur 9600 bps est souvent utilise. Elle rete la limite (ancienne) de certains modems de ne transmettre que 1200 baud et la technique communment utilise de modulation. Cette modulation damplitude en quadrature permet de coder 8 bits par baud en associant une modulation damplitude une modulation de phase. 9600bps = 1200 baud * 8 bits per baud. Pour Arduino, les dbits possibles sont : 300, 600, 1200, 2400, 4800, 9600, 14400, 19

19200, 28800, 38400, 57600, or 115200 bps. 2.2.5 Norme RS 232

Cette norme est encore trs souvent utilise notamment au travers des puces FTDI qui quipent les anciennes Arduinos et dans les cartes dinterface qui permettent de communiquer en srie avec le module XBee. Les nouvelles cartes Arduino Uno utilisent un ATmega328 la place. "Les signaux logiques aux niveaux TTL ou CMOS acceptent assez mal de voyager sur plus de quelques centimtres car leurs formes se dgradent alors un point tel que leur exploitation devient impossible. Pour tablir une liaison srie sur une distance raisonnable, allant de quelques dizaines de centimtres plusieurs centaines de mtres, diverses normes ont donc vu le jour. Mme si elle commence tre quelque peu attaque par la norme RS 422 ; la clbre norme RS 232 a encore un bel avenir devant elle vu sa prsence quasi constante sur tous les quipements informatiques. Cette norme RS 232, appele aussi CCITT V24 ou encore V24 tout court , est dorigine amricaine et dnit deux choses : les niveaux lectriques des signaux utiliss pour la transmission mais aussi un certain nombre de lignes, autres que les lignes dmission et de rception de donnes, ayant des fonctions de contrle. Cette norme est trs prcise et, thoriquement, il est possible de connecter directement et sans problme deux quipements qui la respectent ; malheureusement ce nest pas toujours le cas car de nombreux appareils ne suivent quune partie de la norme. Au point de vue niveau, cette norme est trs simple : tout signal de niveau compris entre +3 et +25 volts est considr comme tant au niveau logique A alors que tout signal compris entre -3 et -25 volts est considr comme tant au niveau logique B. A et B sont quelconques et peuvent tre 0 ou 1 selon que lon travaille en logique positive ou ngative." (source : http ://www.tavernier-c.com/serie.htm)

2.3

Rseaux sans ls

Le standard IEEE 802.15.4 dcrit les rgles et fonctionnalits sur lequel se base le ZigBee mais pas uniquement. Il fait partie dun ensemble plus vaste, dont la racine est le groupe de travail 802.15 et encore plus en amont le groupe 802 qui spcie les standards des rseaux personnels sans l (WPAN). Voyez ici, les dirents groupes concerns et leurs buts. Familiarisons-nous rapidement avec ces nombres rallonge ...

Quand on aborde les rseaux sans l, on est confront au paramtre de porte, cest--dire jusqu quelle distance linformation peut-elle tre transporte en bonne tat. Des catgories de rseau ont ainsi t cres pour direncier les zones gographiques : PAN, LAN, MAN, WAN. Cela ne concerne pas uniquement les rseaux sans ls puisquun rseau Ethernet, trs commun dans les entreprises ou les associations, peut tre un PAN ou un LAN.

20

Pour la transmission de donnes dans le milieu arien, plusieurs options sont possibles. On utilise souvent des ondes lectromagntiques dans le domaine radio utilisant des frquences porteuses rserves selon les pays. Vous verrez souvent les mmes valeurs en France : 433Mhz et 2,4Ghz (comme le four micro-ondes).

Ne sont rpertoris ici que les systmes utilisant les radio-frquences. Il existe aussi des transmissions par infra-rouges, qui sont directionnelles alors que les ondes radio sont omnidirectionnelles. Cela limite beaucoup leur utilisation. Les infra-rouges sont aussi des ondes lectromagntiques mais leur frquence est beaucoup plus leve. Elles nutilisent donc pas dantennes mais des metteurs et rcepteurs infra-rouges sous la forme de LEDs le plus souvent. Cest le cas des tl-commandes de garage ou de tlvision par exemple.

21

Vous pouvez utiliser nimporte quelle technique, cependant il faut prendre de soin de cerner les buts de votre rseau sans l et les contraintes des technologies disponibles : infra-rouge, 433Mhz, Bluetooth, Wi-Fi, ZigBee, GPS, RFID et bien dautres que je ne connais srement pas. Dites-vous quil existe des montages avec Arduino pour toutes ces techniques. Notes sur le 433Mhz Les montages avec des dispositifs 433Mhz sont trs conomiques (8), ils peuvent sure dans certains cas. La dirence de taille avec une transmission Bluetooth, Wi-Fi ou ZigBee cest que les donnes sont envoyes sans contrles, cest--dire que lon nest pas sr quelles soient arrives correctement du fait des interfrences, des obstacles et de tout ce qui peut gner les ondes. Si lapplication nest pas vitale, si quelques erreurs de temps en temps sont acceptables par le systme alors cette solution peut tre pertinente. En revanche, si les donnes sont critiques, relies par exemple un robot gant dans un lieu public ou des appareils mdicaux, cela nest pas envisageable. On prfrera dans ce cas des transmissions contrles et scurises par un protocole comme le Bluetooth, le Wi-Fi ou bien le ZigBee. Pour le 433Mhz, deux autres solutions sont tout de mme possibles pour contourner le problme : essayer de vrier vous-mme les erreurs dans votre programme mais cela demande une bonne comptence en programmation ou le APC220 qui semble pouvoir fournir les vrications demandes. Exemples de montages Arduino / 433Mhz : http ://faitmain.org/janvier-2013/dispositifs.html http ://www.glacialwanderer.com/hobbyrobotics/ ?p=291 ZigBee/Bluetooth/Wi-Fi

22

Le schma ci-dessus permet de comparer le ZigBee, le Bluetooth et le Wi-Fi en termes de porte et de dbits. Une courte vido prsente les caractristiques principales dans le choix des technologies sans l : http ://www.youtube.com/watch ?v=buV11ZPJ7MQ

23

Conguration

Une fois le matriel achet comme indiqu dans la partie 1, il ne reste plus qu assembler notre premier montage, tablir une connection avec lordinateur et connatre la syntaxe pour congurer le module XBee.

3.1

Montage

Souder ladaptateur XBee, il permet juste davoir des contacteurs avec le bon espacement pour pouvoir enfoncer le module dans une platine dessais. Placer la carte FTDI. Connecter lensemble suivant le schma.

3.2

Connatre son matriel

Sous Linux et Mac OSX, en ouvrant un Terminal, on peut taper quelques commandes pour savoir si le module est bien reconnu par votre ordinateur : dmesg | tail , lsusb, ls /dev/tty*

24

Les rponses du terminal ces commandes indiquent que ladaptateur srie est bien connect lordinateur, vous voyez FTDI USB Serial Device ou FT232 USB-Serial, son identiant est ttyUSB0.

3.3

Terminal

Lide maintenant est de pouvoir envoyer des commandes au module et de recevoir ses retours. Pour cela il faut utiliser un programme, appel Terminal ou plus prcisment mulateur de terminal. On lutilise, dans notre cas, pour communiquer en srie avec le port ouvert par le contrleur USB. Des spcits existent entre les systmes dexploitation que je ne peux rpertorier (pour Windows : programme Putty et Xctu tlcharger). Trois possibilits : dans le logiciel Arduino, il y a un moniteur srie sur Linux, installer le logiciel screen pour avoir un utilitaire ultra simple : sudo apt-get install screen. Et ensuite, vous avez accs au port srie avec la commande : screen /dev/ttyUSB0 9600. Le logiciel screen se connecte au port srie de notre adaptateur FTDI. Si vous avez lu la partie concernant la communication en srie (partie 3), vous ne serez pas surpris de voir le chire 9600. En eet, comme il sagit dune communication asynchrone, il faut se mettre daccord sur le dbit en binaire (bits/seconde). Commandes utiles de screen : Ctl-A ? : help et Ctl-A \ : quit (en tapant "y" pour "yes") Une autre solution, sans doute la meilleure, car trs agrable utiliser et multi-plateforme : tlcharger le programme de Tom Igoe xbeeSerialTerminal : http ://www.itp.nyu.edu/physcomp/uploads/xbeeSerialTerminal.zip ce programme est crit avec le logiciel Processing ( tlcharger aussi si vous ne lavez pas). Ouvrez-le avec et lancer-le ou mieux, exportez-le en une application java pour un confort dutilisation optimale. il permet de visualiser les commandes et les retours les uns la suite des autres, contrairement au logiciel screen qui nutilise quune seule ligne pour lenvoi et la rception, ce qui est une source de confusion. faire attention, le programme ouvre par dfaut le premier port srie ouvert. Donc si deux modules sries sont connects (une Arduino en est un), seul un, que lon ne peut pas choisir est accessible.

25

Voici un exemple de communication avec le programme de Tom Igoe.

3.4

Modes

Le XBee possde trois modes : TRANSPARENT, COMMAND et API. Le mode TRANSPARENT est le mode par dfaut la mise en marche du module, celui qui reoit et envoie les donnes. Le mode COMMAND permet de congurer le module, ses entres, ses sorties, son adresse, ladresse de destination de ses messages, etc. Le mode API est un peu plus compliqu et pour dire vrai, je nai pas encore pu lexprimenter avec succs. Une API (Application programming interface ) est un terme bien connu en informatique. Il dsigne une interface fournie par un programme informatique, cest--dire un ensemble de fonctions qui facilitent la programmation dun ct et qui de lautre communique en langage binaire pour le XBee, sous forme de paquets. Je crois comprendre que ce mode devient utile quand il sagit de construire des messages au format XBee partir dun ordinateur ou dun microcontrleur comme Arduino. Le mode API nest possible quavec une connection locale en srie et laire avec lordinateur ou la Arduino, pas entre modules XBee.

3.5

Commandes AT

MODE COMMAND Ouvrez le terminal choisi. Avant tout, il faut dire au XBee que lon veut quitter le mode TRANSPARENT pour entrer dans le mode COMMAND. Pour cela il faut prendre le coup de main, suivez bien ces instructions la lettre : Taper +++ et attendre 1 seconde sans appuyer sur aucune autres touches, le message OK devrait alors sacher comme sur limage du terminal juste en haut. Par ce OK, le XBee nous signale quil passe en mode COMMAND et quil est prt recevoir les messages de conguration. Si vous attendez plus de 10 secondes sans appuyer sur une touche, le XBee revient en mode TRANSPARENT. Vous devez alors retaper +++ pour revenir en mode COMMAND. COMMAND AT Dans les tlcommunications, lensemble de commandes Hayes est un langage de commandes spciques dvelopp pour le modem Hayes SmartModem 300 en 1981. Les commandes sont une srie de mots courts qui permettent de contrler le modem avec un langage simple : composer un numro de tlphone, connatre ltat de la ligne, rgler le volume sonore, etc. Ce jeu de commandes sest ensuite retrouv dans tous les modems produits (sources : http ://fr.wikipedia.org/wiki/Commandes_Hayes, http ://en.wikipedia.org/wiki/Hayes_command_set). Pour avoir un aperu rapide des commandes disponibles pour le XBee, tlcharger le guide de rfrence des commandes AT de Sparkfun TEST La syntaxe est simple, il faut taper AT, puis le nom de la commande, les options si besoin et appuyer sur la touche <Entre>. Essayez donc ces commandes pour faire vos premiers tests : +++ (attendre OK) 26

> OK ATMY1234 <Enter> > OK ATMY <Enter> > 1234 Vous avez dni ici ladresse du module 1234 (ATMY 1234) puis demander quelle tait votre adresse (ATMY).

3.6

Adressage

Pour tout XBee, il faut imprativement dnir ladresse du rseau ATID, son adresse personnelle ATMY et si besoin, ladresse de destination des paquets ATDL.

3.7

Entres / sorties

27

Le XBee series 1 possde un certain nombre dentres et sorties. Les sorties analogiques sont PWM0 et PWM1. Les entres et sorties numriques sont DIO1, DIO2, DIO3, DIO4, DIO5, DIO6, DIO7 ("DIO" pour Digital Input Output). Les entres analogiques sont : AD1, AD2, AD3, AD4, AD5 ("AD" pour Analog Digital, lchantillonnage des tensions analogiques converties en numrique). Pour trouver la bonne commande AT, on peut se rfrer au pages 12, 31, 39 et 43 du manuel (.pdf) ou limage ci-dessous.

Par exemple, si lon veut congurer le XBee pour quil capte un bouton poussoir sur lentre numrique 1, il faudrait crire ATD1 3. D1 pour pin19 (DIO1, AD1) et 3 pour Digital Input.

Il faut savoir que les entres fonctionnent par paire, cest la notion de "line passing". Lentre 0 du XBee#2 correspond la sortie 0 du XBee#1. Comme il y a deux sorties 0 (PWM0, DIO0), alors si on veut avoir deux sorties direntes il faut choisir une autre sortie DIO1 pour lautre LED.

28

3.8

Mode API

En mode API, on peut reconstituer la trame ZigBee pour communiquer directement en binaire avec le module.

Voil, ce que a pourrait donner en langage Arduino, pris sur http ://www.faludi.com/classes/sociableobjects/code/XBee_A

Une autre solution, au lieu de reconstituer la trame, utiliser une bibliothque spciale : http ://code.google.com/p/xbee-api/wiki/WhyApiMode http ://www.instructables.com/id/Conguring-XBees-for-API-Mode/ http ://rubenlaguna.com/wp/2009/03/12/example-of-xbee-api-frames/ Dautres infos : http ://domotique.benchi.fr/domotique/denition-des-trames-du-reseau-zigbee/ http ://domotique.benchi.fr/domotique/zigbee-oem-rf-modules-trame-complete/

29

4
4.1

Montages
XBee > XBee

On peut faire un montage trs simple, le montage direct entre deux modules XBee. Il met deux capteurs sur le XBee#2, un bouton poussoir et un potentiomtre et deux actionneurs sur le XBee#1, deux LEDs. Le bouton allume et teint une LED en on/o (digital ), le potentiomtre allume et teint lautre LED de faon progressive (en PWM). XBEE#2 : metteur (INPUT)

XBEE#1 : receveur (OUTPUT)

30

Conguration INPUT +++ ATRE ATID ATMY ATDL ATIR ATIT ATIU ATIA ATD0 ATP0 ATD1 ATD1 ATWR ATCN Sort du mode conguration OUTPUT

1111 1 0 14 5 1 2 3

1111 0 1 1 2 4 -

Restaure les paramtres par dfaut Adresse du rseau Adresse du module dans le rseau Adresse du destinataire dans le rseau Taux dchantillonnage 20ms (14 en hexadecimal) (p.43 du manuel Nombre dchantillon eectuer avant lenvoi des donnes I/O output enabled : autoriser mission des I/O sans passer par lU I/O input from address 1 POTENTIOMETRE : D0 pour pin20 (DIO0, AD0) et 2 pour ADC LED : P0 pour PWM 0 et 2 pour PWM mode (p.31) BOUTON : D1 pour pin19 (DIO1, AD1) et 3 pour Digital Input LED : D1 pour pin19 (DIO1, AD1) et 4 pour Digital Out Low Sup crit la nouvelle conguration dans la mmoire ash du module

4.2

XBee > XBee/ordinateur

31

Avec le mme montage, on peut visualiser dans le terminal, les informations reues par le XBee#1 avec le convertisseur relier lordinateur. Ces informations ne sont cependant pas tout fait comprhensibles dans le terminal, on ne voit pas de chires par exemple car il sagit de paquet ZigBee.

4.3

XBee/Arduino > XBee/ordinateur

LArduino capte un bouton poussoir et envoie un message tout ou rien au XBee#1 pour allumer la LED. Cette fois, on peut voir dans le terminal les informations de faon comprhnsible. Montage metteur

Code metteur Tlchargement : ./ressources/xbee-arduino/code/emetteur. Simplication du code de Robert Faludi.

32

4.4

XBee/Arduino > XBee/Arduino

Montage rcepteur Lmetteur est le mme que prcdemment, une Arduino avec un bouton poussoir et le XBee2.

33

Code rcepteur Tlchargement : ./ressources/xbee-arduino/code/recepteur. Simplication du code de Robert Faludi.

On congure tout dabord le module XBee1 pour quil reoive les donnes de lautre XBee.

34

Et on rcupre les donnes du port Srie. Ce bout de code est un peu plus compliqu. Pour linstant il ne permet de recevoir quune done la fois. Limites En pratique, on voudrait avoir la possibilit denvoyer plusieurs donnes direntes provenant de plusieurs capteurs et dactionner plusieurs sorties. Les mthodes prsentes ici ne le font pas. Pour cela, deux options semblent envisageable : construire des messages srie plus compliqus avec un identiant (comme ici) ou bien utiliser lAPI XBee pour Arduino.

35

5
5.1

Ressources
Livres
Building Wireless Sensor Networks, de Robert Faludi. Cet ouvrage se consacre uniquement au XBee de la srie 2 pour la mise en place de rseaux maills. Making Things Talk, de Tom Igoe : prsente les communications Ethernet, infra-rouge, radio, XBee, GPS. Attention, le XBee utilis est de la srie 1 et un seul montage XBee est disponible qui est dcevant. Il faut plutt choisir ce livre pour le support dinformations concernant un ensemble de communications.

5.2

Manuels et rfrences

Le manuel du XBee 802.15.4 (Series 1) : http ://ftp1.digi.com/support/documentation/90000982_B.pdf Series 1 : http ://www.sparkfun.com/datasheets/Wireless/Zigbee/XBee-Datasheet.pdf XBee Znet 2.5 (old Series 2) : http ://www.sparkfun.com/datasheets/Wireless/Zigbee/XBee-2.5-Manual.pdf ZB (current Series 2) : http ://ftp1.digi.com/support/documentation/90000976_G.pdf Guide de rfrence des commandes AT : http ://www.sparkfun.com/datasheets/Cellular%20Modules/AT_Commands_R Comparaisons des modules : http ://www.digi.com/pdf/chart_xbee_rf_features.pdf

5.3

Tlchargements
XBee Serial Terminal (processing) : http ://www.itp.nyu.edu/physcomp/uploads/xbeeSerialTerminal.zip Code Arduino : http ://www.faludi.com/classes/sociableobjects/code/XBee_Analog_Duplex_Sender.pde Codes Arduino de mes exemples : http ://jeromeabel.net/les/ressources/xbee-arduino/code/ Schmas lectroniques - Fritzing : http ://fritzing.org/ Schmas lectroniques - Eagle : http ://www.cadsoftusa.com/download-eagle/ ?language=en

5.4

Sites

Magasins dlectronique : http ://codelab.fr/177 Quelques astuces pour bien choisir le XBee : XBee buying guide http ://www.faludi.com/projects/common-xbee-mistakes/ http ://www.faludi.com/bwsn/xbee-level-shifting/ http ://wiki.labomedia.org/index.php/Xbee http ://www.kobakant.at/DIY/ ?p=1215 http ://bildr.org/2011/04/arduino-xbee-wireless/ http ://itp.nyu.edu/physcomp/Tutorials/XbeeBasics http ://examples.digi.com/ http ://www.csquad.org/tag/xbee/ http ://iris.appert44.org/plegal/index.php/ZigBee-doc-travail http ://www.pobot.org/-Reseaux-ZigBee-.html http ://veille-techno.blogs.ec-nantes.fr/index.php/2012/01/06/wi--bluetooth-zigbee-et-la-domotique/ http ://sherinnovation.com/simple-xbee-communication-with-arduino/ http ://www.instructables.com/id/Conguring-XBees-for-API-Mode/ http ://www.cooking-hacks.com/index.php/documentation/tutorials/arduino-xbee-shield http ://www.johnhenryshammer.com/WOW2/mainPage.php http ://djynet.net/ ?p=96 http ://www.ucopia.com/uploads/newsletters/01/part3.htm http ://homewireless.org/wp/2010/05/antennas-part-1/ http ://john.crouchley.com/blog/archives/750 http ://domotique.benchi.fr/domotique/zigbee-2/ En savoir plus sur les rseaux : Liaisons srie et parallle Bauds et bps Transport de lInformation Notion de valence. http ://www.siteduzero.com/informatique/tutoriels/les-reseaux-de-zero http ://sebsauvage.net/comprendre/tcpip/ http ://www.software-engineer-training.com/higher-layer-network-protocols/transmission-control-protocoltcp/ http ://www.zeitoun.net/articles/les_protocoles_reseaux/start

36