Fino
ad ora per far comunicare gli Arduino collegati alla LAN ho usato la
libreria "Ethernet.h" che a sua volta usa il protocollo TCP, in questa
pagina presento un sistema di comunicazione basato sul protocollo UDP
che utilizza la libreria "EthernetUdp.h".
A differenza del primo
protocollo l'UDP non richiede una connessione continua tra gli Arduini
interessati alla comunicazione, non verifica che i pacchetti arrivino a
destinazione e quindi non aspetta risposte e non risponde ad esse per
il controllo del flusso dei dati, il programma che sfrutta questo tipo
di protocollo e' piu' leggero e di maggiore compressione, a grandi
linee le sue istruzioni sono paragonabili a quelle che gestiscono la
seriale.
Tutte queste caratteristiche rendono il protocollo UDP
ideale per trasmettere dati a velocita' superiori di quella per
trasmetterli in ambito TCP quando, ovviamente, non si da
importanza alla perdita o alla ricezione di pacchetti
alterati lungo il percorso.
In questa pagina il sistema che presento
e' solo dimostrativo dato che non richiede alte velocita' di
trasmissione dati e serve solo per comprendere il meccanismo di base
della comunicazione UDP,.
Il materiale che serve e' il seguente:
1) Un Arduino Mega con shield Ethernet.
2) Un Arduino Nano con shield Ethernet.
3) Un pulsante.
4) Due resistenze 1K 1/4 W.
5) Due led.
Lo schema a blocchi relativo e' rappresentato nella seguente figura:
Premendo
il pulsante viene spedito un byte ('a') ad Arduino Uno, quest'ultimo lo
legge e se e' corretto illumina il led ad esso
collegato, successivamente spedisce al mittente un byte che illumina o
spegne il led collegato ad Arduino Mega a seconda del suo stato
precedente. Questo sistema ci assicura che il dato e' stato ricevuto da
Arduino Uno semplicemente osservando se il led del pulsante ha
cambiato stato.
Il diagramma di flusso del programma caricato su Arduino Mega e' rappresentato nella figura seguente:
Il diagramma di flusso del programma caricato su Arduino Uno e' rappresentato nella figura seguente:
Nelle
due figure seguenti sono rappresentati i collegamenti di Arduino Mega e
Arduino Uno (nel disegno, per chiarezza, non sono presenti le schield
Ethernet).
File sorgenteFabio