Sie sind auf Seite 1von 7

What is XBee?

● How to choose your XBee?


● How to use your XBee?
● How to use your XBees
(plural)?
entre eux, plusieurs solutions sont possibles. Nous explorerons ici le protocole Zigbee qui permet de
communiquer
par ondes radio, c’est-à-dire sans fil. Je m’efforcerais dans un premier temps de présenter les
caractéristiques de
ce protocole et d’éviter certaines confusions (partie 1). Ensuite je présenterais 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 l’instant (01/2013) que la série 1 du module XBee.
Nous aborderons des domaines variés faisant appel à des notions plus ou moins avancées en réseaux
informatiques.
Loin d’être un obstacle, ce sera l’occasion d’apporter quelques éléments de compréhension dans
l’apprentissage classique des systèmes informatiques (partie 2).
N’hésitez pas à me faire part de vos remarques pour améliorer ce document, rectifier certaines erreurs
sur la
page contact.
– PDF : xbee-arduino.pdf (4.7M0)
– SOURCES : ./ressources/xbee-arduino (images, textes, codes, schémas)
– URL : http ://jeromeabel.net/ressources/xbee-arduino
– LICENCE : GNU/GPLv3
1
Table des matières
1 Présentation du XBee 3
1.1 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Pourquoi choisir le sans fil ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Xbee ou Zigbee ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 ZigBee et 802.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Séries 1 et 2 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Antennes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7 Communication avec l’ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.8 Alimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.9 Matériel nécessaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Notions de réseaux 13
2.1 Protocoles de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Communication série . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Duplex / transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.2 Liaison série / parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.3 Synchrone / asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.4 Baud / bits par seconde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.5 Norme RS 232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 Réseaux sans fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Configuration 24
3.1 Montage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Connaître son matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.5 Commandes AT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.6 Adressage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7 Entrées / sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.8 Mode API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Montages 30
4.1 XBee > XBee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 XBee > XBee/ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3 XBee/Arduino > XBee/ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4 XBee/Arduino > XBee/Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Ressources 36
5.1 Livres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2 Manuels et références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3 Téléchargements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4 Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2
1 Présentation du XBee
Les produits MaxStream XBee™ sont des modules de communication sans fil très populaires fabriqués
par
l’entreprise Digi International. Ils ont été certifiés par la communauté industrielle ZigBee Alliance en
2006 après
le rachat de MaxStream par Digi International. La certification Zigbee se base sur le standard IEEE
802.15.4 qui
définit les fonctionnalités et spécifications des réseaux sans fil à dimension personnelle (Wireless
Personal Area
Networks : WPANs). Nous verrons plus loin chacun des termes qui peuvent poser problème.
Les principales caractéristiques du XBee :
– fréquence porteuse : 2.4Ghz
– portées variées : assez faible pour les XBee 1 et 2 (10 - 100m), grande pour le XBee Pro (1000m)
– faible débit : 250kbps
– faible consommation : 3.3V @ 50mA
– entrées/sorties : 6 10-bit ADC input pins, 8 digital IO pins
– sécurité : communication fiable avec une clé de chiffrement de 128-bits
– faible coût : ˜ 25€
– simplicité d’utilisation : communication via le port série
– ensemble de commandes AT et API
– flexibilité du réseau : sa capacité à faire face à un noeud hors service ou à intégrer de nouveaux
noeuds
rapidement
– grand nombre de noeuds dans le réseau : 65000
– topologies de réseaux variées : maillé, point à point, point à multipoint
1.1 Applications
Le ZigBee semble avoir été conçu pour réaliser ce qu’on appelle l’Internet des objets, un ensemble
d’objets
communiquants voir "autonomes", une extension d’Internet aux objets physiques. La domotique est
l’exemple le
plus parlant.
S’en entrer dans les détails car ce n’est pas le propos ici, la vision d’un monde où tout doit être
connecté, du
frigo aux enfants, se rapproche pour ma part plus du cauchemar que du rêve. Les technologies de
communication
sont aussi utilisées par des groupes mercantiles et cyniques qui ne cessent de faire reculer la
démocratie. Voir à
ce propos le chapitre "Intrusion" page 53 de ma présentation sur la vie des objets.
Heureusement, des artistes s’approprient ces technologies et les utilisent à des fins plus poétiques.
3
Ici un couple d’oiseaux de papier communiquent ensemble. Quand l’un est manipulé, l’autre s’allume
(Jie Qi
messenger).
Dans Robotics drums, des servo-moteurs contrôlés à distance tapent sur 18 percussions Darbukas pour
créer
des rythmes inédits dans la ville.
4
Une autre application peut s’avérer très utile : programmer à distance une carte Arduino. En effet,
d’habitude
on relie sa carte avec câble USB, mais comment faire quand la carte est située à trois mètres de hauteur
comme
c’est le cas dans mon projet Chimères Orchestra ? La programmation à distance est donc la solution :
programming
Arduino Wirelessly.
1.2 Pourquoi choisir le sans fil ?
À première vue, le sans fil présente bien des avantages. Il permet de ne pas encombrer un espace de
travail,
d’équiper des appareils mouvants, de communiquer dans des endroits innacessibles. Cependant, il faut
aussi
prendre en considération d’autres paramètres :
– La communication sans fil ne sera jamais aussi fiable qu’une communication filaire. Le signal peut être
déformé par d’autres ondes et par des obstacles.
– Par conséquent, commencez toujours à tester votre système avec une communication filaire.
– À moins de récupérer l’énergie des ondes électromagnétiques ambiantes (Free Energy), vous aurez
toujours
besoin d’un fil pour alimenter votre module.
– L’environnement semble aujourd’hui saturé d’ondes électromagnétiques, on parle de pollution
électromagnétique.
Le XBee génère des radiations électromagnétiques alors pourquoi en rajouter ?
– La communication n’est pas 1-1 entre l’émetteur et le récepteur. En effet les ondes radio rayonnent en
cercle
autour de l’émetteur. Seuls les appareils décryptant le bon protocole peuvent différencier les
informations
provenant d’un module Zigbee, d’un module Bluetooth ou de routeurs Wi-Fi, pourtant tous modulés par
la même fréquence de 2,4Ghz.
5
Par exemple, l’artiste Benjamin Gaulon démontre dans son projet 2.4Ghz qu’il est possible de recevoir
dans
l’espace public le signal des vidéos de surveillance sensé rester privé ...
Note : certains éléments de cette rubrique s’inspirent de la page 178 du livre Making Things Talk de Tom
Igoe.
1.3 Xbee ou Zigbee ?
Bee signifiant "abeille", le choix du nom donne l’image qu’il peut y avoir plusieurs petits modules
connectés
ensemble comme une colonie d’abeilles. Au début, on peut confondre les termes XBee et ZigBee. En
fait, comme
expliqué au début de l’article, le ZigBee est un protocole de communication qui s’appuie sur le travail du
groupe
IEEE 802.15.4 et définit par le groupe de professionnels ZigBee Alliance. Le XBee est une marque, un
produit
qui utilise le protocole ZigBee. Do you bien compris ?
6
Le XBee étant devenu populaire, sa forme si particulière est aujourd’hui reprise par des fabricants de
puces
Bluetooth. Comme il existe beaucoup de shields arduinos et d’adaptateurs XBee, cela sera sans doute
compatible
avec les puces Bluetooth.
1.4 ZigBee et 802.15
Dans cet image, on voit bien la répartition des rôles entre le standard 802.15 et le protocole ZigBee.
Tout cela
est expliqué dans la partie 2 qui traite des réseaux, des protocoles et des couches du modèle OSI.
1.5 Séries 1 et 2 ?
Plusieurs produits XBee existent, ce qui peut créer quelques confusions. Il faut retenir qu’il y a deux
catégories
de XBee : la série 1 et la série 2. Les modules de la série 1 ont souvent un "802.15.4" qui s’ajoutent à
leurs noms.
7
Les modules de la série 2 sont disponibles en plusieurs versions : XBee ZNet 2.5 (obsolète), le ZB
(l’actuel)
et le 2B (le plus récent). Vous avez aussi des XBee Pro, qui font la même chose, mais avec de plus
grandes
capacités, notamment la portée qui semble pouvoir aller jusqu’à 1000 mètres ! Pour en savoir plus,
télécharger le
tableau de comparaison des modules XBee : http ://www.digi.com/pdf/chart_xbee_rf_features.pdf.
Ce qu’il faut retenir :
– les modules des séries 1 et 2 ne sont pas compatibles entre eux ;
– la portée et la consommation sont sensiblement les mêmes ;
– le nombre d’entrées et sorties est différent et surtout la série 2 ne possède pas de sorties analogiques
PWM;
– les topologies de réseaux possibles ne sont pas les mêmes. Avec la série 1, l’architecture est simple :
point à
point (pair) ou multipoint (star). La série 2 permet en plus de créer des réseaux plus complexes :
maillés (mesh) ou en "arbre" (cluster tree).
8
1.6 Antennes
Vous aurez aussi à choisir le type d’antennes du module. En effet, les ondes radios ont besoin
d’antennes pour
émettre et recevoir les signaux.
Ce qu’il faut retenir :
– wire : simple, radiations omnidirectionnelles ;
– chip : puce plate en céramique, petite, transportable (pas de risques de casser l’antenne), radiations
cardioïdes
(le signal est atténué dans certaines directions) ;
– U.FL : une antenne externe n’est pas toujours nécessaire ;
– RPSMA : plus gros que le connecteur U.FL, permet de placer son antenne à l’extérieur d’un boîtier.
1.7 Communication avec l’ordinateur
Pour établir une communication avec l’ordinateur, il y a deux options : l’assemblage de différents
éléments
comme sur l’image ou le XBee USB Explorer. J’ai choisi la première option car un peu moins cher et plus
flexible.
L’inconvénient est que ça nécessite un peu de soudure (3 minutes) et un petit montage sur plaque à
essais. Bref,
cela revient au même.
La communication en direct sans passer par une Arduino vous permet de configurer rapidement votre
XBee.
On verra plus loin dans les cas pratiques (partie 4) qu’on peut aussi configurer le module en le branchant
à
l’Arduino. Donc se procurer un explorateur n’est pas indispensable, mais c’est à conseiller pour débuter
car c’est
tout de même plus simple.
La communication entre l’ordinateur et le XBee se fait via une liaison série, que je détaille dans la partie
2.
9
1.8 Alimentation
L’alimentation doit être comprise entre 2,8V et 3,4V. Dans mes montages j’utilise l’alimentation
stabilisée
3.3V. Dans d’autres exemples, il semblerait qu’assembler deux piles 1,5V ensemble soit suffisant.
Pour être plus autonome, on peut trouver des montages sur le Web avec le régulateur de tension
LM7833
qui sort directement une tension de 3,3V ou bien avec le LM317 qui permettrait avec des valeurs de
résistances
adaptées d’obtenir ce que l’on souhaite, mais je ne l’ai pas testé.
10
1.9 Matériel nécessaire
Vous trouverez une liste intéressante de magasins en ligne sur codelab.fr/177. Je vous conseille de
prendre
tout dans le même 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 situés aux États-Unis.
En gros,
essayez d’éviter Sparkfun.
Synthèse de ce dont nous aurons besoin :
– Modules XBee x 2 (au moins 2 pour créer une connection !) : série 1 ou 2, antennes filaire ou à puce
– XBee Explorer USB (Platine d’interface 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)
– Câble mini-USB/USB
– Breakout board XBee x 2 (Platine d’interface pour modules "XBEE")
– 2mm XBee socket x 2
– Break away headers x 1
– Fils prédécoupés de prototypages x 1
– Plaques à essais x 2 (solderless boards)
– Potentiomètres 10K
– LEDs x 4 (n’importe lesquelles)
– Bouton poussoir x 1
– Résistances : 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 réalisation pour voir comment tout s’articule :
11
12
2 Notions de réseaux
Comme l’ordinateur, Internet est une oeuvre collective, composée de briques, d’astuces
mathématiques, physiques
et électroniques. Pour utiliser les réseaux informatiques de façon constructive, il faudrait connaître un
minimum leur fonctionnement. Rester sur la couche applicative, celle la plus proche de l’utilisateur ne
nous
permet pas d’appréhender les concepts et les mots clés auxquels nous sommes confrontés quand nous
devons
nous-même gérer notre propre réseau.
Je mettrais l’accent sur deux notions qui nous serviront directement à appréhender le XBee : les
protocoles
et la communication série.
2.1 Protocoles de communication
Entre 1960 et 1964, l’idée géniale de commutation de paquets est formulée conjointement par Leonard
Kleinrock,
Donald Davies et Paul Baran.
Paul Baran part du constat qu’un réseau centralisé est vulnérable. Si un noeud tombe en panne,
l’information
n’arrivera pas à son destinataire. C’est l’époque de la guerre froide, ces questions sont stratégiques. Une
architecture distribuée avec des noeuds interconnectés parait la solution la plus flexible et la plus fiable.
13
Le message à envoyer est découpé en paquets (datagram). On leur ajoute généralement une étiquette
composée
de son adresse, celle du récepteur et son ordre dans le message original. Il est envoyé par des chemins
divers évitant
les congestions du réseau. Le destinataire remet ensuite le message dans l’ordre grâce aux étiquettes.
On oppose
cette technique à la commutation de circuits utilisée par le réseau téléphonique qui bloque un circuit
pour
une seule communication. Avec la commutation de paquets les ressources sont mutualisées, une ligne
physique
achemine différents bouts de messages provenant de différents expéditeurs.
Le modèle Internet qui est une simplification du modèle OSI donne une cohérence à la construction et
l’envoie
de messages. Il propose une architecture en couches, on parle aussi de pile (stack), définies et
délimitées avec les
notions de service, de protocole et d’interface. Chaque couche effectue des tâches spécifiques (services)
et doit
respecter certaines règles pour communiquer avec les couches inférieures et supérieures (protocole).
Noter que le
"P" à la fin des acronymes HTTP, TCP, UDP, PPP, POP, IP, ICMP, FTP signifie 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 même façon selon les cultures, les protocoles sont différents. De
même, je ne
serais peut-être pas sensible aux protocoles de séduction des koalas, ce qui serait regrettable tant cet
animal a
l’air sympathique.
Le modèle 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
réseaux
interconnectés.
Les protocoles peuvent être ouverts et devenir des standards. Ils sont alors décris dans des textes
publics dont
nous avons accès et qui sont approuvés par des organismes de normalisation nationaux, internationaux
ou privés.
L’intérêt est de poser un référentiel commun pour rendre le système ouvert, stable et modulaire. Vous
verrez en
fouillant sur le Web, beaucoup d’acronymes concernant les documents et organismes. Il est intéressant
d’avoir
une petite idée de ce que signifient les plus connus : RFC, IEN, ISO, ANSI, AFNOR, IETF, IEEE. Le protocole
UDP par exemple, est décrit dans la RFC 768 (Requests For Comments) datant de 1980 selon les
mécanismes
définis par l’IETF. C’est une évidence, mais il y a bien des hommes et une histoire derrière ces
protocoles.
Dans la construction d’un paquets, les données utiles, celles de l’utilisateur ou du processus sont
entourées, on
dit encapsulées, par des informations gérées par les protocoles inférieures, comme les en-têtes
(header). Celles-ci
répondent aux besoins de chaque protocole et identifie le paquet à travers le réseau.
15
Chaque en-tête a des champs spécifiques qui ont une taille précise mesurée en octets et qui sont codés.
Par
exemple, dans l’en-tête IPv4, un champ codé sur 8 bits définit le protocole utilisé par la couche
supérieure, la
couche transport. S’il s’agit d’un paquet UDP, ce champ est 00010001, soit 17 en décimal ou 0x11 en
hexadécimal.
Une liste des nombres utilisés permet de déterminer le protocole. Ces champs peuvent être visualisés
par des
programmes qui analysent les paquets ou "sniffers)" comme Wireshark.
Nous aurons besoin plus loin de connaître la composition de la trame ZigBee.
2.2 Communication série
Pour transmettre des données, il faut :
– coder les données (émetteur) pour qu’il y ait le moins de pertes possibles ;
– les acheminer via un support physique ;
– les décoder (récepteur) suivant les mêmes règles.
Au niveau physique, il s’agit surtout de l’envoi en série d’états électriques binaires (0 ou +5V par
exemple).
Le signal numérique est converti en signal analogique par des modems et transporté sur des supports
filaires
à base de cuivre ou de fibre optique, ou bien à travers le milieu aérien pour les transmissions non
filaires. La
transmission numérique des données est un ensemble de techniques fascinantes, qui consiste à trouver
la meilleure
solution pour transmettre les niveaux électriques représentant les bits.
2.2.1 Duplex / transceiver
La communication avec le module XBee s’établit par une communication série asynchrone. C’est très
pratique, il suffit de quatre fils : deux pour l’alimentation (la masse et le +), un pour la réception et un
pour
l’émission. En effet le XBee permet de recevoir et d’émettre des données en même temps, on dit qu’il
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 même temps (half-simplex). On dit aussi que le XBee
est un
transceiver qui est la contraction de TRANSmitter (émetteur) et de reCEIVER (récepteur).
16
2.2.2 Liaison