Salve, da qualche tempo mi sono avvicinato ad arduino e al mondo dell'elettronica in generale per via di un progetto che sto seguendo.
Non mi dilungo troppo a spiegare i dettagli del progetto, in quanto il mio problema è prettamente legato alla configurazione dei moduli xbee... mi rendo conto che questo è un forum su arduino e non su xbee, ma non saprei su quale altro forum chiedere (ogni consiglio o link di documentazioni o altro è sempre ben accetto).
Ho l necessità di collegare più arduino al pc, in modo da controllarli via wireless tramite il pc. A questo proposito ho iniziato ad acquistare 2 Xbee serie 2 per iniziare a fare i test, con relative shield per collagarli rispettivamente all'usb del pc ed all'arduino.
La rete a stella che pensavo di fare vede il coordinator collegato tramite usb shield al pc, e gli altri "routers" collegati ai rispettivi arduino.
Il coordinator dovrà trasmettere i comandi che gli arrivano via usb a tutti i moduli xbee della rete; mentre i routers dovranno trasmettere le risposte solo al coordinator centrale.
A tal proposito io ho impostato i due xbee in questa maniera:
Coordinator:
Modem Xbee: XB24-ZB
Function: ZIGBEE COORDINATOR AT
PAN ID: 1234
Destination Address Hight: 0
Destination Address Low: FFFF (questi due li ho lasciati così com'erano, da quel che ho capito così impostati dovrebbero essere in grado di inviare i dati a tutti i moduli della rete)
Router:
Modem Xbee: XB24-ZB
Function: ZIGBEE ROUTER AT
PAN ID: 1234
Destination Address Hight: "il serial number hight del coordinator"
Destination Address Low: "il serial number low del coordinator"
Il baud rate l'ho lasciato a 9600, il bit di parità idem (disattivato), e l'arduino (è un lilypad) l'ho caricato col codice di quello che deve fare (per ora accendere e spegnere led). Premetto che l'arduino con quel codice, collegato via usb tramite FTDI, rispondeva correttamente a tutti i comandi inviati.
Ho collegato la shield xbee all'arduino in questa maniera: Vin (5v) al +, GRN al -, RX dell'arduino al TX dell'xbee shield, e TX dell'arduino collegata all'RX dell'xbee shield tramite un partitore resistivo (12k e 22k Ohm) per adattare i 3.3v dell'xbee ai 5v dell'arduino (come consigliato da più guide in google).
Ho provato ad iniziare ad inviare qualche comando dal pc, e il tutto funzionava! ottimo!
Poi però ho provato a fare dei test "floodando" un po' gli xbee con sequenze di comandi più ravvicinate, per vedere come si comportavano ad un carico maggiore, e qui ho avuto una brutta sorpresa: Ogni tanto (4-5 secondi) il segnale smetteva di arrivare all'arduino, che smetteva di lavorare. Poi dopo altri 3-4 secondi, ripartiva, per poi ribloccarsi di nuovo... e avanti così.
Purtroppo per il mio progetto ho la necessità che lo scambio di comandi e risposte avvenga quasi in tempo reale. Preciso che i comandi "pesano" pochi byte (sono dei numeri inferiori a 1000), quindi non è un problema di dimensioni dei comandi.
Allora ho fatto una prova: ho stacato l'xbee dall'arduino ed ho "cortocircuitato" il TX e l'RX sulla shield, il modo che "rispondesse" al coordinator con quello che gli arrivava. Ma anche questa prova ha dato gli stessi risultati di prima.
Allora ho fatto un'altra prova: ho invertito il coordinator con il router. Praticamente ora era il router collegato al pc, mentre il coordinator era collegato all'arduino. Ho ripetuto la prova "flood" e con questa configurazione stranamente i comandi arrivavano a destinazione sull'arduino in maniera corretta ad una velocità molto elevata, senza attimi di "stop". Invece erano le risposte dall'arduino verso il pc che sul monitor seriale arrivavano ad intervalli ritardati di 3-5 secondi!
Così, ho provato a cambiare sul coordinator i parametri "Destination Address Hight" e "Destination Address Low", impostandoli rispettivamente con il serial numer hight ed il serial number low del router. Praticamente ho ricreato la classica configurazione P2P riportata nei millemila tutorial che si trovano in google. Con questa configurazione tutto funziona in modo eccellente, ho la massima velocità in entrambe le direzioni, senza alcun rallentamento.
Purtroppo, come ho già scritto, in futuro dovrò aggiungere altri arduino ed altri moduli xbee, ed ho la necessità che la comunicazione tra il pc e gli arduino avvenga il più rapidamente possibile. Qualcuno sa darmi una dritta su come impostare gli l'xbee per avere una configurazione "a stella" con le caratteristiche che mi servono? Sono consapevole che il mondo degli xbee e le sue reti è un qualcosa di immensamente vasto e non si può comprendere in 2 minuti. Mi basterebbe un qualche esempio chiaro che vada oltre alla classica configurazone "p2p" tra 2 xbee per far accendere un led. Ogni dritta è ben accetta!
Grazie in anticipo!