Partage
  • Partager sur Facebook
  • Partager sur Twitter

Communiquer deux arduino avec le Xbee

Arduino Xbee

    24 mai 2017 à 14:44:22

    Bonjour,

    je commence à prendre la main sur les équipement que j'ai.

    un arduino uno et deux Xbee S1, j'essaye pour le moment de faire un bout de code pour emettre de l'arduino 1 vers l'arduino 2 en passant par le Xbee.

    j'ai utilisé XCTU pour paramètrer le Xbee un comme coordinateur et l'autre End device.

    les deux arduino malheureusement sont connecté sur le même PC, j'ai essayé ces de bouts de code 

    Emetteur*************************

    void setup()
    {
      Serial.begin(9600);
    }
    
    void loop()
    {
      Serial.print('H');
      delay(1000);
      Serial.print('L');
      delay(1000);
    }

    Recepteur***************

    int incomingByte = 0;   // for incoming serial data
    
    void setup() {
      Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
    }
    
    void loop() {
    
      // send data only when you receive data:
      if (Serial.available() > 0) {
        // read the incoming byte:
        incomingByte = Serial.read();
    
        // say what you got:
        Serial.print("I received: ");
        Serial.println(incomingByte, DEC);
      }
    }

    malheureusement il s'affiche rien sur le moniteur série de l'arduino 2.
    je me demande s'il y a quelqu'un qui a déjà fait un truc de genre

    PS: j'utilise pas de shield j'ai fait la connexion par fils entre l'arduino et le xbee S1

    Mercii


    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2017 à 10:30:45

      Quand tu dis "arduino 2", je suppose que tu parles du récepteur ?

      Ton programme récepteur se résume à : "si un caractère est reçu par le Serial, alors envoyer un message sur le Serial".

      Du coup, il y a forcément un problème car :

      • Si le Serial est relié au XBee, alors le message sera envoyé sur le XBee et non au PC
      • Si le Serial est relié au PC, alors le message n'est affiché que si c'est le PC qui envoie un caractère

      Pour ce genre de programme, il te faut forcément 2 Serial :

      • Un Serial pour dialoguer avec le XBee
      • Un Serial pour dialoguer avec le PC

      Tu peux utiliser la lib SoftwareSerial pour émuler un Serial sur d'autres pins ;)

      • Partager sur Facebook
      • Partager sur Twitter
        29 mai 2017 à 15:55:31

        jevous remercie, j'ai pas bien saisi ce que vous vouliez dire , mais je jetterai un coup d'oeil sur la lib SoftwareSerial

        pour mon cas je charge mon sketch sur l'arduini je deconnectre le port usb et je remets les deux fils de Tx et Rx et après je remets le cable usb.

        • Partager sur Facebook
        • Partager sur Twitter
          29 mai 2017 à 16:35:18

          Les pins 0 et 1 (Tx et Rx) de l'arduino servent au Serial de communication USB avec le PC.

          Tu ne peux pas te servir de ces 2 pins pour brancher un Xbee et tout en continuant d'utiliser la liaison avec le PC.

          Si tu veux pouvoir dialoguer avec le PC et avec un XBee, il te faut forcément 2 liaisons Serial.

          Ce qui implique de garder la liaison Serial de base avec le PC et d'en émuler une autre (avec la lib SoftwareSerial) pour dialoguer avec le XBee.

          • Partager sur Facebook
          • Partager sur Twitter
            29 mai 2017 à 16:52:41

            Mercii beaucoup je vais voir ce que ça donne et je reviendrai vers vous
            • Partager sur Facebook
            • Partager sur Twitter
              30 mai 2017 à 14:23:23

              Bonjour j'ai changé le code à celui là et j'ai branché les Xbee sur les broches 2 et 3 est toujours pas de résultat 

              Émetteur

              ***********

              #include <SoftwareSerial.h>
              SoftwareSerial xbee(2, 3);
              int count;
              
              
              void setup()
              {
                Serial.begin(9600);
                xbee.begin(9600);
              }
               
              void loop()
              {
                Serial.print('1');
                xbee.print('1');
                delay(1000);
                Serial.print('0');
                xbee.print('0');
                delay(1000);
              }
              


              Récepteur

              ************

              #include <SoftwareSerial.h>
              SoftwareSerial xbee(2, 3);
              
               
              void setup() {
                Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
                xbee.begin(9600);
              }
               
              void loop() {
               
               if(xbee.available()) {
                  while(xbee.available())  {
                    Serial.write(xbee.read());
                    }
                  }
              }
               auriez vous une idée d'où vient le problème
              Merci
              • Partager sur Facebook
              • Partager sur Twitter
                30 mai 2017 à 15:48:16

                Pourtant, cela devrait être bon.

                Es-tu certain d'avoir correctement paramétré tes 2 XBee avec XCTU ?

                N'aurais tu pas inverser Tx et Rx dans tes branchements ? ou oublier de les croiser ?

                • Partager sur Facebook
                • Partager sur Twitter
                  30 mai 2017 à 19:43:07

                  Pour le branchement j'ai mis Rx--Tx & Tx--Rx

                  et pour le paramètrage des Xbee j'ai utilisé celui là 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 décembre 2019 à 18:49:25

                    Merci pour ce post, il m'a été bien utile pour configurer mes modules Xbee
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Communiquer deux arduino avec le Xbee

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown