Connettere Xbee ad Arduino e programmazione

Ho letto molte guide su come collegare un modulo xbee ad Arduino alcune riportano di collegare DOUT(Xbee pin 2) a Rx(Arduino pin 0) e DIN(Xbee pin 3) a Tx(Arduino pin 1). Secondo la mia esperienza questo è assolutamente sbagliato. Utilizzo un Arduino duemilanove e un Xbee serie due. Per la comunicazione tra X-ctu e il modulo Xbee ho fatto i collegamenti esattamente al contrario.
Avete qualche idea in merito?
Monty.

monty14:
Secondo la mia esperienza questo è assolutamente sbagliato

DOUT = Tx degli Xbee
DIN = Rx degli Xbee

Vanno collegati DOUT con Rx di Arduino, DIN con Tx di Arduino, inoltre non è possibile collegare direttamente DIN con il Tx di Arduino per via delle diverse tensioni di funzionamento, 5V Arduino, 3.3V Xbee, è indispensabile usare un partitore resistivo, tipicamente 10k+18k, per ridurre la tensione del Tx di Arduino a 3V.

Ovviamente ho messo un partitore resistivo. Ma non funziona come dici tu ma solo come ho detto sopra...Collegando Dout(xbee) con Rx(arduino) e Din(xbee) con Tx(arduino) non funziona niente...

Ciao, io ho avuto lo stesso tuo problema solo che io ho usato 2 xbee pro 2° serie (possono essere usati nella stessa maniera precisa degli xbee standard solo che i pro hanno una portar maggiore) ed ho usato questo adattatore http://robot-italy.com/it/xbee-simple-board.html ... Per programmarli ho usato anche io un arduino (duemilanove nel mio caso) senza micro ed ho collegato il tx del xbee al tx del arduino e l'rx del xbee con l'rx dell'arduino. In più ho seguito questa guida Antipasto Hardware Blog: XBee Shield to XBee Shield Communication passo passo e tutto è andato per il verso giusto...

Perfetto. Allora non sono io che sto dando di matto :slight_smile: La cosa è assai strana comunque. Non capisco come mai in tutte le guide dicono il contrario. Xbee serie 1 ha una piedinatura diversa?

monty14:
Ma non funziona come dici tu ma solo come ho detto sopra.

Funziona come ho detto io, qui non è questione di interpretazione il Tx va al Rx e su questo non ci piove sopra, se a te ,apparentemente ,vanno collegati al contrario è perché hai invertito i pin senza accorgetene.

astrobeed:

monty14:
Ma non funziona come dici tu ma solo come ho detto sopra.

Funziona come ho detto io, qui non è questione di interpretazione il Tx va al Rx e su questo non ci piove sopra, se a te ,apparentemente ,vanno collegati al contrario è perché hai invertito i pin senza accorgetene.

Ascolta ho capito tutto ma non sono cogl***e se ti dico che li ho collegati così è perchè è la verità. Dario ha avuto la mia stessa esperienza sbagliamo tutti e due?

monty14:
sbagliamo tutti e due?

Si, sicuramente avete invertito i collegamenti.
Basta guardare il data sheet del Atmega 328 e lo schema di Arduino per capire come stanno le cose, il Tx del micro è PD1 ed è connesso al PIN 1 (Tx), il Rx del micro è PD0 ed è connesso al pin 0 (Rx), poi vedila come ti pare ma l'elettronica è una scienza esatta e non si base sulle ipotesi e sulle congetture, Tx (DOUT) va su Rx (pin 0) e Rx (DIN) va su Tx (pin 1).

astrobeed:

monty14:
sbagliamo tutti e due?

Si, sicuramente avete invertito i collegamenti.
Basta guardare il data sheet del Atmega 328 e lo schema di Arduino per capire come stanno le cose, il Tx del micro è PD1 ed è connesso al PIN 1 (Tx), il Rx del micro è PD0 ed è connesso al pin 0 (Rx), poi vedila come ti pare ma l'elettronica è una scienza esatta e non si base sulle ipotesi e sulle congetture, Tx (DOUT) va su Rx (pin 0) e Rx (DIN) va su Tx (pin 1).

Va bene hai ragione.

monty14:
Va bene hai ragione.

Ma ti costa tanta fatica dare uno sguardo al data sheet del 328 e allo schema di Arduino ?

Mi viene un dubbio, ma non è che stai cercando di usare il convertitore USB-Seriale di Arduino per far dialogare l'Xbee con il PC ? In questo caso è corretto collegare Tx con DOUT e Rx con DIN perché stai utilizzando Tx e Rx del FTDI o del 8u2 che ovviamente sono incrociati con quelli del ATmega, e se è così sarebbe il caso di rimuovere l'ATMEGA dal pcb o caricarci sopra uno sketch che setta i pin 1 e 0 come input in modo da metterli in stato di alta impedenza.
Quanto sopra non toglie che se vuoi usare l'Xbee con Arduino va collegato TX con DIN e Rx con DOUT.

  1. non sono una persona alle prime armi con l'elettronica;
  2. ho dato più di uno sguardo ai datasheet;
  3. ho connesso Xbee ad Arduino come dici tu e non funzionava poi ho invertito e funziona perfettamente;
  4. mi sono fatto mille domande e ricontrollato mille volte il circuito montato per vedere il motivo di questa anomalia;
  5. ho collegato il modulo Xbee al raspberry e funziona correttamente con la connessione Tx>Rx Rx>Tx;
  6. ho postato la domanda sul forum cercando qualcuno che mi desse le sue opinioni non qualcuno che mi dicesse che quello che ho fatto è sbagliato.

astrobeed:
Mi viene un dubbio, ma non è che stai cercando di usare il convertitore USB-Seriale di Arduino per far dialogare l'Xbee con il PC ? In questo caso è corretto collegare Tx con DOUT e Rx con DIN perché stai utilizzando Tx e Rx del FTDI o del 8u2 che ovviamente sono incrociati con quelli del ATmega, e se è così sarebbe il caso di rimuovere l'ATMEGA dal pcb o caricarci sopra uno sketch che setta i pin 1 e 0 come input in modo da metterli in stato di alta impedenza.
Quanto sopra non toglie che se vuoi usare l'Xbee con Arduino va collegato TX con DIN e Rx con DOUT.

Ooooo perfetto era questo che mi era sfuggito. Allora tutto torna perfettamente.
Grazie,
Monty

astrobeed:
Mi viene un dubbio, ma non è che stai cercando di usare il convertitore USB-Seriale di Arduino per far dialogare l'Xbee con il PC ?

Io è proprio questo che ho fatto, tanto che ho specificato

ovviamente se si vuole utilizzare l'xbee per comunicare (e non per programmarlo) bisogna collegare il TX del xbee all'ex dell'arduino e viceversa... :slight_smile: