XBee

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

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

Liste des pièces
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:

XBee Pot.jpg

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

XBee Acc.jpg

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