ARDUINO + 2 XBEE PRO + XBEE ADAPTER + XBEE SHIELD

Ciao a tutti, sono di nuovo qui a chiedere di arduino e xbee, vorrei provare a fare il punto della situazione su questo tipo di comunicazione per farne uscire unbel tutorial in Italiano (potrebbe essere utile a molte persone), però mi serve un pò di aiuto!!!

La mia prima domanda: 1) è consigliato aggiornare il firmware di entrambi i moduli xbee pro?

GRAZIE

Ho trovato in rete che è consigliato aggiornare il firmware!!!

Ho provato ad aggiornare, effettuo tutto il download , il download termina poi quando provo a scrivere l'ultimo firmware disponibile (10E8) la cosa va a buon fine e mi esce scritto:

Getting modem type....OK Programming modem...OK Setting AT parameters..OK Write Parameters...Complete

(ho utilizzato un Baud Rate di 9600)

Ora aggiorno il firmware anche per l'altro modulo Xbee PRO, penso che per comunicare come si deve debbano montare lo stesso firmware!!! (penso...) :)

Ragazzi ora sto passando alla configurazione del ricevitore e del trasmettitore, per quanto riguarda il trasmettitore mi sono bloccato qui, non riesco a capire come effettuare questo passaggio della guida trovata su Ladyada:

Now solder in a tiny jumper between the RTS pin and D3. This will tie the status of D3 to the status of the RTS pin which is can be configured to be used as the 'arduino reset pin'

Qualcuno può aiutarmi? La guida che sto seguendo è questa: Guida LAdyada

Il problema è che io non ho quell'adattatore lì, ma questo: Adattatore Xbee-Usb

Posso saltare quel passaggio, o effettuarlo in un altro modo?

Allora, io ho due moduli Xbee serie 2 non PRO.

Uno dei due moduli (con firm coordinator) lo collego al pc con questo: http://www.robot-italy.com/product_info.php?products_id=742 L'altro (con firm router/end user) all'arduino con questo qua: http://www.robot-italy.com/product_info.php?products_id=1175

No ho fatto altro che settare in uno l'ID dell'altro, e viceversa, dopodichè ho avviato l'utility di test del programma dell'Xbee. Il tutto perfettamente funzionante!

Non ho fatto alcuna modifica ai vari circuiti. Funziona cosi'?

Siamo nella stessa situazione ma non ho capito 2 cose:

1) Quale è l'utility test che utilizzi

2) cosa è connesso a cosa?

Per quanto mi riguarda ho due postazioni:

A- PC fisso con attaccato l'usb shield Xbee con relativo modulo xbee

B- Arduino alimentato a 9V (con una pila) e relativa Arduino Xbee shield + modulo xbee

Anche tu sei nella stessa situazione?

Grazie, mi saresti davvero d'aiuto!!!

La situazione sembra la stessa, solo che non ho capito se hai moduli serie 2 come me o no. In questo caso affermativo le mie stesse configurazioni devono per forza funzionare, altrimenti è da verificare.

Allra, l'applicazione è X-CTU, scaricala da qua: http://www.digi.com/support/productdetl.jsp?pid=3352&osvid=57&s=316&tp=5&tp2=0

Con questa puoi caricare il firmware adeguato e settare i corretti destination address.

Riesci?

ciao ragazzi, io avrei bisogno del vostro aiuto in quanto non sono molto esperto in materia, diciamo che ho giusto le basi e molta voglia di applicarmi. allora comincio del dire che quello che voglio fare non è del tutto semplice. insomma sto progettando un modellino di una barchetta in legno. vorrei riuscire a radiocomandarla da almeno 20/30 mt anche 50 mt se possibile, però sto diventando matto a cercare in internet tutte le soluzioni possibili. ho letto di arduino bt e di altri moduli rx tx e volevo sapere qual'era il sistema migliore, e capire come potrei comandare vari motorini elettrici attraverso questi.

VI RINGRAZIO IN ANTICIPO E MI SCUSO SE MAGARI O POSTATO QUESTA DOMANDA SU UN TOPIC NON DEL TUTTO ADATTO, CERCATE DI CAPIRMI, è UNA SETTIMANA CHE NAVIGO SENZA ALCUN RISULTATO. GRAZIE ANCORA IN ANTICIPO CIAO A TUTTI

l'xbee in modalità "semplice" (la procedura descritta in questa pagina) puo' andar bene per i tuoi scopi.

Ma come pensi di controllare la barca? software su pc? consolle??

intanto grazie della risposta tempestiva in primis volevo comandarlo tramite notebook, però volevo riuscire a comandarlo tramite acer liquid mt che usa il sistema operativo android dici si possa fare?

Allora, tramite notebook:

BARCA (Arduino + Xbee Shield + Modulo Xbee) < ==== > PC (Xbee Usb Board + Modulo Xbee + Pc)

La comunicazione avverrebbe in via seriale, come se l’arduino fosse direttamente collegato al pc, il ponte Xbee funzionerebbe come un cavo “virtuale”.

Per poter sfruttare il tutto tramite cellulare, o realizzi un software che si interfaccia tramite pc e sfrutti la configurazione di sopra, oppure potresti provare a sviluppare quanto segue:

