CoolTerm – Alternative alla Serial Monitor di Arduino

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 🙂

I miei corsi per Tecnica della Scuola: Didattica attiva con Makey Makey


Esistono numerose metodologie che in modi e tempi di esecuzione diversi permettono al docente di fornire agli studenti le competenze per imparare a sviluppare le proprie potenzialità in assoluta autonomia.

In molte delle attività laboratoriali una delle metodologie più efficaci è quella dell’apprendimento per scoperte guidate, metodologia che si fonda sul costruzionismo di Papert e Piaget. Proprio sul fare e costruire oggetti che interagiscono fisicamente con il mondo reale si basano le numerose schede elettroniche che vengono sempre più utilizzate nella scuola italiana, schede di facile utilizzo, in grado di tradurre una progetto logico in qualcosa di fisico e interattivo e che semplificano la realizzazione di attività di apprendimento per scoperte guidate.

Come spesso accade, però, l’aspetto tecnologico spaventa perché si ritiene complesso o perché si pensa di non avere le giuste competenze per inserire questi strumenti in un’attività di sperimentazione, soprattutto quando ci si rivolge ad allievi della primaria o della secondaria di primo grado.

L’aspetto elettronico ed informatico può essere ridotto moltissimo se si usano dispositivi specifici e tra questi vi è il Makey Makey che si distingue per la possibilità di essere utilizzato in qualsiasi disciplina consentendo la realizzazione di sperimentazioni fortemente interattive. Se quindi si pensa a una didattica del fare, Makey Makey è tra gli strumenti più apprezzati ed utilizzati, offrirà all’allievo un ausilio che gli permetterà di generare in maniera creativa apprendimento e sviluppo di capacità nel risolvere problemi complessi in modo efficiente.

Ma cos’è Makey Makey

Makey Makey è una scheda elettronica che permette di far dialogare il computer con qualsiasi oggetto conduttivo o materiale, e questo fa sì che l’oggetto conduttivo assuma nuove funzioni e significati. Ad esempio si potrà realizzare uno strumento musicale reale utilizzando frutta e verdura come oggetti che attiveranno un suono.

Se la scheda viene opportunamente connessa a una foglia di una pianta il tocco sulla foglia permetterà di attivare una luce o un motorino elettrico o qualsiasi altra azione su un dispositivo elettrico. Makey Makey quindi è in grado di trasformare oggetti di uso quotidiano in sistemi di input per il computer, in quanto emula i tasti della tastiera del computer e per questa sua caratteristica può essere utilizzato efficacemente con Scratch 3.

Il corso

Su questi argomenti il corso che svolgerò: Didattica attiva con Makey Makey nelle seguenti date:

  • Mercoledì 19 gennaio 2022 – Dalle 17.00 alle 19.00
  • Venerdì 21 gennaio 2022 – Dalle 17.00 alle 19.00
  • Venerdì 28 gennaio 2022 – Dalle 17.00 alle 19.00
  • Lunedì 31 gennaio 2022 – Dalle 17.00 alle 19.00

Per maggiori informazioni sui contenuti del corso e le modalità di iscrizione seguire il link allegato

… e restate sintonizzati sui miei social per vedere l’anteprima delle attività che verranno sviluppate durante il corso 🙂

EduRobot Frisbee – Come realizzare la versione in cartone ed usarla a scuola

E’ possibile costruirne un kit di robotico a basso costo con materiali di recupero che abbia valenza didattica?

Come sapete nel mio caso la risposta è sì 🙂

Ho più volte proposto su queste pagine soluzioni di kit robotici che potessero essere sviluppate da colleghi insegnanti che, pur non avendo competenze elevate di informatica ed elettronica, fossero in grado di realizzare con semplicità, attività di robotica con i loro studenti. Recentemente ho svolto due edizioni del corso in Webinar: “Creare un kit robotico a basso costo”, dove ho sviluppato soluzioni con diverse tecnologie. Nell’ultima edizione ho presentato EduRobot Frisbee costruito con materiali diversi per far fronte ad ogni disponibilità economica della scuola. In questi giorni ne sto espandendo le funzionalità e per chi desiderasse tutti i progetti ed una proposta didattica è possibile seguire il progetto su Patreon.

P.S. Per i colleghi che hanno in passato seguito seguito il mio corso in Webinar è sufficiente che mi contattino direttamente via mail per avere tutti gli aggiornamenti del kit.

Grazie per tutti coloro che vorranno sostenere il mio lavoro.

Buon Making a tutti 🙂

Esercitazioni di base di Arduino – visualizzazione luminosità LED mediante una barra di avanzamento su display 16×2


Continuo nell’aggiornamento delle esercitazioni di base per gli studenti di 3′ dell’ITIS (Elettronica ed Automazione) e per gli utenti che iniziano con Arduino.
Utilizzeremo un display LCD 16×2 di tipo I2C su cui visualizzeremo mediante una barra di avanzamento, la quantità di luminosità impostata per il LED, mediante un potenziometro.

Per la gestione di un display LCD di tipo I2C rimando alla mia lezione: Utilizzo dell’LCD 16×2 Hitachi HD44780 1602 con modulo I2C PCF8574T.

Per la creazione di caratteri personalizzati rimando alla mia lezione: Disegnare caratteri personalizzati con Arduino per un LCD 16×2.

Lista componenti

  • N.1 Arduino UNO
  • N.1 Breadboard
  • N.1 LCD 16×2 I2C
  • N.1 Potenziometri da 10 KOhm
  • N.1 LED da 5 mm
  • N.1 Resistore da 220 Ohm
  • jumper

Schema di collegamento

Scketch

Di seguito viene indicato il codice i base, all’interno i commenti che ne dettagliano il funzionamento di ogni parte:

/*
   Prof. Maffucci Michele
   https://www.maffucci.it
   Ver.1 - 27.12.21
   Controllo di luminosità LED con
   visualizzazione intensità mediante una
   barra di avanzamento su display 16x2
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

byte pinPot = A0;           // pin analogico 0 a cui connettere il potenziometro per controllare la luminosità
byte pinLed = 3;            // pin PWM a cui connettere il LED
int  analogVal = 0;         // variabile in cui memorizzare il valore impostato dal potenziometro
int  luminosita = 0;        // variabile in cui memorizzare la luminosità
byte barraAvanzamento = 0;  // indice barra avanzamento

// Per maggiori informazioni sulla realizzazione di caratteri speciali:
// https://www.maffucci.it/2020/01/18/disegnare-caratteri-personalizzati-con-arduino-per-un-lcd-16x2/

// Carattere personalizzato per disegnare la barraAvanzamento di avanzamento
byte iconaBarra[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

// inizializzazione della libreria in cui è descritta la modalità di utilizzo dei pin
// impostazione dell'indirizzo dell'LCD 0x27 di 16 caratteri e 2 linee
LiquidCrystal_I2C lcd(0x27, 16, 2);
//-----------------------------

void setup()
{
  lcd.begin();      // inizializzazione dell'LCD
  lcd.backlight();  // attivazione della retroilluminazione

  // Inpostazione ad OUTPUT del pin a cui connettiamo il LED
  pinMode(pinLed, OUTPUT);

  // Cancella il display
  lcd.clear();

  // Stampa il messaggio sulla prima riga del display
  lcd.print("Luminosita' LED");

  //Creazione del carattere per la barra di avanzamento
  lcd.createChar(0, iconaBarra);
}

// Per maggiori informazioni sull'uso del display 16x2 I2C:
// https://www.maffucci.it/2019/01/25/utilizzo-delllcd-16x2-hitachi-hd44780-1602-con-modulo-i2c-pcf8574t/
//-----------------------------

void loop() {
  // Cancella il display
  lcd.clear();

  // Stampa il messsaggio sulla prima riga
  lcd.print("Luminosita' LED");

  //Posiziona il cursore nella seconda riga, prima colonna
  lcd.setCursor(0,1);

  // Lettura del valore impostato dal potenziometro
  analogVal = analogRead(pinPot);

  // Conversione del valore analogico impostato con il potenziometro
  // in Duty Cicle per impostare la luminosità del LED
  luminosita=map(analogVal, 0, 1024, 0, 255);

  // Impostazione della luminosità del LED
  analogWrite(pinLed, luminosita);

  // Conversione della luminosità in quantità di caratteri della barra da stampare
  barraAvanzamento=map(luminosita, 0, 255, 0, 15);

  // Stampa la barra di avanzamento
  for (byte i = 0; i < barraAvanzamento; i++)
  {
    lcd.setCursor(i, 1);
    lcd.write(byte(0));
  }
  // leggero ritardo di 500 ms per visualizzare la barra
  delay(500);
}

Proposta esercizi

Esercizio 1
Nell’esempio proposto viene utilizzato un delay() finale per permettere la visualizzazione dei caratteri sul display. Sostituire il delay() ed utilizzare l’istruzione millis() per valutare il tempo trascorso e controllare la stampa dei caratteri sul display.

Esercizio 2
Modificare il programma precedente raddoppiando il numero di caratteri che rappresenta la barra di avanzamento.

Esercizio 3
Modificare l’esercizio proposto variando la barra di avanzamento in funzione dell’approssimarsi al valore massimo o minimo della luminosità.

Esercizio 4
Modificare l’esercizio proposte inserendo un buzzer che emette un suono la cui frequenza varia in funzione dell’intensità luminosa del LED.

Buon Making a tutti 🙂

Buone Feste

Un sincero augurio a tutti coloro che mi conoscono nel mondo virtuale e nel mondo reale. Con la speranza che queste feste siano per voi piene di serenità e tante attività creativi elettroniche, auguro a tutti voi Buone Feste 🙂