Arduino, Xbee

Bonjour,

depuis plusieurs jours j'essaie en vain de communiquer entre 2 arduino avec 2 modules Xbee wifi.

Mon programme de test fonctionne car si je teste la communication sérielle avec simplement 2 fils tout fonctionne.

Dans le logiciel de configuration XCTU, quand je suis en mode terminal j'arrive communiquer avec l'autre Xbee (les 2 Xbee sont connectés à un pc via le arduino dont le micro-contrôleur a été enlevé).

Paramètres du Exbee émetteur:

Frimware

producfamily: XB24

FOnction set: XBEE 802.15.4

Firmware version 10ec

ID: 3332

MY: 1234

DH: 0

DL: FFFF

Récepteur

Frimware

producfamily: XB24

FOnction set: XBEE 802.15.4

Firmware version 10ec

ID: 3332

MY: 5678

DH: 0

DL: 1234

Je vois que le terminal fonctionne sur le pc avec les 2 Xbee mais quand j'utilise le arduino ca ne fonctionne pas. Est-ce qu'un de mes paramètres est faux? Faut-il mettre un Xbee dans un mode spécial?

Emetteur:

void setup() {   
  Serial.begin(9600);
}
 
void loop() {
  Serial.write(100);
  delay(5000);
 }

Recepteur:

void setup()
{
  pinMode(8,OUTPUT);
  Serial.begin(9600);
}
 
void loop()
{   
  if(Serial.available() > 0)
  {        
    if(Serial.read() == 100)
    {
      digitalWrite(8,HIGH);
      delay(1000);
      digitalWrite(8,LOW);
    }    
  }   
}

Merci pour votre aide.

Bonjour,
Merci de mettre ton code entre balises code en utilisant le bouton #

Quel est le shield utilisé pour branché ton XBee sur ton Arduino.

Une fois ton Arduino programmé, tu dois avoir un bouton à bouger pour passer en mode XBee sur ton shield.

Voilà c'est mis en place.

Je n'utilise pas de shield . . .

Je suis branché selon ce shéma: http://blog.oscarliang.net/wp-content/uploads/2013/07/remote-XRF-to-Arduino-connections1.jpg

Essaie de remplacer le pin8 par le 13 pour voir si la led verte associée à la pin13 de la carte clignote quand tu reçois des données.

Sinon peux-tu nous faire des photos de ton montage?

Essaie d'introduire des allumages/extinctions de la led pin13 à différents endroits de ton code pour voir où ça bloque.

Par exemple:
Pour voir si tes données reçues correspondent à 100

#define LED_PIN 13

void setup()
{
  pinMode(LED_PIN,OUTPUT);
  Serial.begin(9600);
}
 
void loop()
{   
  if(Serial.available() > 0)
  {        
    if(Serial.read() == 100)
    {
      digitalWrite(LED_PIN,HIGH);
      delay(1000);
      digitalWrite(LED_PIN,LOW);
    }    
  }

Ou:
Pour voir si tu reçois des données:

#define LED_PIN 13

void setup()
{
  pinMode(LED_PIN,OUTPUT);
  Serial.begin(9600);
}
 
void loop()
{   
  if(Serial.available() > 0)
  {       digitalWrite(LED_PIN,HIGH);
      delay(1000);
      digitalWrite(LED_PIN,LOW);   
  }

Ou:
Pourvoir si la carte Arduino fonctionne bien:

#define LED_PIN 13

void setup()
{
  pinMode(LED_PIN,OUTPUT);
  Serial.begin(9600);
}
 
void loop()
{   
 digitalWrite(LED_PIN,HIGH);
      delay(1000);
      digitalWrite(LED_PIN,LOW);
}