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
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.
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?
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
Paolo, amario credo si riferisca alla sua scheda IBOARD
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
Paolo, hai ragione. Nonostante abbia guardato la foto, i led non li ho visti.
Credo che a mezzanotte (00:02:56) sia meglio che inizi ad andare a letto, la vecchiaia incalza
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
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
... e se ben ricordo, sulla Leonardo SCL è il 3 ed SDA il 2
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 :
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) ...