• Aucun résultat trouvé

[PDF] Tutoriel Arduino et XBee communication | Cours Arduino

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Tutoriel Arduino et XBee communication | Cours Arduino"

Copied!
36
0
0

Texte intégral

(1)

XBee Arduino

Jérôme Abel

Jan 21, 2013

Quand il s’agit de concevoir des systèmes embarqués, interactifs ou bien quand des objets doivent communiquer entre eux, plusieurs solutions sont possibles. Nous explorerons ici le protocoleZigbeequi 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 pageArduino. À 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 in-formatiques. 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 pagecontact.

– PDF :xbee-arduino.pdf (4.7M0)

– SOURCES : ./ressources/xbee-arduino(images, textes, codes, schémas) – URL :http ://jeromeabel.net/ressources/xbee-arduino

(2)

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

(3)

1

Présentation du XBee

Les produits MaxStream XBee™ sont des modules de communication sans fil très populaires fabriqués par l’entrepriseDigi International. Ils ont étécertifiéspar la communauté industrielleZigBee Allianceen 2006 après lerachat de MaxStreampar Digi International. La certificationZigbeese base sur le standardIEEE 802.15.4qui 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 nœud hors service ou à intégrer de nouveaux nœuds rapidement

– grand nombre de nœuds 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. Ladomotiqueest 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 lavie des objets.

(4)

Ici un couple d’oiseaux de papier communiquent ensemble. Quand l’un est manipulé, l’autre s’allume (Jie Qi messenger).

DansRobotics drums, des servo-moteurs contrôlés à distance tapent sur 18 percussions Darbukas pour créer des rythmes inédits dans la ville.

(5)

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 projetChimè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 électroma-gné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.

(6)

Par exemple, l’artiste Benjamin Gaulon démontre dans son projet2.4Ghzqu’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 Talkde Tom Igoe.

1.3

Xbee ou Zigbee ?

Beesignifiant "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 ?

(7)

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.

(8)

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;

– lestopologies de réseauxpossibles 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).

(9)

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 car-dioï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.

(10)

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’autresexemples, 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é.

(11)

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 XBeex 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 headersx 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)

(12)
(13)

2

Notions de réseaux

Comme l’ordinateur, Internetest une œuvre collective, composée de briques, d’astuces mathématiques, phy-siques 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 decommutation de paquetsest formulée conjointement par Leonard Klein-rock, Donald Davies etPaul Baran.

Paul Baran part du constat qu’un réseau centralisé est vulnérable. Si un nœud tombe en panne, l’informa-tion n’arrivera pas à son destinataire. C’est l’époque de la guerre froide, ces quesl’informa-tions sont stratégiques. Une architecture distribuée avec des nœuds interconnectés parait la solution la plus flexible et la plus fiable.

(14)

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 dumodèle OSIdonne 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.

(15)

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 desstandards. 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 ditencapsulé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.

(16)

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)" commeWireshark.

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éesest 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

(17)

2.2.2 Liaison série / parallèle

On distingue ensuite deux types de communications : série ou parallèle. La première nécessite moins de fils, toutes les données sont envoyées à la suite les unes des autres sur le même fil. La seconde est aujourd’hui moins utilisée du fait des perturbations dûes à la promiscuité des fils sur une nappe parallèle et aussi grâce à la rapidité de traitement des ordinateurs actuels.

"Dans une liaison en série, les données sont envoyées bit par bit sur la voie de transmission. Toutefois, étant donné que la plupart des processeurs traitent les informations de façon parallèle, il s’agit de transformer des données arrivant de façon parallèle en données en série au niveau de l’émetteur, et inversement au niveau du récepteur. Ces opérations sont réalisées grâce à un contrô-leur de communication (la plupart du temps une puce UART, Universal Asynchronous Receiver

Transmitter). Il fonctionne grâce à un registre à décalage. Le registre de décalage permet, grâce

à une horloge, de décaler le registre (l’ensemble des données présentes en parallèle) d’une position à gauche, puis d’émettre 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 :

(18)

