Controllo sensori a distanza

Salve,
sono nuovo di questi luogo e mi scuso in anticipo se in qualche modo non mi sono mosso correttamente rispetto alle consuetudini del forum. Cerco di arrivare rapidamente al punto della questione.

Sto costruendo un sistema di misura dei principali parametri chimico fisici dell'atmosfera; l'obbiettivo è salvare i dati ricevuti dai sensori nella scheda SD e comunicarli a distanza al pc tramite wireless.

Pensavo di fare il tutto con Arduino Mega 2560 e una shield wireless SD + antenna XbeePro; credevo non ci fossero problemi, ma leggendo le caratteristiche della shield ho notato che si dice sia possibile fare solo una delle due operazioni.

Quindi passo alle domande:

  • E' possibile impostare arduino perché salvi e comunichi a distanza contemporaneamente?
  • L'Xbee Pro comunica semplicemente con "serial.print" o servono altri accorgimenti?

Grazie in anticipo!
Marco (fisico tra le nuvole)

Sezione MAGATOPIC, c'e' scritto anche in grosso:
LEGGERE PRIMA DI SCRIVERE IN QUESTA SEZIONE

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Hai perfettamente ragione, scusatemi!
Mi presento subito dove dovrei, intanto grazie per le info.

ciao

  • E' possibile impostare arduino perché salvi e comunichi a distanza contemporaneamente?

contemporaneamente non è possibile, le istruzioni vengono eseguite in modo seriale, ma considerando l'elevata velocità di esecuzione, puoi pensare a un quasi contemporaneamente

  • L'Xbee Pro comunica semplicemente con "serial.print" o servono altri accorgimenti?

ti impegna la seriale quando devi caricare lo sketch lo devi scollegare sullo shield che ho usato ci sono dei ponticelli, ma sono costosi e vanno programmati, che distanze ti servono?

Salve Stefa,
nonostante io abbia aperto la discussione nel posto sbagliato tu comunque mi hai risposto. Eroico :wink:
Grazie davvero. Visto che sei stato così gentile ne approfitto se non ti dispiace.

Quando dici

stefa24:
contemporaneamente non è possibile, le istruzioni vengono eseguite in modo seriale, ma considerando l’elevata velocità di esecuzione, puoi pensare a un quasi contemporaneamente

Intendi che posso utilizzare la board (e quindi i canali TX0 e RX0) sia per salvare che per inviare dati facendo però attenzione che queste operazioni non saranno eseguite esattamente in contemporanea, ma, al massimo, con un certo delay? A questo punto immagino che i tempi di salvataggio e invio dipenderanno solo dalla velocità di esecuzione delle operazioni e possono essere modificati opportunamente con il comando “delay”; giusto?

Le distanze a cui dovrei lavorare sono di circa 400 metri… Arduino dovrà infatti gestire una serie di sensori per le analisi chimico/fisiche dell’atmosfera, un GPS, il salvataggio dati su scheda SD e l’invio a distanza di tutti questi dati. Questo mi solleva una nuova problematica.

Il GPS lavora con i canali RX e TX, ma nel caso della configurazione MEGA + BOARD WIRELESS/SD quelli principali sono occupati per la trasmissione e il salvataggio dei dati, dovrei quindi utilizzare gli altri canali a disposizione, ma sto riscontrando problemi perché sembrano non funzionare correttamente… Hanno forse bisogno di essere configurati in maniera particolare? O semplicemente sono io che sbaglio qualche cosa?

Grazie ancora per la disponibilità!

a te sembreranno operazioni eseguite contemporaneamente ma i in realtà sono sempre seriali.
400 mt sono tanti, li ottieni solo se non ci sono ostacoli di nessun genere, con xbee ho fatto qualcosa ma sono cari, per la prossima volevo servirmi di questi
http://www.erewireless.com/pag.asp?n=3&t=Prodotti&family=RM&cercac=&antennaseries=D4&antennaconnection=&barriertype=&thread=&material=&materialconnection=&radioconnection=&housingconnector=&cableconnector=&certification=&cablelength=#risultati
è italiana.
La mega non la conosco prova a cercare nel reference

Grazie dello spunto! A suo tempo verificherò se fa a caso mio, comunque non ho troppi problemi con i prezzi perché si tratta di un progetto universitario; quasi tutto quello che rientra nel mondo arduino ha un costo assolutamente abbordabile rispetto alle normali strumentazioni da ricerca. Mi puoi indicare dove trovo qualcuno che mi può aiutare con MEGA?

qui sul forum puoi solo aspettare che qualcuno passi da qui, ma se sei all'università non hai colleghi nel settore?

Ho visto il tuo messaggio.

La MEGA ha a disposizione 4 seriali hardware

Serial: 0 (RX) and 1 (TX); Serial 1: 19 (RX) and 18 (TX); Serial 2: 17 (RX) and 16 (TX); Serial 3: 15 (RX) and 14 (TX). Used to receive (RX) and transmit (TX) TTL serial data. Pins 0 and 1 are also connected to the corresponding pins of the ATmega16U2 USB-to-TTL Serial chip.

Per poterle usare le devi inizializzare nel setup(), esempio

Serial1.begin(9600);

per utilizzare la seconda seriale (la prima è la Serial senza numero) sui piedini 18 e 19.

Non ricordo bene se era per il GPS ma spesso si è riscontrato un problema col le seriali hardware e alcuni moduli. Mi pare funzionavano invece molto bene con le seriali software. Dovresti chiedere a Guglielmo (gpb01) per questo.

Dovresti inoltre descrivere meglio i collegamenti effettuati così sarebbe più facile aiutarti invece che andare alla cieca.
Ricorda comunque di collegare sempre il GND in comune, sopratutto se usi alimentazioni separate per mega e moduli.
Inoltre se non fai reply sulla Serial (senza numero), i dati che transitano sulle altre seriali non li vedi sul serial monitor poiché non fisicamente connesse con la USB.

Grazie per la risposta precisa e tempestiva!

In generale comunque la configurazione che vorremmo adottare prevede: la SHIELD WIRELESS montata sul MEGA ad occupare quindi i canali RX0 e TX0; una qualsiasi altra coppia RX/TX per il GPS...

Credo che il problema sia proprio quello dell'errato richiamo della seriale... Domani in mattinata faccio qualche test e vi tengo aggiornati.

:grin:

Dopo i test di questa mattina posso dire, con una certa sicurezza, che funziona tutto :wink: ora devo sistemare i codici e ottimizzare il tutto, ma mi avete messo sulla strada giusta! Grazie mille! Il vostro è stato davvero un aiuto prezioso!

Dovresti prevedere la possibilità che l'eccessiva distanza non permetta la trasmissione, registrando quindi i dati su SD per poi ritrasmetterli appena c'è nuovamente il collegamento.
Non è però una cosa semplice da fare.
Dovresti creare un sistema bidirezionale con controllo di ricezione ed una variabile che indichi quali dati sono stati già trasmessi e quali no; oltre ad un controllo costante del collegamento.

Molto interessante! Dove trovo una base da cui partire per fare una cosa del genere?

Puoi guardare qui --> http://www.mcmajan.com/mcmajanwpr/?p=2216
Quelle librerie dovrebbe già avere un protocollo di trasmissione con risposta (ACK).