BARCA (Arduino + Xbee Shield + Modulo Xbee) < ==== > BASE (Arduino + Ethernet shield + Xbee Usb Board + Modulo Xbee) < === > ROUTER /ADSL <===> CELLULARE

Ovvero al posto del pc sostituisci sempre un arduino che comunica con la barca via Xbee ma si interfaccia al cellulare tramite l’ethernet shield. Per avere una idea guarda questo link, un web server: http://www.webweavertech.com/ovidiu/weblog/archives/000484.html

@nicola90wii

Non prenderla come una cosa detta con un tono scocciato o che perchè il forum è fatto per fare domande, quindi ogni domanda io penso che non sia mai sbagliata, però un consiglio: per non interferire in un post che c'entra poco con il tuo creane un altro, in questo modo puoi ricevere anche più risposte... ad esempio se scrivessi: "Comunicazione wireless per barca radiocomandata" attireresti molte persone e molte persone ti potrebbero rispondere!! Detto questo, poi puoi fare come vuoi...

@Gianfranco Non riesco a ricordare che serie sono!...sai come si vede comunque io sono riuscito a fare l'upgrade del firmware, ma poi ? Cosa metto in arduino? X-Ctu naturalmente ce l'ho!!!

Quando clicco su Test/Query mi esce scritto: Modem Type =XBP24 Modem Firmware Version=10E8

GRAZIE

f.schiano: Ragazzi ora sto passando alla configurazione del ricevitore e del trasmettitore, per quanto riguarda il trasmettitore mi sono bloccato qui, non riesco a capire come effettuare questo passaggio della guida trovata su Ladyada:

Now solder in a tiny jumper between the RTS pin and D3. This will tie the status of D3 to the status of the RTS pin which is can be configured to be used as the 'arduino reset pin'

Qualcuno può aiutarmi? La guida che sto seguendo è questa: Guida LAdyada

Il problema è che io non ho quell'adattatore lì, ma questo: Adattatore Xbee-Usb

Posso saltare quel passaggio, o effettuarlo in un altro modo?

ciao, se non trovi il PIN RTS ci sono 2 soluzioni: o è stato chiamato in altro modo, oppure non è stato "collegato". in entrambi i casi la soluzione è simile: scarica il datasheet dell'XBEE, guarda il pin che ti serve e controlla che fine fa quando lo colleghi allo shield. In pratica con un filo poi colleghi il pin RTS al pin D3. Il passaggio lo puoi più o meno saltare: in pratica serve per fare in modo tale che se mandi il comando di reset dal PC, viene spedito sul pin RTS, che lo rimanda al pin d3 e automaticamente resetti arduino. Però poi non puoi più usare il pin D3 o resetti l'arduino ogni volta... secondo me è molto meglio se NON salti il ponte tra D3 e RTS, e usi direttamente RTS, così hai comunque il reset a distanza, ma non perdi il pin D3

il passaggio lo puoi saltare se NON vuoi programmare arduino a distanza (arduino va resettato per caricare lo sketch), altrimenti fallo come ti ho consigliato.

Non ho mai usato gli xbee, ma questo dovrebbe essere quanto

@nicola90wii: non far casino, usa la tua discussione. In particolare qui si sta parlando di programmare arduino a distanza con gli xbee, cosa che non centra molto col fatto di comandare una barca :-)

Grazie Lesto per le dritte, per ora non mi interessa molto programmare a distanza l'Arduino, io vorrei programmarlo per acquisire ad esempio dei dati e quindi acquisire quei dati a distanza :D , però non ci riesco perchè a me la cosa funzionava solo se avevo: - arduino + xbee pro + xbee arduino shield sul PC fisso; - xbee pro + usb shield xbee con cavo usb collegato ad un portatile

La prova l'avevo fatta solo per vedere se i due moduli funzionavano però in se per se non era molto utile!!! Ora vorrei realizzare la cosa che ho detto precedentemente ma non ci riesco!!! :(

Ho messo tutte le impostazioni di default su entrambi i moduli xbee pro (anche se rimane il dubbio su che serie siano) e ho uploadato questo sketch su arduino:

void setup() {
// set the data rate for the SoftwareSerial port
Serial.begin(9600);
Serial.println("Hello, world?");
}

void loop() {  // run over and over again

if (Serial.available()) {

for(int i=1;i<=10;i++){
Serial.println(i);
}
}
}

Questo codice sta su un arduino alimentato a 9V (senza collegamento a PC).

Quando faccio il range test, mi dice che tutti i pacchetti ricevuti sono BAD (rossi), anche se qualcosa di sensato riceve:

8
9
10
1
2
3
4
5
6

e così via…

PErò non capisco perchè sono tutti rossi come se fossero errati.
Questa cosa funziona però solo se scrivo qualcosa nella finestra Transmit del Range Test di X-CTU!!! Sapete aiutarmi per favore???

GRAZIE

8
9
10

:slight_smile:
perché siano rossi non lo so, di solito erano neri?