"Toute l’astuce d’une liaison série asynchrone repose sur la forme des signaux envoyés ; signaux qui permettent une synchronisation du récepteur sur chaque caractère reçu. Examinez la figure ci-dessus qui représente la transmission asynchrone de l’octet 01010010 (caractère ASCII "R", valeur décimale 82). Au repos (idle) la ligne de transmission est à l’état logique haut. La transmission débute par le passage à 0 de cette ligne pendant une période de l’horloge de transmission ce qui constitue le bit de

start (ce qui signifie début ou départ). Les bits du mot à transmettre sont ensuite envoyés derrière ce

bit de start comme dans une transmission série synchrone et, après le dernier bit utile, la ligne passe à nouveau à l’état haut pendant une ou deux périodes d’horloge pour constituer ce que l’on 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 spécifie le type de synchronisation entre l’émetteur et le récepteur : synchrone et asynchrone. Il faut en effet échantillonner le signal à la même cadence pour récupérer les bits dans l’ordre qui constituront le message d’origine. Dans le mode asynchrone, il s’agit de se mettre d’accord à la connexion sur une vitesse de transmission, la synchronisation se faisant ensuite par les bits de start et de

(19)

2.2.4 Baud / bits par seconde

La vitesse de transmission est mesurée en baudsqu’il ne faut pas confondre avec le débit binaire qui mesure la quantité d’informations en bits par seconde bps. Le baud est le nombre de symboles transmis physiquement par seconde, alors que le bit désigne une unité d’information. La confusion vient du fait qu’au début les modems transmettaient seulement 1 bit par baud, le débit en bits par seconde était donc équivalent au nombre de bauds. Aujourd’hui, il est souvent possible de transmettre plusieurs bits par symbole. La mesure en bps de la vitesse de transmission est alors supérieure à la mesure en baud. La forumle est la suivante : bps = baud * number of bits

per baud.

Dans l’exemple ci-dessus, le nombre de symboles possible à un instant donné est de quatre : 00, 01, 10, 11. Ces symboles peuvent correspondre à des états électriques différents comme -5V, -3V, +3V, +5V ou à des

modulations d’amplitude, de fréquences ou de phasesdifférentes. Le tout est de pouvoir distinguer au mieux les symboles. Dans cet exemple, le débit en bauds est de 4 symboles par seconde, et 2 bits sont transmis par symbole. Le débit binaire est donc le double du débit en bauds. 8 bps = 4 baud x 2 bits per baud.

La valeur 9600 bps est souvent utilisée. Elle reflète la limite (ancienne) de certains modems de ne transmettre que 1200 baud et la technique communément utilisée de modulation. Cettemodulation d’amplitude en quadrature

(20)

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

Cette norme est encore très souvent utilisée notamment au travers des pucesFTDIqui équipent les anciennes Arduinos et dans les cartes d’interface qui permettent de communiquer en série 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 centimètres car leurs formes se dégradent alors à un point tel que leur exploitation devient impossible. Pour établir une liaison série sur une distance raisonnable, allant de quelques dizaines de centimètres à plusieurs centaines de mètres, diverses normes ont donc vu le jour. Même si elle commence à être quelque peu attaquée par la norme RS 422 ; la célèbre normeRS 232a encore un bel avenir devant elle vu sa présence quasi constante sur tous les équipements informatiques. Cette norme RS 232, appelée aussi CCITT V24 ou encore V24 « tout court », est d’origine américaine et définit deux choses : les niveaux électriques des signaux utilisés pour la transmission mais aussi un certain nombre de lignes, autres que les lignes d’émission et de réception de données, ayant des fonctions de contrôle. Cette norme est très précise et, théoriquement, il est possible de connecter directement et sans problème deux équipements qui la respectent ; malheureusement ce n’est pas toujours le cas car de nombreux appareils ne suivent qu’une partie de la norme. Au point de vue niveau, cette norme est très simple : tout signal de niveau compris entre +3 et +25 volts est considéré comme étant au niveau logique A alors que tout signal compris entre -3 et -25 volts est considéré comme étant au niveau logique B. A et B sont quelconques et peuvent être 0 ou 1 selon que l’on travaille en logique positive ou négative." (source : http ://www.tavernier-c.com/serie.htm)

2.3

Réseaux sans fils

