Problema iboard-ex Leonardo compatibile e Xbee

Stro usando questa board:
http://imall.iteadstudio.com/development-platform/arduino/arduino-compatible-mainboard/iboard-ex.html
è Arduino Leonardo compatibile, con Ethernet e Socket Xbee on board, ma ho dei problemi a fargli riconoscere una Xbee S1.
Con questo semplice sketch, usando un Arduino Uno con Shield Xbee e Xbee S1 da un lato e Xbee S1 via USB-Seriale dall'altro tutto funziona ho le risposte corrette:

int incomingByte = 0;	// for incoming serial data
 
void setup() {
  Serial.begin(9600);	// opens serial port, sets data rate to 9600 bps
  pinMode(12, OUTPUT);
 
  // blink twice at startup
  digitalWrite(12, LOW);
  delay(1000);
 
  digitalWrite(12, HIGH); // first blink
  delay(50);
  digitalWrite(12, LOW);
  delay(200);
  digitalWrite(12, HIGH); // second blink
  delay(50);
  digitalWrite(12, LOW);
}
 
void loop() {
  // send data only when you receive data:
  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();
 
    if(incomingByte == '0'){
      digitalWrite(13, LOW);
    }else if(incomingByte == '1'){
      digitalWrite(13, HIGH);
    }    
    // say what you got:
    Serial.println(" ");
    Serial.print("Arduino received: ");
    Serial.println(incomingByte);
     digitalWrite(12, HIGH); // first blink
  delay(150);
  digitalWrite(12, LOW);

  }
}

con la board sopracitata non succede nulla, non si "accoppiano" e non ho nessuna risposta.
Visti on line alcune incongruenze con Leonardo e Xbee, ho modificato lo sketch come sotto:

int incomingByte = 0;	// for incoming serial data
 
void setup() {
  Serial1.begin(9600);	// opens serial port, sets data rate to 9600 bps
  while(Serial1)
  
  pinMode(12, OUTPUT);
 
  // reset low
  digitalWrite(12, LOW);
}
 
void loop() {
  // send data only when you receive data:
  if (Serial1.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial1.read();
 
    if(incomingByte == '0'){
      digitalWrite(13, LOW);
    }else if(incomingByte == '1'){
      digitalWrite(13, HIGH);
    }    
    // say what you got:
    Serial1.println(" ");
    Serial1.print("Arduino received: ");
    Serial1.println(incomingByte);
   }
}

ottenendo però lo stesso risultato, nessuna risposta. =(
Non so a questo punto se il problema è Hardware o Software
:roll_eyes:

Prendi la lente di ingrandimento, controlla le singole traccie per capire come sono collegati i piedini del chip al Xbee; potrebbe essere che vanno semplicemente reimpostati.

Controlla il pinout qui --> Pinout Diagram - Megatopic - Arduino Forum

Il pinout è come nello shield:
Xbee Communication Interface

Index of Interface Name of Interface Index of Arduino Pin of ATMEGA32U4
1 XBee_Reset D12 PD6
2 RX D0 PD2
3 TX D1 PD3

La Leonardo ha 2 seriali.
Per il serial monitor devi usare la Serial 0 :grin:

#define XBEE_PIN_RESET 12
#define TEST_LED 13

int incomingByte = 0;	// for incoming serial data

void setup() {
  Serial.begin(9600); // To Serial Monitor
  Serial1.begin(9600);	// to Xbee
  while(Serial) ;

  // Set pin 
  pinMode(XBEE_PIN_RESET, OUTPUT);
  digitalWrite(XBEE_PIN_RESET, LOW);
}

void loop() {
  // send data only when you receive data:
  if (Serial1.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial1.read();

    if(incomingByte == '0'){
      digitalWrite(TEST_LED, LOW);
    }
    else
      if(incomingByte == '1'){
        digitalWrite(TEST_LED, HIGH);
      }    

    // say what you got:
    Serial.println(" ");
    Serial.print("Arduino received: ");
    Serial.println(incomingByte);
  }
}

Dubbio lecito, ma credo che lui faccia reping verso l'Xbee. Se guardi lo sketch per la Uno, fa lo stesso.

Leo.... Leo...
La UNO ha una sola seriale, è normale che rispedisca alla stessa seriale quello che vuole vedere sul Serial Monitor. ]:smiley:

p.s. Se ho ragione a Bassano mi devi una birra. :grin: :grin: :grin:

Scusami, ma forse non hai letto cosa ho scritto: ho detto che probabilmente fa "autoping", cioè riceve dei dati e manda la risposta indietro. E' ovvio che deve usare lo stesso canale, no? :wink:

