Bonjour à toutes et à tous,
Je viens d'acquérir 3 modules Xbee (Commandé 2 mais ils ont du faire une erreur ), et je souhaite me faire la main avec ces modules (Aie, ca commence mal).
Cela fait maintenant 10h que je me bas et je n'ai toujours aucun résultat, aussi, je viens requérir votre aide.
La matériel :
- 2 modules xbee XB 24B
- 1 arduino UNO rev 3
- 1 arduino LEONARDO rev 3
- Un wireless proto shield (Ici)
- Un shield xbee (Ici)
- Un écran LCD
Voici une image du montage :
Le UNO émet simple des lettres à intervalle d'une seconde (tuto de base). Le LEONARDO doit lire les infos envoyées et les écrires sur la seconde ligne de l'écran.
En fonctionnement normal, il n'y a aucun cable USB pour ne pas interférer.
Le paramétrage des xbee a été fait avec X-CTU.
Le Xbee du LEONARDO est configuré en mode ZNET 2.5 COORDINATOR AT :
PAN ID 2015
MY 0
...
Le Xbee du UNO est configuré en mode ZNET 2.5 ROUTER/END DEVICE AT
PAN ID 2015
MY 1EF
...
Le code du UNO :
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
Serial.print("L");
delay(1000);
Serial.print("H");
delay(1000);
if(Serial.available() > 0)
Serial.read();
}
Le code du LEONARDO
#include <LiquidCrystal.h> //ajout de la librairie
#define SERIAL_BAUDRATE 9600 //Baud-Rate of the serial Port
const byte RSPIN = 12;
const byte RWPIN = 11;
const byte EPIN = 13;
const byte DB4 = 4;
const byte DB5 = 5;
const byte DB6 = 6;
const byte DB7 = 7;
const byte NumDef = 20;
//Vérifier les broches !
LiquidCrystal lcd(RSPIN, RWPIN, EPIN, DB4, DB5, DB6, DB7); //liaison 4 bits de données
String chaine;
void setup() {
// put your setup code here, to run once:
while(!Serial); // Attente pour Leonardo
//Init de l'écran
lcd.begin(16,2); //utilisation d'un écran 20 colonnes et 2 lignes
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Tuto com Xbee");
//setup serial pin
Serial.begin(SERIAL_BAUDRATE);
}
void loop() {
lcd.setCursor(0, 1);
// Si je recois une communication, je l'affiche sur le LCD
while(Serial.available() > 0) {
chaine += char(Serial.read());
}
if(chaine.length()!=0)
{
lcd.print("Val=");
lcd.print(chaine);
chaine ="";
}
else
lcd.print("rien ");
Serial.print("U");
delay(1000);
}
Observations :
Lorsque mes shields sont configurés avec une communication USB (switch ou cavalier sur shield) et que j'ouvre le moniteur série, l'observe bien les lettres et je vois bien Tx clignoter.
Lorsque je passe en mode communication xbee (Je débranche, je switch et je rebranche), Tx reste fixe, l'écran LCD affiche rien (Donc aucune communication xbee).
Le LEONARDO s'est vu rajouté un while(!Serial); comme recommandé dans le livre de Christian Tavernier (Le retirer ne change rien au problème).
J'ai tenté d'inverser les shields, la logique de qui émet et reçoit entre LEONARDO ET UNO, mais rien n'y fait.
Je requiers donc toute votre aide et votre expérience (Je ne sais plus quoi faire).
Je suis à votre disposition si vous avez des questions bien entendu.
Par avance merci de votre contribution.
Seb.