Pages: [1]   Go Down
Author Topic: UNO + sparkfun Xbee Shield + Xbee > probleme  (Read 1066 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour. à Tous

J'ai besoin d'un petit coup de main, car je ne comprends mon problème.
J'ai 2 cartes UNO que j'essai de faire communiquer avec du Xbee Pro 60mW (http://www.sparkfun.com/commerce/product_info.php?products_id=8710).
J'utilise pour les 2 cartes un Xbee Shield de Sparkfun http://www.sparkfun.com/commerce/product_info.php?products_id=9841, et des antennes appropriées.

J'ai suivi scrupuleusement la marche à suivre ici = http://arduino.cc/en/Guide/ArduinoXbeeShield , pour faire communiquer les 2 cartes, mais rien à faire, ça ne fonctionne pas.
Je programme la première, qui exécute correctement son code.
Je programme la deuxième, qui exécute réponds correctement avec le serial monitor.
Mais quand je met les 2 cartes en alimentation externe et débranche l'USB, ça ne fonctionne pas ...
Dans le tuto d'arduino, ils parlent de jumpers, je cite par exemple "Switch the jumpers to the Xbee setting (i.e. place each on the center pin and the pin farthest from the edge of the board)"
Mais je suppose que sur la carte UNO, cela n'existe plus non ?

Sur les shield Xbee, il y a un petit Switch DLINE / UART. Mais j'ai beau essayer dans les 2 configurations, ça ne fonctionne pas mieux.

J'aimerai savoir si je dois configurer les Xbee d'une certaine façon pour qu'ils fonctionnent où ils sont censé être opérationnels à l'achat.

Merci du coup de main.

Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Les jumpers sont sur le shield Xbee, pas sur l'Arduino, donc Uno ou Duemilanove c'est la même chose.

Il faut laisser l'interrupteur sur UART si tu as utilisé dans ton code la bibliothèque Serial. Il n'y a effectivement pas de switch USB/XBee sur le shield UART.

Est-ce que tu as essayé de faire communiquer en XBee une carte avec le PC ? Via un adaptateur USB ou série par exemple ? Ou une carte Arduino sans microcontrôleur (je ne l'ai jamais fait, je crois que c'est possible.

Si ça se trouve, les deux XBee ne sont pas configurés sur le même identifiant réseau.

Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

BONJOUR.

merci pour ton aide.
J'ai un peu avancé sur le problème, mais je ne l'ai toujours par résolu.
J'ai réussi à utiliser l'hyperTerminal dans Windows pour voir les configurations des Xbee. Les Xbee répondent bien et les 2 étaient sur le même ID. J'ai cru bon en changer un. maintenant les ID sont 3332 et 3333.
les 2 sont aussi sur 9600 Baud.
Je suis vraiment débutant dans l'arduino ... tu me dis "Il faut laisser l'interrupteur sur UART si tu as utilisé dans ton code la bibliothèque Serial", veux tu dire qu'en début de code il faut que je déclare cette bibliothèque ? Moi j'ai directement mis ce code dans la première =

Code:
const int ledPin = 13; // the pin that the LED is attached to
int incomingByte;      // a variable to read incoming serial data into


// Variables will change:
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 1000;           // interval at which to blink (milliseconds)


void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop() {
   unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;  

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;

    // set the LED with the ledState of the variable:
    digitalWrite(6, ledState);
  }
  
  // see if there's incoming serial data:
  if (Serial.available() > 0) {
    // read the oldest byte in the serial buffer:
    incomingByte = Serial.read();
    // if it's a capital H (ASCII 72), turn on the LED:
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    // if it's an L (ASCII 76) turn off the LED:
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}


et ce code dans la deuxième =
Code:
void setup()
{
  pinMode(13, OUTPUT);  
  Serial.begin(9600);
}

void loop()
{
  Serial.print('H');
  digitalWrite(13, HIGH);
  delay(1000);
  Serial.print('L');
  digitalWrite(13, LOW);
  delay(1000);
}

Bien sure, j'ai les LED qu'il faut là où il faut.

Est-ce que je dois ajouter quelque chose pour que la librairie serial fonctionne ? je dois l'installer ?

merci
Logged

Pages: [1]   Go Up
Jump to: