Serial Arduino – Ricezione e trasmissione dati #02

Seriale e Arduino

Serial Arduino – Continua lo speciale sulla comunicazione seriale per Arduino. Oggi presentiamo un doppio sketch per invio e ricezione dati.

La scorsa settimana abbiamo affrontato l’argomento della comunicazione seriale dal punto di vista teorico, ed abbiamo appreso in che modo le informazioni vengono trasferite da un sistema all’altro. Oggi, come promesso, inizieremo a lavorare in modo più squisitamente pratico sull’argomento, producendo un paio di listati che trasformeranno due schede Arduino in un sistema ricetrasmittente.

Nello specifico, utilizzeremo una scheda Arduino con un tasto  per trasmettere uno stato (HIGH – LOW) attraverso il collegamento seriale, ed un secondo Arduino per ricevere lo stato ed accendere un LED. Vediamo come.

Il sistema trasmittente

Il nostro sistema trasmittente è basato sul classico pulsante in PULL_UP, che abbassa il livello sul PIN digitale al quale è connesso quando viene premuto. Uno dei PIN del pulsante è collegato con il GND in comune con le due schede, mentre l’altro va diretto verso il PIN 2 della scheda trasmittente.

Ecco il codice:

Il testo si commenta da solo: vengono inizializzati il pulsante e la seriale (necessaria per trasmettere il carattere), quindi nel loop() eseguiamo un ciclo infinito di letture.

A differenza di pinMode(INPUT), non è necessaria alcuna resistenza di pull-down. Un resistore interno da 20K-ohm porta il segnale del PIN a 5V. Questa configurazione fa sì che l’ingresso legga ALTO quando l’interruttore è aperto, e BASSO quando è chiuso su GND.

Il primo Arduino quindi trasmette una serie di caratteri attraverso la porta seriale. Il carattere trasmesso può essere ‘H’ (tasto rilasciato) o ‘L’ (tasto premuto). Ad ogni ciclo viene impostato un delay di 100 millisecondi per evitare di ingolfare la porta di trasmissione

Il sistema ricevente

Passiamo alla seconda scheda.

Il LED built-in sula seconda scheda Arduino è collegato internamente al PIN 13. Vogliamo che rispecchi il segnale inviato dal pulsante attraverso la seriale.

Rispetto alla classica connessione via seriale, osserviamo il metodo Serial.available(), che restituisce un valore booleano a seconda se ci sia o meno un byte in attesa nel buffer di lettura, e l’utilizzo di Serial.read() e Serial.write() al posto dell’onnipresente Serial.print() che usiamo per monitorare la nostra scheda.

Per il resto, è ordinaria amministrazione: se il carattere ricevuto sulla seriale  è ‘H’ viene acceso il LED, se invece è ‘L’ il LED viene spento.

In caso di ricezione di byte spuri o rumore, il LED mantiene lo stato precedente.

Considerazioni finali

Seriale e Arduino

Il progetto è terminato, troverete i sorgenti su GitHub. Abbiamo imparato come utilizzare il classico sistema a due fili + terra per trasmettere le informazioni tra un Arduino e l’altro.

Ma quanto lontano possiamo trasmettere in questo modo? E come possiamo fare se i PIN 0 e 1 sono già utilizzati da un altro apparato?

Ne parleremo diffusamente nei prossimi articoli. Nel frattempo, se l’articolo vi è piaciuto continuate a seguirci qui sul Blog e sugli altri social media. Noi ci risentiremo il prossimo venerdì.

 

Le puntate precedenti:

Join our groups on Telegram…

… and don’t forget our social channels!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.