Go Down

Topic: Comunicazione PC-Arduino, metodo più veloce (Read 472 times) previous topic - next topic

lupusimprobus

Buongiorno a tutti.

Il quesito di oggi è il seguente:
Ho una scheda Arduino, non ho ancora stabilito quale, che riceve una serie di input sia analogici che digitali.
Sulla scheda sarà collegata una ethernet sheeld per connettere il tutto in rete.
L'Arduino verrà collegato via ethernet ad un PC che dovrà leggere lo stato degli ingressi il più velocemente possibile.
Ho pensato di utilizzare l'Arduino come server e lasciarlo in attesa su una porta specifica.
In questo modo, cambiando l'indirizzo IP dell'Arduino posso collegare più Arduino in rete e leggere un numero maggiore di dati, utilizzando il pc ome client.
Il mio scopo è quello di collegare diversi Arduino in rete per leggere sensori posti in punti differenti e far pervenire tutti i dati al PC.

Ho pensato di creare sul PC tanti socket quanti sono gli Arduino e inviare un comando per dire quali dati mi occorrono. Nel caso specifico se mi servono solo i dati degli ingressi digitali oppure anche quelli degli ingressi analogici.
Quindi mando dal PC una richiesta tramite socket e l'Aruino i risponde. Appena ricevuto la risposta il PC invia una nuova richiesta e così via per tutto il tempo in cui l'Arduino risulta collegato.
Sul PC creerò tanti thread quanti sono gli Arduino con cui comunicare e altrettanti socket.

Ora la domanda:
E' un metodo corretto per ottenere il risultato sopra descritto?
Ci sono soluzioni differenti che dovrei prendere in considerazione?

Grazie a tutti per l'attenzione, Valerio.

lesto

è una metodologia valida, l'uso del TCP rende affibaile il processo di raccolta dati.
In pratica il tuo pc fa da "sink" (scarico) dei dati.

non usare un thread per connessione, molti linguaggi permettono l'uso dei socket non bloccanti, quindi da un unico thread fai una read di tutti i socket, se ci sono dati li salvi, se non ci sono salti al prossimo (nota che essendo non bloccanti non resti in attesa)

ma se sei in LAN puoi pensare l'uso di UDP (a dispito di qualche dato erratto/perso), o addirittura l'uso della rs485
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie


lupusimprobus

Per prima cosa: Grazie per le risposte.
Per seconda: Scusate il ritardo. In questi giorni sono fuori sede e non ho sempre una connessione ad internet a disposizione.
Appena avrò un po' di tempo farò qualche esperimento.
Grazie ancora.

Go Up