comunicazione pc arduino NO SERIALE

Buon giorno a tutti!!!

Ho necessità di far comunicare il pc con l'arduino. Sono capace a farlo tramite la porta seriale, è solo che questa è poco affidabile (spesso si blocca la comunicazione) e quindi volevo trovare un modo alternativo e più affidabile.

Facendo ricerche ho visto che una delle possibilità è il collegamento tramite la seriale rs232, e tra i punti di debolezza c'è la limitata velocità di comunicazione.

Qualcuno mi sa dire se esiste ed è alla portata un metodo alternativo più moderno e veloce?? Esistono oltre a questo altri metodi ancora???

Grazie a tutti per la disponibilità

Ferdinando

fikkiovarrikkio:
è solo che questa è poco affidabile (spesso si blocca la comunicazione)

Assolutamente falso, la comunicazione tramite porta seriale virtuale (USB) è altamente affidabile, se ci sono dei blocchi al 99% è colpa del software, in tutti casi è indispensabile un protocollo di comunicazione affidabile perché gli errori hardware sul bus sono sempre possibili.

Facendo ricerche ho visto che una delle possibilità è il collegamento tramite la seriale rs232, e tra i punti di debolezza c'è la limitata velocità di comunicazione.

La RS232 è sempre una seriale, cambiano solo le specifiche hardware del bus ed è meno affidabile della seriale virtuale tramite USB, oltre ad essere più lenta, per contro consente distanze maggiori rispetto ad un cavo USB.

Esistono oltre a questo altri metodi ancora???

Dipende da cosa devi fare e che prestazioni richiedi, in tutti i casi il collo di bottiglia è il micro di Arduino che più di tanto non può fare a livello di comunicazione, in fin dei conti è solo una piccola mcu 8 bit @16 MHz.

astrobeed:
Assolutamente falso, la comunicazione tramite porta seriale virtuale (USB) è altamente affidabile, se ci sono dei blocchi al 99% è colpa del software, in tutti casi è indispensabile un protocollo di comunicazione affidabile perché gli errori hardware sul bus sono sempre possibili.

Ho sperimentato questa cosa sulla stampante 3D e su dei programmini che feci per accendere dei led tramite seriale ... nel primo caso, quando mando in stampa un file direttamente dal computer, mi è capita che d'improvviso, durante il processo di stampa, si interrompe la comunicazione e devo riprendere daccapo (cosa che non mi succede quando invece mando tutto dalla SD, per ovvie ragioni) mentre nel secondo caso, sempre in maniera abbastanza casuale, a volte è proprio il computer che non mi rileva l'arduino (e credo che succeda la stessa cosa di quando si interrompe il processo di stampa, ovvero il pc non comunica più perchè non rileva più l'hardware). Questa cosa mi è accaduta su quattro computer diversi, e ho pensato che potesse essere a causa della non altissima affidabilità della porta seriale.

astrobeed:
Dipende da cosa devi fare e che prestazioni richiedi

Devo rilevare dei dati audio sul computer, mapparli ed inviarli ad un arduino "server" che a sua volta dovrà smisterare (credo tramite wi-fi poichè non devo avere ingombri di fili) a dei client che devono accendere dei led!

In arduino non è stato previsto l'handshake hardware ma solo software , ad esempio di tipo XON/XOFF , questo tipo di handshake può dare più problemi di quello hardware, comunque nel caso della tua stampante 3D è vero che ogni tanto il Pc perde il messaggio di feedback dalla stampante ma se dedicherai un computer alla stampante, anche vecchio, vedrai che anche l'handshake software funzionerà bene

E' comunque possibile implementare più o meno facilmente l'handshake hardware su arduino. essenzialmente ci sono 3 metodi:

  1. usare una arduino 2009 oppure una UNO con FT232 Pl2303 o CH340, tutte queste hanno un convertitore usb-232 hardware

2)modificare il firmware per il mega16U2 usando i numerosi pin liberi disponibili

3)implementare su mega16u2 una periferica bulk usb 2.0 per il trasferimento di massa, in questo caso arduino non verrà più visto come una VCOM ma come periferica di massa