Questa cosa funziona però solo se scrivo qualcosa nella finestra Transmit del Range Test di X-CTU!!! Sapete aiutarmi per favore???

lol è giusto così! tu gli dici:

if (Serial.available()) {

for(int i=1;i<=10;i++){
Serial.println(i);
}
}

andiamo a vedere cosa combina Serial.avaiable(), direttamente da: http://arduino.cc/en/Serial/Available
(ragazzuoli il reference deve diventare la vostra fonte di informazione quotidiana :slight_smile: )

Get the number of bytes (characters) available for reading from the serial port. This is data that’s already arrived and stored in the serial receive buffer (which holds 128 bytes).

Quindi Serial.avaiable() ritorna vero (ovvero un qualsiasi numero diverso da 0) se ci sono dei dati IN ENTRATA! Quindi se ci sono dei dati nel buffer che aspettano di essere letti tu stampi, altrimenti non fai niente.

per scrivere NON ti serve controllare se la seriale è pronta, semplicemente perché per il protocollo seriale NON esiste questo genere di controllo ed è sempre pronta (ed ecco perchè non si possono collegare più cose a TX-RX, se prima non si programma un protocollo specifico per gestire questo genere di problematiche)

Mhhh, quindi non servirebbe a nulla il

if Serial.available() …

Il problema è che se, anche ora, ci metto niente da trasmettere la comunicazione non funziona!

ho scritto questo:

void setup() {
// set the data rate for the SoftwareSerial port
Serial.begin(9600);
Serial.println("Hello, world?");
}

void loop() {  // run over and over again

for(int i=1;i<=10;i++){
  delay(400);
Serial.println(i);
  delay(100);
}

}

Inoltre mi stampa tutti i numeri (su X-CTU) tranne il 10 (mi scrive 1 al posto di 10) …(Vabbè questo è l’ultimo dei problemi :slight_smile: ) !!! Mi sto spulciando tutta la rete per trovare qualcosa, vi aggiorno!

uhm per la storia dello scrivere allora non so, sicuramente il serial.avaiable() era un errore.

che non ti stampa 10 magari perchè stampa 1 e poi 0?

prova questo codice:

void setup() {
// set the data rate for the SoftwareSerial port
Serial.begin(9600);
}

void loop() {  // run over and over again

for(int i=1;i<=10;i++){
  delay(400);
Serial.print(i);
  delay(100);
}
Serial.print("\n");
}

Facciamo prima se ti dico dove ho imparato io: http://www.robot-italy.net/roboforum/showthread.php?p=8094

Pochi passaggi per consentire la comunicazione!!

In ogni caso i Series 2 l'hanno proprio scritto di sopra, per cui se non hai mai visto la scritta, probabilmente sono serie 1, e li non so come funzionano..

@gianfranco

Ho seguito tutta la guida da te postata, però il problema resta il range test...cioè ora nella scheda terminal di X-CTU mi compaiono i caratteri che invio da Arduino, mentre se effettuo il range test non funziona per niente bene...dice: Timeout waiting for data Timeout waiting for data 10 1Timeout waiting for data Timeout waiting for data 10 1Timeout waiting for data Timeout waiting for data 10 1Timeout waiting for data Timeout waiting for data 10 1

:( Ma visto che i miei xbee sono entrambi series 1 posso saltare i passaggi sul coordinator etc???

Un dubbio che mi è venuto, nella scheda "modem configuration" di X-CTU c'è un campo chiamato "function set" che penso si riferisca alla funzione del modulo che si sta analizzando, ed io ho trovato la funzione:

XBEE PRO 802.15.4 USB ADAPTER

Devo selezionare quella visto che sto utilizzando un usb explorer???

GRAZIE

Incredibile, non ce la faccio più....

sono riuscito a far comunicare gli xbee ma il range test non vuole fungere :(

Cioè vi spiego i passaggi:

1)Ho caricato su Arduino questo sketch, che mi permette di inviare un valore ad arduino e lui (arduino) me lo invia incrementato di 1:

// this is where we will put our data
int myData = 0;

void setup(){
    // Start up our serial port, we configured our XBEE devices for 38400 bps. 
    Serial.begin(9600);
}

void loop(){
    // handle serial data, if any
    if(Serial.available() > 0){
        myData = Serial.read();
        if(myData == '\n')
            Serial.print(myData,BYTE);
        else
            Serial.print(myData + 1, BYTE);
    }
}

2)Ho collegato arduino all'Xbee shield con relativo modulo xbee pro serie 1 3)Al pc ho collegato l'explorer USB con relativo modulo xbee pro serie 1 4) 5)Ho scritto: "CIAO" dalla finestra terminal di X-CTU 6)E mi ha restituito:"DJBP" Quindi finora tutto apposto!!!!

7)Se invece di scrivere dal Terminal di x ctu scrivo nella finestra relativa al "Range Test" di X-CTU e scrivo CIAO nella parte del [u]Transmit[/u], mi restituisce "DJPB" nella parte del [u]Receive[/u] però in rosso :(, dicendo quindi che tutti i pacchetti inviati sono BAD....

Voglio capire come fare per far funzionare questo RANGE test....

Uffa non ce la faccio più!!!!