Grazie per le sollecite risposte, ma anche caricando lo sketch proposto non succede nulla.
Per spiegare meglio, la scheda da ricevente, manda indietro il codice del tasto ricevuto , con una stringa di preambolo.
La diversità rispetto alla Uno è che non si accende il led del RSSI sulla board di prova con solo il socket Xbee e una serial/usb, quindi da quanto ne deduco non aggancia , quindi non dialoga.
Sulla IBOARD, Xbee è correttamente alimentata, provato con tester, ma non essendoci nessun led di riferimento, non so purtroppo cosa in effetti combini.
Questo è il quanto :roll_eyes:

Si che c'è il LED.
Tra la sezione di alimentazione e il quarzo del 32U4 hai 4 led: PWR, TX, RX e D13.
Si vede dalla foto del sito.

A meno che non abbia un prodotto "cinese" di una ditta cinese... il massimo :grin: :grin:

Paolo, amario credo si riferisca alla sua scheda IBOARD :stuck_out_tongue:
Quella scheda integra un Atmega32U4, un chip Wiznet più i chip Xbee quindi è un prodotto tutto-in-uno. Ma NON ha i led su RX/TX.

@amario:
ma usando la Serial (non Serial1), riesci a dialogare col PC tramite USB? Andiamo per gradi, per capire se la scheda è pienamente compatibile con la Leonardo vera e propria.

Si Leo, il dialogo c'è, anche la Wiznet funziona.
E' solo la comunicazione con Xbee che ha problemi, come leggete da quanto ho relazionato. =(
Infatti usando lo stesso sketch di Arduino Uno, con la Serial, le risposte le ho sul terminal di ritorno

leo72:
Paolo, amario credo si riferisca alla sua scheda IBOARD :stuck_out_tongue:

Infatti io sto parlando della board che ha indicato lui

amario57:
Stro usando questa board:
http://imall.iteadstudio.com/development-platform/arduino/arduino-compatible-mainboard/iboard-ex.html

PaoloP:
Si che c'è il LED.
Tra la sezione di alimentazione e il quarzo del 32U4 hai 4 led: PWR, TX, RX e D13.
Si vede dalla foto del sito.

Paolo, hai ragione. Nonostante abbia guardato la foto, i led non li ho visti. :sweat_smile: :sweat_smile:
Credo che a mezzanotte (00:02:56) sia meglio che inizi ad andare a letto, la vecchiaia incalza :stuck_out_tongue_closed_eyes:

Forse ho scoperto l'arcano, contrariamente a quanto scritto sul datasheet della scheda, il pin2 e il pin3 sul socket Xbee non sono collegati rispettivamente a TX e RX cioè PD2 e PD3 , ma a SCL (PD0) e SDA (PD1), quindi con Atmega32U4 credo sia impossibile da gestire, perché dovrei usare la libreria softwareserial che con Leonardo ha problemi a gestire i pin sopracitati.
Bella notizia :frowning:

ps
dubbio espresso da PaoloP :roll_eyes:

Ma sei sicuro che la SoftwareSerial non funzioni su quei 2 pin? Oppure non funziona proprio con la Leonardo?

leo72:
Ma sei sicuro che la SoftwareSerial non funzioni su quei 2 pin? Oppure non funziona proprio con la Leonardo?

"Not all pins on the Leonardo support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI)." ... è chiaramente indicato nella descrizione della SoftwareSerial :wink:

... e se ben ricordo, sulla Leonardo SCL è il 3 ed SDA il 2 :frowning:

Guglielmo

Ok. So che la SoftwareSerial usa i PCINT ma non ricordavo che l'Atmega32U4 non avesse i PCINT su tutti i pin.

PS:
però sui pin PD0 e PD1 ci sono gli INT0 e INT1 rispettivamente. Uno potrebbe armarsi di pazienza e modificare la SoftwareSerial per poter usare questi int... non so se ne valga la pena.

PS2:
SDA e SCL vanno considerati solo se si parla di usare anche l'I2C, non so se ad amario gli serve.

leo72:
...
SDA e SCL vanno considerati solo se si parla di usare anche l'I2C, non so se ad amario gli serve.

... difatti non credo sia un problema di I2C, é che, da quanto dice ... non credo abbia libera scelta dei pin : :wink:

amario57:
Forse ho scoperto l'arcano, contrariamente a quanto scritto sul datasheet della scheda, il pin2 e il pin3 sul socket Xbee non sono collegati rispettivamente a TX e RX cioè PD2 e PD3 , ma a SCL (PD0) e SDA (PD1) ...

Guglielmo