Le standardIEEE 802.15.4décrit les règles et fonctionnalités sur lequel se base le ZigBee mais pas uniquement. Il fait partie d’un ensemble plus vaste, dont la racine est le groupe de travail 802.15 et encore plus en amont le groupe 802 qui spécifie les standards des réseaux personnels sans fil (WPAN). Voyez ici, les différents groupes concernés et leurs buts. Familiarisons-nous rapidement avec ces nombres à rallonge ...

Quand on aborde les réseaux sans fil, on est confronté au paramètre de portée, c’est-à-dire jusqu’à quelle distance l’information peut-elle être transportée en bonne état. Des catégories de réseau ont ainsi été créées pour différencier les zones géographiques : PAN, LAN, MAN, WAN. Cela ne concerne pas uniquement les réseaux sans fils puisqu’un réseau Ethernet, très commun dans les entreprises ou les associations, peut être un PAN ou un LAN.

(21)

Pour la transmission de données dans le milieu aérien, plusieurs options sont possibles. On utilise souvent des ondes électromagnétiques dans le domaine radio utilisant des fréquences porteuses réservées selon les pays. Vous verrez souvent les mêmes valeurs en France : 433Mhz et 2,4Ghz (comme le four micro-ondes).

Ne sont répertoriés ici que les systèmes utilisant les radio-fréquences. 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 électromagnétiques mais leur fréquence est beaucoup plus élevée. Elles n’utilisent donc pas d’antennes mais des émetteurs et récepteurs infra-rouges sous la forme de LEDs le plus souvent. C’est le cas des télé-commandes de garage ou de télévision par exemple.

(22)

Vous pouvez utiliser n’importe quelle technique, cependant il faut prendre de soin de cerner les buts de votre réseau sans fil et les contraintes des technologies disponibles : infra-rouge, 433Mhz, Bluetooth, Wi-Fi, ZigBee, GPS, RFID et bien d’autres que je ne connais sûrement pas. Dites-vous qu’il existe des montages avec Arduino pour toutes ces techniques.

Notes sur le 433Mhz

Les montages avec des dispositifs 433Mhz sont très économiques (˜8€), ils peuvent suffire dans certains cas. La différence de taille avec une transmission Bluetooth, Wi-Fi ou ZigBee c’est que les données sont envoyées sans contrôles, c’est-à-dire que l’on n’est pas sûr qu’elles soient arrivées correctement du fait des interférences, des obstacles et de tout ce qui peut gêner les ondes. Si l’application n’est pas vitale, si quelques erreurs de temps en temps sont acceptables par le système alors cette solution peut être pertinente. En revanche, si les données sont critiques, reliées par exemple à un robot géant dans un lieu public ou à des appareils médicaux, cela n’est pas envisageable. On préfèrera dans ce cas des transmissions contrôlées et sécurisées par un protocole comme le Bluetooth, le Wi-Fi ou bien le ZigBee. Pour le 433Mhz, deux autres solutions sont tout de même possibles pour contourner le problème : essayer de vérifier vous-même les erreurs dans votre programme mais cela demande une bonne compétence en programmation ou leAPC220qui semble pouvoir fournir les vérifications demandées.

Exemples de montages Arduino / 433Mhz :

– http ://faitmain.org/janvier-2013/dispositifs.html

– http ://www.glacialwanderer.com/hobbyrobotics/ ?p=291

(23)

Le schéma ci-dessus permet de comparer le ZigBee, le Bluetooth et le Wi-Fi en termes de portée et de débits. Une courte vidéo présente les caractéristiques principales dans le choix des technologies sans fil :

(24)

3

Configuration

Une fois le matériel acheté comme indiqué dans la partie 1, il ne reste plus qu’à assembler notre premier montage, à établir une connection avec l’ordinateur et connaître la syntaxe pour configurer le module XBee.

3.1

Montage

Souder l’adaptateur XBee, il permet juste d’avoir des contacteurs avec le bon espacement pour pouvoir enfoncer le module dans une platine d’essais. Placer la carte FTDI. Connecter l’ensemble suivant le schéma.

3.2

Connaître son matériel

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*

(25)

Les réponses du terminal à ces commandes indiquent que l’adaptateur série est bien connecté à l’ordinateur, vous voyez FTDI USB Serial Device ou FT232 USB-Serial, son identifiant est ttyUSB0.

