Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Communication arduino-arduino avec module Xbee



  1. #1
    TPESI22012

    Communication arduino-arduino avec module Xbee


    ------

    Bonjour,
    Je suis actuellement en terminale SI et pour mon PPE je dois faire communiquer deux cartes arduino à distance. Je m'explique, nous avons conçu un bras robotisé et mon but est de le commander à distance avec un nunchuk de wii. J'ai choisi d'utiliser pour cela deux cartes arduino, une relier au nunchuk qui doit lire les valeurs de l'accéléromètre du nunchuk et les envoyer à l'autre par l'intermédiaire d'un module xbee sur chaque carte, la seconde carte doit lire les valeurs envoyées par la première pour contrôler 3 servomoteur. Chaque servomoteur lisant les valeurs d'un seul axe de l'accéléromètre.
    Voici le code que j'utilise pour contrôler les servomoteurs avec le nunchuk (j'ai seulement modifié un code existant):

    #include <Servo.h>
    #include <Wire.h>

    // Doit être ajusté en fonction de chaque nunchuck
    #define ZEROX 530
    #define ZEROY 530
    #define ZEROZ 530

    // adresse I2C du nunchuck
    #define WII_NUNCHUK_I2C_ADDRESS 0x52

    // définition d'une variable Servo
    Servo servomoteur1;
    Servo servomoteur2;
    Servo servomoteur3;



    // définition d'une variable counter
    int counter;

    // définition d'un tableau de données
    uint8_t data[6];

    void setup()
    {
    // on attache le servomoteur à la pin 11 (PWM)
    servomoteur.attach(11);

    // initialisation du nunchuck
    Wire.begin();

    Wire.beginTransmission(WII_NUN CHUK_I2C_ADDRESS);
    Wire.write(0xF0);
    Wire.write(0x55);
    Wire.endTransmission();

    Wire.beginTransmission(WII_NUN CHUK_I2C_ADDRESS);
    Wire.write(0xFB);
    Wire.write(0x00);
    Wire.endTransmission();
    }

    void loop()
    {
    // on demande 6 octets au nunchuck
    Wire.requestFrom(WII_NUNCHUK_I 2C_ADDRESS, 6);

    counter = 0;
    // tant qu'il y a des données
    while(Wire.available())
    {
    // on récupère les données
    data[counter++] = Wire.read();
    }

    // on réinitialise le nunchuck pour la prochaine demande
    Wire.beginTransmission(WII_NUN CHUK_I2C_ADDRESS);
    Wire.write(0x00);
    Wire.endTransmission();

    if(counter >= 5)
    {
    // on extrait les données
    // dans mon exemple j'utilise uniquement les données d'accélération sur l'axe Y
    double accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03) - ZEROX);
    double accelY = ((data[3] << 2) + ((data[5] >> 4) & 0x03) - ZEROY);
    double accelZ = ((data[4] << 2) + ((data[5] >> 6) & 0x03) - ZEROZ);

    // on limite la valeur entre -180 et 180
    int value1 = constrain(accelX, -180, 180);
    int value2 = constrain(accelY, -180, 180);
    int value3 = constrain(accelZ, -180, 180);

    // on mappe cette valeur pour le servomoteur soit entre 0 et 180
    value1 = map(value, -180, 180, 0, 180);
    value2 = map(value, -180, 180, 0, 180);
    value3 = map(value, -180, 180, 0, 180);

    // on écrit sur le servomoteur la valeur
    servomoteur1.write(value);
    servomoteur2.write(value);
    servomoteur3.write(value);



    // un petit delai pour pas saturer le servomoteur
    delay(100);
    }
    }

    Maintenant j'ai un problème pour faire communiquer les deux cartes entre-elles avec les modules xbee, je ne trouve pas d'exemple similaire sur internet, est-ce que vous pourriez m'aider pour la programmations des modules xbee, merci d'avance.

    -----

  2. #2
    r4ph

    Re : Communication arduino-arduino avec module Xbee

    Il existe plusieurs modèle de Xbee, avec chacun leurs particularités. Ce sont des modules très complets et une étude sérieuse de leur datasheet est nécessaire afin de comprendre leur fonctionnement.

    Voici toutefois des pistes pour tes recherches sur le net et expérimentation.

    -Commence par établir une communication série "transparente" entre 2 modules. Pour ton application, ça suffira. Mais il existe un mode bien plus complet, avec des trames API pour communiquer avec les Xbees. La librairie Xbee de l'arduino les prends en charge.

    -Pour configurer facilement les modules télécharge X-CTU, que tu trouveras sur le site de digi.

    -Et surtout, lis la datasheet du module que tu utilises.

    Amuses-toi bien!

  3. #3
    TPESI22012

    Re : Communication arduino-arduino avec module Xbee

    Merci de m'avoir répondu si rapidement, alors je dispose de deux module xbee série 1 avec antenne, j'ai regardé le datasheet mais je n'ai pas vraiment trouvé d'information relative à la programmation sur arduino. De plus j'ai deux xbee shield aruino : http://www.gravitech.us/arxbsh.html
    mais je ne vois pas comment on peut relier des capteurs ou des leds etc... alors qu'on a plus accès aux broches d'entrée et de sortie de la carte arduino quand le shield est branché ?

Sur le même thème :

Discussions similaires

  1. projet communication pc-arduino
    Par yoannx dans le forum Électronique
    Réponses: 3
    Dernier message: 21/02/2013, 13h10
  2. Aide projet Arduino avec module biométrique
    Par Romu_2013 dans le forum Électronique
    Réponses: 6
    Dernier message: 16/02/2013, 23h30
  3. Communication série module Arduino et Module GPRS TM2
    Par Thybo dans le forum Électronique
    Réponses: 18
    Dernier message: 15/09/2012, 09h11
  4. pb de communication entre deux arduino via Xbee
    Par aurelien223 dans le forum Électronique
    Réponses: 0
    Dernier message: 22/03/2012, 15h02
  5. Comment lire 2 valeurs par Xbee sur Arduino ?
    Par StrikerX dans le forum Électronique
    Réponses: 0
    Dernier message: 04/03/2012, 13h49
Découvrez nos comparatifs produits sur l'informatique et les technologies.