top of page

Le shield XBee développé par Seeestudio présente les mêmes caractéristiques que le shield Bluetooth. Il fonctionne également avec la même bibliothèque SoftwareSerial.

Deux cavaliers permettent de configurer les lignes RX et TX de la liaison série vers les broches numériques N°0 à N°12.

Dans l'univers Arduino, le shield XBee est principalement utilisé lorsque nous devons transmettre des informations entre deux équipements distants de plusieurs dizaines de mètres.

 

LE SHIELD XBEE SEEEDSTUDIO V2.0

Programme 1 :

/*XBee_Joystick est un programme qui fait l'acquisition de l'état du bouton poussoir, de la position verticale et horizontale d'un joystick. 
Puis ces trois paramètres sont envoyés par un module XBee*/  

#define RX 2                                                  // affectation des broches 
#define TX 3
#define joy_X A0
#define joy_Y A1
#define joy_BP 4

#include <SoftwareSerial.h>                       // appel de la bibliothèque
SoftwareSerial xbee(RX, TX);                       // création de l'objet xbee


int X = 0;
int Y = 0;
int BP = 0;
int machaine[]={0,0,0};     
int i;

void setup()
{
xbee.begin(9600);                                          // initialisation de la liaison série du module XBee
pinMode(BP,INPUT_PULLUP);                      // la broche BP est en entrée avec resistance de tirage
}

void loop()
{  

X=analogRead(joy_X);                                   // on convertit la tension du joytick en entier
Y=analogRead(joy_Y); 
BP=digitalRead(joy_BP);                               // on lit l'état du bouton
X=map(X,0,1023,0,255);                                // on change l'échelle de X et Y
Y=map(Y,0,1023,0,255);
machaine[0]=X;                                             // on prépare les trois caractères de la chaine
machaine[1]=Y; 
machaine[2]=BP;
if (xbee.available())                                        // on attend que le récepteur demande un envoi 
   {
       if (xbee.read()=='0')                                // si on reçoie un '0'
       { 
       for (i=0;i<3;i=i+1)                                    // on envoie caractère par caractère   
       {
       xbee.write(machaine[i]);
       delay(10);
       }
       }
   }

Exemple :

Nous souhaitons acquérir la position verticale et horizontale, et l'état du bouton poussoir d'un module joystick puis d'envoyer, grâce à deux modules XBee, ces trois paramètres sur une autre carte Arduino pour les afficher sur un écran LCD.

Liste du matériel :

  • 2 Arduino Uno

  • 2 plaquettes d'essai

  • 1 module joystick

  • 1 écran à cristaux liquides

  • 2 shields XBee

  • 2 modules XBee

Câblages :

Programme 2 :

/* XBee_Afficheur et un programme qui récupère une chaine de caractère et les affiche sur un afficheur lcd */  
 
#include <SoftwareSerial.h>                       // appel des bibliothèques
#include <LiquidCrystal.h>

#define RX 2                                                  // affectation des broches 
#define TX 3
#define en 9
#define rs 8
#define d7 7
#define d6 6
#define d5 5
#define d4 4


SoftwareSerial xbee(RX, TX);                       // création de l'objet xbee
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);     // création de l'objet lcd

char recu[20];
int i;
byte X=0;
byte Y=0;
byte BP=0;


void setup() 
{
Serial.begin(9600);  
xbee.begin(9600);                                         // initialisation de la liaion série du module XBee
lcd.begin(16,2);                                             // initialisation de l'objet lcd
}  
 
void loop() 
{  
      i = 0 ;
      while ( xbee.available()>0 )      
      {
            recu[i] = xbee.read();                        // on lit caractère par caractère
            i++;
            delay(10);
      }
X=recu[0];
Y=recu[1];
BP=recu[2];
Serial.print("X=");
Serial.println(X);
Serial.print("Y=");
Serial.println(Y);
Serial.print("BP=");
Serial.println(BP);
lcd.clear();                                                     // on efface l'afficheur
lcd.setCursor(0,0);                                       // placement du curseur 1ère ligne 1ère colonne
lcd.print("X=");
lcd.print(X);
lcd.setCursor(11,0);                                     // placement du curseur 1ère ligne 12ème colonne
lcd.print("Y=");
lcd.print(Y); 
lcd.setCursor(0,1);                                       // placement du curseur 2ème ligne 1ère colonne
lcd.print("BP=");
lcd.print(BP); 

delay(10);
xbee.print('0');                                              // on demande l'envoi depuis l'émetteur
}   

bottom of page