Communiquer deux arduino avec le Xbee

Bonjour,

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

deuxarduino 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**************************
Code :

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

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

Code :

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

Merci

Bonjour

1/ postez un descriptif exact de votre configuration (une photo d'un petit dessin fait à la main montrant exactement comment tout est connecté et alimenté)

2/ à quoi est connecté Serial ? Vous ne pouvez pas vraiment à la fois parler à votre Xbee et au port USB de votre ordi. il vous faudra sans doute utiliser la librairie SoftwareSerial pour parler à vos Xbee si vous voulez conserver l'affichage sur un moniteur Série ou passer à des MEGAs qui ont plusieurs ports Série en matériel

3/ le moniteur Série de l'IDE Arduino ne sait pas afficher 2 fenêtres connectées sur 2 ports différents --> utiliser Putty pour l'un d'entre eux (ou les 2)

L'excellent livre de Michael Margolis " Arduino cookbook" fournit beaucoup d'explications pour réaliser une communication Xbee vers Xbee (voir chapitre 14.2).



Celle-ci est la configuration que j'ai fait pour mes deux Xbee

le montage que j'ai adopté est celui-ci

Effectivement comme vous avez dit je peux pas parler au Xbee et au port USB à la fois c'est pour cela que 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.
Je vous remercie

ard_newbie:
L'excellent livre de Michael Margolis " Arduino cookbook" fournit beaucoup d'explications pour réaliser une communication Xbee vers Xbee (voir chapitre 14.2).

Merci j'y jetterai un coup d’œil

didyi:
Effectivement comme vous avez dit je peux pas parler au Xbee et au port USB à la fois c'est pour cela que 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.
Je vous remercie

et une fois que vous avez mis le câble USB, où vont les Serial.print ?

J-M-L:
et une fois que vous avez mis le câble USB, où vont les Serial.print ?

Je me suis dit vu que le Rx et Tx et relié au Xbee et que ce dernier communique en série alors les Serial.print partent au Xbee

Quelle est la tension en sortie des pins arduino ? Quelle est la tension acceptée en entrée par les XBee S1 ?

didyi:
Je me suis dit vu que le Rx et Tx et relié au Xbee et que ce dernier communique en série alors les Serial.print partent au Xbee

et pourquoi pas à votre PC puisqu'ils sont aussi relié à l'USB ?

J-M-L:
et pourquoi pas à votre PC puisqu'ils sont aussi relié à l'USB ?

Je sais pas :frowning: :frowning: je commence à me familiariser avec l'arduino et le Xbee

enlevez tous les print vers la console et allumez ou éteignez une LED par exemple quand vous recevez un message particulier

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

A première vue, le code semble correct.

Par contre, le XBee est un composant qui fonctionne avec du 3,3V et donc brancher une sortie de l'arduino en 5V sur une entrée du XBee en 3,3V ça peut ne pas fonctionner (faire griller ton XBee). Alors certain XBee fonctionnent tout de même en appliquant du 5V sur une entrée qui normalement accepte du 3,3V mais cela n'est pas recommandé.

Donc pour brancher ton XBee, il te faut pour bien faire, soit utiliser un shield prévu à cet effet, soit mettre en place une solution pour transformer ton signal 5V en 3,3V.

bigben99:
A première vue, le code semble correct....

mettre en place une solution pour transformer ton signal 5V en 3,3V.

Merci pour votre réponse, effectivement y a une sortie 3,3V sur l'arduino que j'ai utilisé pour alimenté le Xbee

Le problème n'est pas sur l'alimentation mais sur les signaux transmis sur le port Rx du XBee, ils doivent également être à 3,3V pour un signal haut et non pas 5V or, les sorties de l'arduino sont à 5V pour un signal haut.

Je pense que c'est un problème de paramétrage des xbee le code me semble correcte :confused: