La comunicazione seriale viene usata in moltissimi dispositivi elettronici che utilizziamo ogni giorno. Rispetto alla comunicazione parallela (4, 8 o 64-bit), la comunicazione seriale è utilizzata spesso nei sistemi embedded a causa del basso costo e della trasmissione efficace nelle lunghe distanze.
Per chi opera con Arduino, sa che l’uso della Serial Monitor è necessario per la lettura di dati inviati serialemente tra Arduino ed il computer con altri dispositivi elettronici, ad esempio l’invio sulla Serial Monitor dei valori di temperatura rilevata da un sensore di temperatura connesso ad Arduino.
La comunicazione seriale è inoltre uno strumento utilissimo per effettuare il debug, ovvero inviare dei messaggi sulla seriale per l’utente al fine di rilevare errori o mettere in evidenza i passi di esecuzione di un programma o lo stato di un sistema.
I dati inviati da Arduino al Computer o viceversa possono essere visualizzati sul monitor del computer (attraverso la finestra della Serial Monitor) o su altri dispositivi come ad esempio un display LCD connesso ad Arduino.
Ho mostrato più volte in precedenti lezioni l’uso dei comandi seriali: Serial.begin(), Serial.print(), Serial.read() e l’utilizzo della Serial Plotter che permette di visualizzare il grafico su piano cartesiano dei dati seriali trasmessi da Arduino.
Sicuramente anche voi, nell’uso costante della Serial Monitor, avrete notato i limiti dello strumento, come esempio l’impossibilità del salvataggio dei dati inviati ad un file di log.
E’ utile quindi considerare l’uso di un terminale alternativo che offra maggiori funzionalità rispetto alla Serial Monitor, come ad esempio visualizzare:
- i caratteri di controllo;
- i dati in formato testo o binario o entrambi;
- salvare i dati rilevati in un file di log.
Tra i molti software disponibili il mio consiglio va a CoolTerM, un terminale user-friendly estremamente utile.
CoolTerM viene distribuito con licenza freeware / donationware sviluppato da Roger Meier ed è disponibile per dispositivi Windows, Mac, Linux.
Come si usa CoolTerM per rilevare dati che provengono da Arduino.
A titolo di esempio sfruttiamo quanto già svolto in passato, visualizzimo su CoolTerM la distanza di un ostacolo rilevato da un sensore ad ultrasuoni.
Prendiamo come riferimento lo sketch che segue, tratto da una mia lezione sull’uso del sensore ad ultrasuoni per un kit robotico, nello stesso post trovate la teoria di funzionamento del sensore HC-SR04.
/* Prof. Maffucci Michele
Utilizzo del sensore ultrasuoni HC-SR04
Misura della distanza di un ostacolo
*/
long durata; // durata dell'impulso
long distanza; // distanza dell'oggetto
int pin_echo = 7; // pin Arduino a cui è collegato il sensore SR04
int pin_trig = 9; // pin Arduino a cui è collegato il sensore SR04
void setup()
{
Serial.begin(9600);
pinMode(pin_trig, OUTPUT);
pinMode(pin_echo, INPUT);
Serial.println("Sensore ad ultrasuini");
}
void loop()
{
Serial.print("Distanza ostacolo: ");
Serial.println(distanzaOstacolo());
delay(100);
}
// rilevazione distanza ostacolo
// misura la distanza dell'ostacolo
long distanzaOstacolo()
{
digitalWrite(pin_trig, LOW);
delayMicroseconds(2);
digitalWrite(pin_trig, HIGH);
delayMicroseconds(10);
digitalWrite(pin_trig, LOW);
durata = pulseIn(pin_echo, HIGH);
distanza = (durata / 2.0) / 29.1;
delay(100);
return distanza;
}
Con Arduino connesso al computer aprire CoolTerM e selezionare “Options”, da quì impostare la porta a cui è connessa la scheda e la velocità di connessione a 9600, una velocità diversa non permetterà una lettura corretta dei dati.
Torna alla schermata principale fate clic su “Connect”, ciò permetterà di avviare la trasmissione dei dati tra Arduino e il computer e i dati inizieranno ad apparire.
Quando desiderate interrompere la trasmissione ovviamente farete clic su “Disconnetti”.
E’ spesso utile analizzare i dati raccolti, in tal caso selezionate: Connection > Capture to Text/Binary File > Start ciò permetterà di salvare i vostri dati in un file TXT che potrà poi essere analizzato ad esempio con un foglio di calcolo.
CoolTerM offre ulteriori funzionalità molto utili:
- se disponibile è possibile connettere più porte seriali concorrenti;
- visualizzazione dei dati in formato semplice o esadecimale (HEX);
- salvataggio e caricamento delle opzioni di connessione;
- gestione dei caratteri speciali;
- scripting;
- eco locale di dati trasmessi / ricevuti;
Buon Making a tutti 🙂