3.3

Terminal

L’idée 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 précisément émulateur de terminal. On l’utilise, dans notre cas, pour communiquer en série avec le port ouvert par le contrôleur USB. Des spécifités existent entre les systèmes d’exploitation que je ne peux répertorier (pour Windows : programme Putty et Xctu à télécharger).

Trois possibilités :

– dans le logiciel Arduino, il y a un moniteur série

– sur Linux, installer le logiciel screen pour avoir un utilitaire ultra simple : sudo apt-get install screen. Et ensuite, vous avez accès au port série avec la commande : screen /dev/ttyUSB0 9600. Le logiciel screen se connecte au port série de notre adaptateur FTDI. Si vous avez lu la partie concernant la communication en série (partie 3), vous ne serez pas surpris de voir le chiffre 9600. En effet, comme il s’agit d’une commu-nication asynchrone, il faut se mettre d’accord sur le débit 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 très agréable à utiliser et multi-plateforme : télécharger le programme de Tom Igoe

– xbeeSerialTerminal :http ://www.itp.nyu.edu/physcomp/uploads/xbeeSerialTerminal.zip

– ce programme est écrit avec le logiciel Processing (à télécharger aussi si vous ne l’avez pas). Ouvrez-le avec et lancer-le ou mieux, exportez-le en une application java pour un confort d’utilisation optimale. – il permet de visualiser les commandes et les retours les uns à la suite des autres, contrairement au logiciel screen qui n’utilise qu’une seule ligne pour l’envoi et la réception, ce qui est une source de confusion.

– faire attention, le programme ouvre par défaut le premier port série ouvert. Donc si deux modules séries sont connectés (une Arduino en est un), seul un, que l’on ne peut pas choisir est accessible.

(26)

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

3.4

Modes

Le XBee possède trois modes : TRANSPARENT, COMMAND et API. Le mode TRANSPARENT est le mode par défaut à la mise en marche du module, celui qui reçoit et envoie les données. Le mode COMMAND permet de configurer le module, ses entrées, ses sorties, son adresse, l’adresse de destination de ses messages, etc. Le mode API est un peu plus compliqué et pour dire vrai, je n’ai pas encore pu l’expérimenter avec succès. Une

API(Application programming interface) est un terme bien connu en informatique. Il désigne une interface fournie par un programme informatique, c’est-à-dire un ensemble de fonctions qui facilitent la programmation d’un côté et qui de l’autre communique en langage binaire pour le XBee, sous forme de paquets. Je crois comprendre que ce mode devient utile quand il s’agit de construire des messages au format XBee à partir d’un ordinateur ou d’un microcontrôleur comme Arduino. Le mode API n’est possible qu’avec une connection locale en série et filaire avec l’ordinateur 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 l’on 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 s’afficher comme sur l’image du terminal juste en haut. Par ce OK, le XBee nous signale qu’il passe en mode COMMAND et qu’il est prêt à recevoir les messages de configuration.

– Si vous attendez plus de 10 secondes sans appuyer sur une touche, le XBee revient en mode TRANSPA-RENT. Vous devez alors retaper +++ pour revenir en mode COMMAND.

COMMAND AT

Dans les télécommunications, l’ensemble de commandes Hayes est un langage de commandes spécifiques développé pour le modem Hayes SmartModem 300 en 1981. Les commandes sont une série de mots courts qui permettent de contrôler le modem avec un langage simple : composer un numéro de téléphone, connaître l’état de la ligne, régler le volume sonore, etc. Ce jeu de commandes s’est 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 aperçu rapide des commandes disponibles pour le XBee, télécharger le guide de référence des commandes AT de Sparkfun

TESTLa syntaxe est simple, il faut taper AT, puis le nom de la commande, les options si besoin et appuyer sur la touche <Entrée>. Essayez donc ces commandes pour faire vos premiers tests :

(27)

– > OK

– ATMY1234 <Enter> – > OK

– ATMY <Enter> – > 1234

Vous avez défini ici l’adresse du module à 1234 (ATMY 1234) puis demander quelle était votre adresse (ATMY).

3.6

