L’objectif de ce montage est de faire communiquer un PC avec une carte Arduino à l’aide du protocole ZigBee
Voici l’architecture de montage :

Cette article décrit la mise en place d’une topologie réseau simple, permettant de communiquer entre un PC et une carte Arduino à l’aide de modules XBee série 1 de chez Digi.
Les composants
Le montage nécessite les composants suivants :
- un PC, fonctionnant sous Debian GNU/Linux pour ma part ;
- une carte Arduino ou bien un adaptateur USB relié au PC ;
- deux modules de communication XBee ;
- une carte Arduino avec un adaptateur XBee.
A propos du protocole ZigBee
 |
ZigBee est un protocole de haut niveau permettant la communication de petites radios, à consommation réduite, basée sur la norme IEEE 802.15.4 pour les réseaux à dimension personnelle (WPANs).
C’est vraiment un très bon protocole, qui est bien plus simple à mettre en œuvre que le protocole Bluetooth. Je ne sais pas si vous avez déjà vu la stack du protocole. Il y a de quoi avoir peur ;-)
|
|
xBee, ZigBee et beeee?
Si vous êtes perdus avec tous ces sigles, c’est normal. Moi aussi ;-) Voici ce que j’ai compris :
- ZigBee : est le nom du protocole ;
- XBee : est le nom du produit chez le constructeur Digi ;
- IEEE 802.15.4 : c’est le nom du standard qui définit le communication dans un WPAN ;
Ok, c’est vraiment pas plus claire ;-) Mais c’est dit.
Liste des composants
Vous avez besoin des composants suivants :
Partie PC
La connexion entre le module Xbee et un PC peut se faire de deux manières :
- à l’aide d’un adaptateur USB ;
- à l’aide d’une carte Arduino et d’un Shield XBee ;
L’objectif pour la partie PC du montage est de communiquer avec le module XBee, à fin de lui envoyer des commandes.
Cette communication se fait à l’aide d un convertisseur USB-Serial, ce rôle est joué par l’adaptateur USB ou bien par la carte Arduino + Shield.
Connexion à l’aide de l’adaptateur USB
L’adaptateur XBee se connect directement sur le port USB du PC :

Un fois branché, le module est visible à l’aide de la commande lsusb :
Bus 002 Device 013: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Communication à l’aide d’une carte Arduino + XBee Shield
L’adaptateur XBee se connecte directement sur la carte Arduino :

Il est nécessaire de modifier la configuration par du shield pour mettre la carte en mode USB-Serial.
Pour cela, il faut mettre les deux jumper à droite (éloigner du port USB), comme sur cette photo : Configuration mode USB-serial
Vous pouvez ensuite brancher la carte Arduino et voir le module XBee à l’aide de la commande lsusb :
Bus 002 Device 013: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Connexion à l’aide d’un gestionnaire de terminal
Une fois que le module XBee est connecté au PC, il doit être disponible sur /dev/ttyUSB0 :
[31016.280327] ftdi_sio 2-8.3:1.0: FTDI USB Serial Device converter detected
[31016.280354] /build/buildd/linux-2.6.24/drivers/usb/serial/ftdi_sio.c: Detected FT232RL
[31016.280449] usb 2-8.3: FTDI USB Serial Device converter now attached to ttyUSB0
Pour communiquer avec le module, il faut utiliser un programme de gestion de terminal ( gtkterm, minicom ou bien l’IDE de la carte Arduino).
Voici la configuration pour gtkterm :

Configuration du module XBee
Une fois que vous etes connecté au module XBee, vous pouvez lui envoyer des commandes à l’aide du gestionnaire de terminal.
Le module dispose de deux mode de fonctionnement : normal et configuration.
Pour passer en mode configuration, il faut saisir +++ (sans CR, retour à la ligne).
Si le module a compris la commande, alors il retourne OK.
Voici un exemple de session :
.
Configuration d’un réseau bidirectionnelle simple
Voici les différentes instructions pour configurer un réseau simple, c’est à dire une communication bidirectionnelle entre deux cartes Arduino ou bien entre un PC et une carte Arduino
Configuration sur la carte reliée au PC
+++OK
ATMY1234
OK
ATDL5678
OK
ATDH0
OK
ATID1111
OK
Configuration du module Arduino
+++OK
ATMY5678
OK
ATDL1234
OK
ATDH0
OK
ATID1111
OK
Les commandes importantes sont :
- ATMY : adresse source ;
- ATDL : adresse de destination (bite de poids faible) ;
- ATDH : adresse de destination (bite de poids fort) ;
- ATID : identifiant du réseau ;
Utilisation au niveau de la carte Arduino
Il faut inscrire le programme suivant dans la mémoire de la carte :
void setup() {
Serial.begin(9600);
Serial.print("+++");
Serial.print("ATDH0\r");
Serial.print("ATDL1234\r");
Serial.print("ATMY5678\r");
Serial.print("ATID1111\r");
Serial.print("ATCN\r");
}
void loop() {
delay(1000);
Serial.print("42\n");
}
La programmer et changer le sens des deux “jumper” pour faire communiquer le module avec la carte.
Référence
Si vous voulez vous simplifier la vie, il existe une bibliothèque pour la programmation des modules xbee : xbee-arduino.