====== xBee ====== ===== 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 |10 kΩ | | |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 |Entre dans le mode Commande | |ATRE |OK |Restore les paramètres par défaut | |ATID1111 |OK |Définit l'adresse du réseau | |ATMY1 |OK |Définit l'adresse du module dans le réseau | |ATDL0 |OK |Définit l'adresse du destinataire dans le réseau | |ATWR |OK |Écrit la nouvelle configuration dans la mémoire flash du module | |ATCN |OK |Sort du mode configuration | === Pour le module émetteur === ^Commande ^Réponse du système ^Commentaire ^ |+++ |OK |Entre dans le mode Commande | |ATRE |OK |Restore les paramètres par défaut | |ATID1111 |OK |Définit l'adresse du réseau | |ATMY0 |OK |Définit l'adresse du module dans le réseau | |ATDL1 |OK |Définit l'adresse du destinataire dans le réseau | |ATD02 |OK |Définit la patte 20 comme entrée analogique (voir p12 et p39 du manuel) | |ATIR14 |OK |Définit le taux d'échantillonnage (p43) | |ATIT1 |OK |Définit le nombre d'échantillon à effectuer avant l'envoi des données | |ATWR |OK |Écrit la nouvelle configuration dans la mémoire flash du module | |ATCN |OK |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: {{media_13:xbee_pot.jpg?200|}} 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 |Entre dans le mode Commande | |ATAP1 |OK |Permet l'utilisation du mode API (voir p52) | |ATWR |OK |Écrit la nouvelle configuration dans la mémoire flash du module | |ATCN |OK |Sort du mode configuration | === Pour le module émetteur === ^Commande ^Réponse du système ^Commentaire ^ |+++ |OK |Entre dans le mode Commande | |ATD12 |OK |Définit la patte 19 comme entrée analogique | |ATD22 |OK |Définit la patte 18 comme entrée analogique | |ATWR |OK |Écrit la nouvelle configuration dans la mémoire flash du module | |ATCN |OK |Sort du mode configuration | ==== Montage ==== {{media_13:xbee_acc.jpg?200|}} ==== 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 ===== [[http://processing.org/|Processing]] Site officiel (Linux, Mac, Windows) [[http://www.tigoe.net/pcomp/code/Processing/11|Terminal (Processing)]] [[http://www.digi.com/support/kbase/kbaseresultdetl.jsp?kb=125|X-CTU (Windows)]] : Permet de mettre à jour le programme interne du Xbee et de le tester ===== Documents de référence : ===== [[http://ftp1.digi.com/support/documentation/manual_xb_oem-rf-modules_802.15.4_v1.xAx.pdf|Xbee-Manual.pdf]] [[http://www.digi.com/support/kbase/kbaseresultdetl.jsp?id=2180|Conversion Analogique / Numérique]] : Permet de savoir comment sont formés les paquets de données ===== Tutoriaux maison ===== {{ media_03: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|xBee]] [[http://reso-nance.org/wiki/materiel/xbee/star/accueil|xBee en étoile]] {{tag> arduino processing sylvain }}