Adressage

Pour tout XBee, il faut impérativement définir l’adresse du réseau ATID, son adresse personnelle ATMY et si besoin, l’adresse de destination des paquets ATDL.

(28)

Le XBee series 1 possède un certain nombre d’entrées et sorties. Les sorties analogiques sont PWM0 et PWM1. Les entrées et sorties numériques sont DIO1, DIO2, DIO3, DIO4, DIO5, DIO6, DIO7 ("DIO" pour Digital Input Output). Les entrées analogiques sont : AD1, AD2, AD3, AD4, AD5 ("AD" pour Analog Digital, l’échantillonnage des tensions analogiques converties en numérique). Pour trouver la bonne commande AT, on peut se référer au pages 12, 31, 39 et 43 dumanuel (.pdf)ou à l’image ci-dessous.

Par exemple, si l’on veut configurer le XBee pour qu’il capte un bouton poussoir sur l’entrée numérique 1, il faudrait écrire ATD1 3. D1 pour pin19 (DIO1, AD1) et 3 pour Digital Input.

Il faut savoir que les entrées fonctionnent par paire, c’est la notion de "line passing". L’entrée 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 différentes il faut choisir une autre sortie DIO1 pour l’autre LED.

(29)

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 surhttp ://www.faludi.com/classes/sociableobjects/code/XBee_Analog_Duplex_Sender.pde.

Une autre solution, au lieu de reconstituer la trame, utiliser une bibliothèque spéciale : – http ://code.google.com/p/xbee-api/wiki/WhyApiMode – http ://www.instructables.com/id/Configuring-XBees-for-API-Mode/ – http ://rubenlaguna.com/wp/2009/03/12/example-of-xbee-api-frames/ D’autres infos : – http ://domotique.benchi.fr/domotique/definition-des-trames-du-reseau-zigbee/ – http ://domotique.benchi.fr/domotique/zigbee-oem-rf-modules-trame-complete/

(30)

4

Montages

4.1

XBee > XBee

On peut faire un montage très simple, le montage direct entre deux modules XBee. Il met deux capteurs sur le XBee#2, un bouton poussoir et un potentiomètre et deux actionneurs sur le XBee#1, deux LEDs. Le bouton allume et éteint une LED en on/off (digital), le potentiomètre allume et éteint l’autre LED de façon progressive (en PWM).

XBEE#2 : émetteur (INPUT)

(31)

Configuration

INPUT OUTPUT +++

ATRE Restaure les paramètres par défaut

ATID 1111 1111 Adresse du réseau

ATMY 1 0 Adresse du module dans le réseau

ATDL 0 1 Adresse du destinataire dans le réseau

ATIR 14 - Taux d’échantillonnage 20ms (14 en hexadecimal) (p.43 du manuel) ATIT 5 - Nombre d’échantillon à effectuer avant l’envoi des données

ATIU 1 - I/O output enabled : autoriser émission des I/O sans passer par l’UART

ATIA - 1 I/O input from address 1

ATD0 2 - POTENTIOMETRE : D0 pour pin20 (DIO0, AD0) et 2 pour ADC (p.12, p.39)

ATP0 - 2 LED : P0 pour PWM 0 et 2 pour PWM mode (p.31)

ATD1 3 BOUTON : D1 pour pin19 (DIO1, AD1) et 3 pour Digital Input

ATD1 4 LED : D1 pour pin19 (DIO1, AD1) et 4 pour Digital Out Low Support

ATWR Écrit la nouvelle configuration dans la mémoire flash du module

ATCN -

-Sort du mode configuration

(32)

Avec le même montage, on peut visualiser dans le terminal, les informations reçues par le XBee#1 avec le convertisseur relier à l’ordinateur. Ces informations ne sont cependant pas tout à fait compréhensibles dans le terminal, on ne voit pas de chiffres par exemple car il s’agit de paquet ZigBee.

4.3

XBee/Arduino > XBee/ordinateur

L’Arduino 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 façon compréhénsible.

Montage émetteur

Code émetteur

(33)

4.4

XBee/Arduino > XBee/Arduino

Montage récepteur

(34)

Code récepteur

