XBee
Sommaire
Description du projet
Réaliser un prise en main de XBee et de donner les bases d'une communication plus évoluée.
Matériel utilisé
- Ordinateur avec Processing installé
- 2 modules XBee
- Câbles USB
- Platine de conversion USB/Série
- Accéléromètre trois axes
- Montage réalisé
Composants
Qtt | Nom | Valeur | Référence Fabricant | Fabricant | Référence Fournisseur | Fournisseur |
---|---|---|---|---|---|---|
2 | Module XBee série 1 | XB24-ACI-001 | Digi | XBEE1 | Lextronic | |
1 | Platine d'interface USB/XBee | WRL-11812 | Sparkfun | WRL-11812 | Lextronic | |
1 | Module accéléromètre 3 axes - ADXL335 | SEN-09269 | Sparkfun | SEN-09269 | Lextronic | |
1 | Potentiomètre rotatif linéaire | 10KOhm | 26-H | Lextronic |
Première étape : Transmission d'une valeur analogique
Configuration des modules XBee
Pour configurer correctement les modules, j'utilise le script Terminal de Tom Igoe (voir en bas de page). Brancher un module XBee sur la platine d'interface en respectant le sens des pattes du module. Connecter le câble USB à la platine et sur un port USB de l'ordinateur. Une fois le script lancé, entrer les séquences suivantes:
Pour le module récepteur
Commande | Réponse du système | Commentaire |
+++ | OK<CR> | Entre dans le mode Commande |
ATRE <Enter> | OK <CR> | Restore les paramètres par défaut |
ATID1111 <Enter> | OK <CR> | Définit l'adresse du réseau |
ATMY1 <Enter> | OK <CR> | Définit l'adresse du module dans le réseau |
ATDL0 <Enter> | OK <CR> | Définit l'adresse du destinataire dans le réseau |
ATWR <Enter> | OK <CR> | Écrit la nouvelle configuration dans la mémoire flash du module |
ATCN <Enter> | OK <CR> | Sort du mode configuration |
Pour le module émetteur
Commande | Réponse du système | Commentaire |
+++ | OK <CR> | Entre dans le mode Commande |
ATRE <Enter> | OK <CR> | Restore les paramètres par défaut |
ATID1111 <Enter> | OK <CR> | Définit l'adresse du réseau |
ATMY0 <Enter> | OK <CR> | Définit l'adresse du module dans le réseau |
ATDL1 <Enter> | OK <CR> | Définit l'adresse du destinataire dans le réseau |
ATD02 <Enter> | OK <CR> | Définit la patte 20 comme entrée analogique (voir p12 et p39 du manuel) |
ATIR14 <Enter> | OK <CR> | Définit le taux d'échantillonnage (p43) |
ATIT1 <Enter> | OK <CR> | Définit le nombre d'échantillon à effectuer avant l'envoi des données |
ATWR <Enter> | OK <CR> | Écrit la nouvelle configuration dans la mémoire flash du module |
ATCN <Enter> | OK <CR> | Sort du mode configuration |
L'entrée en mode commande se fait avec la saisie de +++ sur le sketch Processing une fois lancé. Il faut attendre quelques instants avant la réponse OK. Bien vérifier que la vitesse de transmission des données est la même entre le XBee et le terminal Processing. L'entrée des commandes suivantes doit se faire de manière rapide car après quelques secondes d'inactivités, le module XBee par sécurité sort du mode commande.
Montage
Montage pour le module émetteur:
La réception des données se fait sur l'ordinateur avec l'utilisation d'un simple terminal série. Mettre le XBee récepteur sur la platine d'interface relié à l'ordinateur avec le câble USB.
Deuxième étape : envoi de plusieurs valeurs
Pour cette partie, nous utiliserons un accéléromètre trois axes.
Configuration des modules XBee
Nous supposons que la configuration des XBee a été réalisé dans l'étape précédente.
Pour le module récepteur
Commande | Réponse du système | Commentaire |
+++ | OK <CR> | Entre dans le mode Commande |
ATAP1 <Enter> | OK <CR> | Permet l'utilisation du mode API (voir p52) |
ATWR <Enter> | OK <CR> | Écrit la nouvelle configuration dans la mémoire flash du module |
ATCN <Enter> | OK <CR> | Sort du mode configuration |
Pour le module émetteur
Commande | Réponse du système | Commentaire |
+++ | OK <CR> | Entre dans le mode Commande |
ATD12 <Enter> | OK <CR> | Définit la patte 19 comme entrée analogique |
ATD22 <Enter> | OK <CR> | Définit la patte 18 comme entrée analogique |
ATWR <Enter> | OK <CR> | Écrit la nouvelle configuration dans la mémoire flash du module |
ATCN <Enter> | OK <CR> | Sort du mode configuration |
Montage
Sketch Processing
import processing.serial.*;
Serial myPort; // Déclaration du port série
String portnum; // Nom du port série
boolean flag = false;
int X = 0;
int Y = 0;
int Z = 0;
int compteur = 0;
int dataH = 0;
int dataL = 0;
void setup() {
size(400, 300); // Taille de la fenêtre
// Créer une police avec la troisième police disponible dans le système
PFont myFont = createFont(PFont.list()[2], 14);
textFont(myFont);
// Liste tous les ports série actifs
println(Serial.list());
// Basé sur la liste de la commande précédente
// Changer le nombre entre crochet par le port série que vous souhaitez
portnum = Serial.list()[2];
// Initialise le port série
myPort = new Serial(this, portnum, 9600);
}
// Boucle principale
void draw() {
// Efface l'écran
background(0);
// Ecrit le nom du port série
text("Port série: " + portnum, 10, 20);
// Ecrit les données formatés
text("Coordonnées:\n" + "X : " + X + " " + "Y : " + Y + " " + "Z : " + Z, 10, 80);
}
// Fonction intervenant quand un octet se présente sur le port série
void serialEvent(Serial myPort) {
// Lit l'octet
int inByte = myPort.read();
// Test si l'octet reçu est l'octet de démarrage de la trame (0x7E)
if (inByte == 0x7E) {flag = true;}
// Si la trame est commencée compte les octets depuis le début de la trame
if (flag) {compteur +=1;}
// Les données commencent à partir de l'octet 12
// Chaque données analogiques est codée sur deux octets
// Poiur l'accéléromètre il faut récupérer les trois axes donc 6 octets
if (compteur == 12) {dataH = inByte;}
if (compteur == 13) {dataL = inByte; X = dataH*256 + dataL;}
if (compteur == 14) {dataH = inByte;}
if (compteur == 15) {dataL = inByte; Y = dataH*256 + dataL;}
if (compteur == 16) {dataH = inByte;}
if (compteur == 17) {dataL = inByte; compteur =0; flag =false; Z = dataH*256 + dataL;}
}
Liens externes
Processing (en) : Site officiel (Linux, Mac, Windows)
Terminal.pde (en) : Terminal (Processing)
XCTU (en) : X-CTU (Windows) : Permet de mettre à jour le programme interne du Xbee et de le tester
Documents de référence :
Xbee-Manual.pdf
Conversion Analogique / Numérique : Permet de savoir comment sont formés les paquets de données
Tutoriaux maison
Fichier:Atelier-XCTU-09-12-2010.pdf Xbee et X-CTU : Mise a jour firmware
Ressources Web
ressources francophone :
http://home.nordnet.fr/~fthobois/realisation_24_ghz.htm
http://reso-nance.org/wiki/materiel/xbee/star/accueil