Téléchargement : ./ressources/xbee-arduino/code/recepteur. Simplification ducode de Robert Faludi.

(35)

Et on récupère les données du port Série. Ce bout de code est un peu plus compliqué. Pour l’instant il ne permet de recevoir qu’une donée à la fois.

Limites

En pratique, on voudrait avoir la possibilité d’envoyer plusieurs données différentes provenant de plusieurs capteurs et d’actionner plusieurs sorties. Les méthodes présentées ici ne le font pas. Pour cela, deux options semblent envisageable : construire des messages série plus compliqués avec un identifiant (comme ici) ou bien utiliser l’API XBee pour Arduino.

(36)

5

Ressources

5.1

Livres

– Building Wireless Sensor Networks, de Robert Faludi. Cet ouvrage se consacre uniquement au XBee de la série 2 pour la mise en place de réseaux maillés.

– Making Things Talk, de Tom Igoe : présente les communications Ethernet, infra-rouge, radio, XBee, GPS. Attention, le XBee utilisé est de la série 1 et un seul montage XBee est disponible qui est décevant. Il faut plutôt choisir ce livre pour le support d’informations concernant un ensemble de communications.

5.2

Manuels et références

– 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 référence des commandes AT :http ://www.sparkfun.com/datasheets/Cellular%20Modules/AT_Commands_Reference_Guide_r0.pdf] – Comparaisons des modules :http ://www.digi.com/pdf/chart_xbee_rf_features.pdf

5.3

Téléchargements

– 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/files/ressources/xbee-arduino/code/

– Schémas électroniques - Fritzing :http ://fritzing.org/

– Schémas électroniques - Eagle :http ://www.cadsoftusa.com/download-eagle/ ?language=en

5.4

Sites

– Magasins d’électronique : 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-fi-bluetooth-zigbee-et-la-domotique/ – http ://fisherinnovation.com/simple-xbee-communication-with-arduino/ – http ://www.instructables.com/id/Configuring-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 réseaux : – Liaisons série et parallèle

– Bauds et bps – Transport de l’Information – 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-protocol-tcp/ – http ://www.zeitoun.net/articles/les_protocoles_reseaux/start

Références

Documents relatifs

De la représentation filmique faite par le documentaire, à la représentation de soi que travaille l’habitant quand il vient affirmer ses propos face à la caméra, en passant par

92 ( قحلملا 1 ) ةيلولأا هتروص يف ةيداشرلإا تاجاحلا نايبتسا داعبلأا تاـــــــــــــــــــــجاــــــحلا يناعأ لا هذه نم ةلكشملا اهنم يناعأ ةجردب ةطيسب اهنم

ﲪ ﺪﻴﻬﺸﻟﺍ ﺔﻌﻣﺎﺟ ـ ﺔﻴﺳﺎﻴﺴﻟﺍ ﻡﻮﻠﻌﻟﺍﻭ ﻕﻮﻘﳊﺍ ﺔﻴﻠﻛ ﻱﺩﺍﻮﻟﺍ ـ ﺮﻀﳋ ﺔ ﺔﺤﻔﺻ 171 ﻢـﻗر ﻲﺳﺎﺳﻻا نﻮﻧﺎﻘﻟا ﺎﻬﻴﻠﻋ ﺺﻧ ﺎﻣ ﺐﺴﺣ ﻲﺴﻧﻮﺘﻟا عﺮﺸﳌا ﺎﻫﺪﻤﺘﻋا ﱵﻟا ﺔﻣﺎﻌﻟا ةﺪﻋﺎﻘﻟا 38 ﺔﻨـﺴﻟ

Nous avons choisi d’illustrer ce phénomène à travers les dessins de deux artistes, ceux de Pierre-Joseph-Laurent Gaillard de Longjumeau (1762) et ceux d’Alexandre- Nicolas

Nous avons donc décrit deux chantiers d'échange entre artistes de théâtre et artistes numériques. Nous avons tout d'abord décrit un dispositif d'acculturation de gens

The methods makes it possible to obtain precise measurements at medium strain rates in a test range in between that of mechanical testing machines and that of

[r]

We need to show that, with high probability, there exists a mechanism that for any node p, transforms any trace in such a way that the coalition of faulty nodes receives the