Archivi categoria: i miei allievi

Quick Reference per lo studio – Presentazione della serie

Durante le vacanze estive ritaglio sempre un po’ di tempo per progettare strumenti e attività da proporre nel nuovo anno scolastico. Ho un taccuino cartaceo in cui annoto idee realizzo liste To-Do (soprattutto sui buoni propositi lavorativi) ed organizzo attività future, lo uso principalmente come sistema “svuota cervello“. Quest’anno ho aggiunto una voce specifica: Quick Reference, schede di riferimento sull’organizzazione e semplici tecniche di studio, una lista di strumenti hardware e software, da consegnare agli studenti affinché le inseriscano nei loro quadernoni, un po’ come si fa con i formulari, ma dedicate a metodi e procedure ed altro (Cornell, Pomodoro, mappe, checklist, ecc…).

Le schede sono sintetiche per scelta e personalizzabili da ciascuno: non sostituiscono la spiegazione del docente, vanno presentate e contestualizzate in classe, poi usate come promemoria operativo durante lo studio e le esercitazioni. Ogni Quick Reference offre la traccia essenziale (perché serve, passi rapidi, errori comuni) e lascia spazio per esempi, note e adattamenti: l’obiettivo è trasformarle in un supporto pratico, tascabile e personalizzabile.

Inizierò a pubblicarle i Quick Reference da domani.

Perché questa serie

Da insegnante, formatore e maker vedo ogni giorno tre ostacoli: poco tempo, carico cognitivo alto, livelli di preparazione eterogenei. Le schede brevi, chiare (almeno per me) e stampabili aiutano a:

  • ridurre la fatica decisionale (“da dove inizio?”),
  • rendere visibili processi e passaggi chiave,
  • offrire un linguaggio comune a tutta la classe,
  • favorire inclusione/UDL con formati semplici, prevedibili e modificabili.

Cosa troverete in ogni Quick Reference

  • Perché ti serve: il valore della procedura/metodo.
  • Passi rapidi: sequenza essenziale, subito applicabile.
  • Errori comuni e Suggerimenti.
  • Template Markdown da copiare e personalizzare.
  • PDF A4 della guida operativa per la stampa per l’inserimento nel quaderno.

Nota per il lettore del blog: le schede sono note, sono brevi e intenzionalmente incomplete, servono a guidare l’azione e ad attivare il ripasso; la comprensione profonda nasce dalla dimostrazione del docente e dall’uso deliberato in attività.
Quindi tutti Reference che pubblicherò sono una traccia che serve anche a me per non dimenticare cosa devo spiegare 🙂
Se avete necessità di approfondire con testi posso segnalarli su richiesta, per ora non è mia intenzione essere troppo prolisso con le spiegazioni sul blog, sarò più specifico con i miei studenti in presenza.

Come dovrebbero essere utilizzate

  • Prima: introduzione di 5–10 minuti con dimostrazione guidata.
  • Durante: applicazione in micro-attività o esercizi a coppie.
  • Dopo: inseriamo la scheda nel quaderno, personalizziamo (esempi, colori funzionali, note) e pianifichiamo quando riutilizzarla.
  • A casa: riferimento rapido per compiti e studio (con spazio per adattamenti personali).

Personalizzazione suggerita per gli studenti

  • Aggiungere esempi propri o casi tipici della materia.
  • Evidenziare con un solo colore per categoria (non per estetica).
  • Integrare micro-checklist o tempi indicativi (es. “Pomodoro 25′”).
  • Aggiornare la data e spuntare le revisioni 1-3-7 giorni dove previsto.

Le 7 schede della prima serie

  1. Quick References per lo studio – Memorizzazione (Spaced & Retrieval)
  2. Quick References per lo studio – Metodo Cornell
  3. Quick References per lo studio – Tecnica del Pomodoro
  4. Quick References per lo studio – Mappe concettuali (regole veloci)
  5. Quick References per lo studio – Checklist pre-verifica
  6. Quick References per lo studio – Citazioni rapide (APA/MLA/Harvard)
  7. Quick References per lo studio – Mini-Gantt di progetto

Spero che questo piccolo lavoro possa servire.

Licenza, formato e contributi

Le schede sono rilasciate con CC BY 4.0. Ogni post include PDF A4 e template Markdown. Docenti e studenti possono proporre miglioramenti con commenti o fork della versione sorgente.
Per gli studenti: se ritenete utile questa serie, inseritela nel quadernone e modificatela: diventerà il vostro kit personale di studio rapido.

Buon lavoro 🙂

Lezione 7 – Corso di Elettronica Creativa con Arduino Sensor Kit

Utilizzo del microfono analogico

In questa lezione vedremo come utilizzare il sensore di suono integrato nell’Arduino Sensor Kit, leggeremo il segnale analogico prodotto con l’istruzione analogRead() e ne interpreteremo i valori.
Verrà introdotto, in modo estremamente semplice il concetto di decibel e vedremo come procedere alla calibrazione del microfono in funzione delle attività di sperimentazione che verranno proposte.

Il microfono del Sensor Kit è pre‑cablat​o sulla linea analogica A0 tramite il connettore Grove, quindi non sono necessari ulteriori collegamenti.

Principio di funzionamento

Il modulo Grove Sound Sensor è un ottimo strumento per misurare i rumori intorno a voi. Quando l’aria vibra a causa di un suono, una sottile membrana nel microfono si piega avanti e indietro. Questi movimenti generano una variazione di tensione: più forte è il suono, più grande è la variazione e quindi più alto sarà il numero che andremo a leggere con Arduino mediante l’istruzione analogRead().

Approfondimento tecnico

Per chi ha qualche competenza in più in elettronica aggiungo che all’interno del modulo è presente un microfono a elettrete o microfono electret collegato a un piccolo amplificatore (LM358). L’amplificatore rende il segnale abbastanza grande da poter essere rilevabile da Arduino. Un circuito chiamato rivelatore di inviluppo converte le onde sonore in un valore di tensione continua che rappresenta l’intensità del suono istantaneo.

  • Il segnale in uscita varia da 0 V (silenzio) a 5 V (suono molto forte).
  • Arduino lo misura con il convertitore A/D a 10 bit, producendo numeri da 0 a 1023.
  • Il modulo è sensibile a frequenze fino a ~20 kHz (oltre il limite dell’udito umano).
  • L’amplificatore amplifica il segnale di circa 26 dB, così anche suoni deboli diventano misurabili.
  • Il consumo di corrente è basso, circa 4‑5 mA.

Nelle specifiche del dispositivo parlo di convertitore A/D a 10 bit e decibel (dB) e indico che l’amplificatore amplifica, in modo più semplice, ingrandisce di 26 dB, vediamo cosa vuol dire.

Qualche concetto tecnico spiegato in modo semplice

Cos’è un convertitore A/D a 10 bit

Un convertitore A/D (Analogico → Digitale) è come un traduttore: trasforma la tensione continua che esce dal sensore in numeri che il microcontrollore può elaborare.

10 bit significa che abbiamo 2¹⁰ = 1024 possibili valori, da 0 (0 V) a 1023 (5 V circa). Ogni “scalino” vale quindi circa 5 V / 1023 ≈ 0,005 V (5 millivolt). Più bit, più la scala è fine e la misura precisa.

Che cosa sono i decibel (dB) e perché l’amplificatore “ingrandisce” di 26 dB?

Il decibel (dB) è una grandezza adimensionale ed è un modo logaritmico di confrontare due grandezze: dice “quante volte più grande” è un segnale rispetto a un altro, ma usa il logaritmo per compattare numeri dimensionalmente diversi in una scala più gestibile. Inoltre il nostro orecchio non percepisce l’intensità del suono in modo lineare: se la potenza acustica raddoppia non ci sembra “due volte più forte”, ma solo un po’ più intensa. Questa risposta psicoacustica si descrive bene con una scala logaritmica, perciò usiamo i decibel.

Per le tensioni si usa la formula:

dB = 20 × log10(V2 / V1)

  • 0 dB ⇒ stessa tensione
  • +6 dB ⇒ tensione circa doppia
  • −6 dB ⇒ tensione circa metà

Dire che l’amplificatore aumenta il segnale di 26 dB significa che la tensione in uscita è circa 20× (volte) più grande di quella che entra (perché 20× ≈ 26 dB). Così anche un suono debole crea un segnale abbastanza grande da essere misurato da Arduino.

ATTENZIONE

Questo sensore è pensato per percepire la presenza di suoni e valutarne l’intensità, non per registrare l’audio né per misurazioni professionali in decibel. Per avere dati certificati servono microfoni calibrati e convertitori più veloci.

Esempio di base

/*
  Prof. Maffucci Michele
  24.06.25
  LED reagisce al suono
  Accende il LED sul pin 6 se il valore supera la soglia impostata.
*/

const int pinSuono   = A2;    // pin a cui è connesso il sensore
const int pinLED     = 6;     // LED del Sensor Kik
const int sogliaRumore = 200; // valore da calibrare in base all'ambiente

void setup() {
  pinMode(pinLED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int livello = analogRead(pinSuono);
  bool rumoreForte;
  // per approfondimenti sui tipi di dati:
  // https://www.maffucci.it/2020/11/15/arduino-tipi-di-dati-ripasso/

if (livello > sogliaRumore) {
    rumoreForte = true;
  } else {
    rumoreForte = false;
  }

if (rumoreForte) {
    digitalWrite(pinLED, HIGH);  // se supera la soglia il LED viene acceso
  } else {
    digitalWrite(pinLED, LOW);   // se non supera la soglia il led viene mantenuto apento
  }

Serial.print("Livello: ");
  Serial.print(livello);
  Serial.print("  Rumore forte? ");
  Serial.println(rumoreForte ? "SI" : "NO");

delay(500);
}

Continua a leggere→

Lezione 6 – Corso di Elettronica Creativa con Arduino Sensor Kit

Sensore di luminosità

Inizio questa lezione con un’informazione che va a correggere quanto scritto sul sito Arduino in riferimento al Grove Light Sensor in cui erroneamente viene indicato il dispositivo come fotoresistenza, in realtà si tratta di un fototransistor e ciò, soprattutto per i neofiti può creare qualche problema di comprensione, soprattutto perché lo sketch presentato non fornisce esattamente quanto indicato.

Fotoresistenza o fototransistor?

  • Versione 1.0 del Grove-Light Sensor – usava una classica CdS LDR GL5528, cioè una vera fotoresistenza.
  • Versione 1.1 / 1.2 (quella montata sullo Shield dell’Arduino Sensor Kit) – per ragioni RoHS (il cadmio delle CdS è vietato) Seeed ha sostituito l’LDR con un LS06-S: si tratta di un sensore a fototransistor lineare (tecnicamente una fotodiodo-transistor) che “mima” la vecchia fotoresistenza ma è più rapido e lineare.

Il sito di Arduino non ha aggiornato la terminologia e continua a chiamarlo “photo-resistor”.

Ora come possiamo fare per non creare problemi a chi inizia?

Innanzi tutto se volete utilizzare una fotoresistenza vi rimando alle mie slide: Alfabeto di Arduino – Lezione 3, ma attenzione in questo caso dovrete usare una breadboard e realizzare un circuito con un resistore da 10Kohm e una fotoresistenza, in questo modo usando lo sketch presente sul sito Arduino o quelli indicati nelle mie slide tutto funzionerà ed avrete valori che variano tra 0 e circa 900, coll’esempio sul sito Arduino avrete un valore massimo più basso.

Dal punto di vista teorico cosa succede (usando una fotoresistenza):

La fotoresistenza (o LDR, Light Dependent Resistor) per rilevare l’intensità della luce:

  • la resistenza della fotoresistenza diminuisce quando l’intensità luminosa aumenta;
  • la resistenza della fotoresistenza aumenta quando l’intensità luminosa diminuisce.

L’ADC dell’Arduino la converte in un numero intero da 0 (buio) a 1023 (molta luce) quindi la lettura avviene tramite l’istruzione analogRead() per questo kit collegheremo direttamente il modulo al pin A3 e quindi nel codice scriveremo: analogRead(A3).

// Prof. Maffucci Michele
// Uso del sensore di luminosità
// 27.05.2025

int sensore_luce = A3;   // pin del sensore di luminosità

void setup() {
  analogReference(INTERNAL);   // 1,1 V; attivare PRIMA di qualsiasi analogRead
  delay(3);                    // attesa minima per la stabilizzazione della reference
  Serial.begin(9600);          // avvia la comunicazione seriale
}

void loop() {
  int luce_grezza = analogRead(sensore_luce);      // legge il valore grezzo dal pin A3
  int luce = map(luce_grezza, 0, 1023, 0, 100);    // converte 0–1023 in 0–100 (percentuale)

Serial.print("Livello di luce: ");
  Serial.println(luce);  // stampa il valore di luce sul Monitor Seriale

delay(1000);           // attende 1 secondo prima della prossima lettura
}

Le cose sono simili con il Grove-Light Sensor sull’Arduino Sensor Kit, ma avrete, come dicevo, valori massimi più bassi, che raggiungo circa i 750 con la torcia dello smartphone direttamente puntata sul fototransistor. Dal punto di vista funzionale nulla cambia ma è importante aver ben presente che siamo lavorando con componenti elettronici diversi che hanno comportamenti simili.

Con lo sketch precedente otterremo sulla serial monitor questi valori:

Il fatto che il valore massimo si fermi attorno a 750 è in realtà perfettamente coerente con l’elettronica del modulo.

Quindi per ora, per chi inizia potete far finta che il componente sull’Arduino Sensor Kit è una fotoresistenza e se desiderate potete fermarvi a questo punto.

Continua a leggere→

Nuova sezione dedicata a Processing!

Ho appena pubblicato una pagina che raccoglie tutte le mie lezioni, esercizi e materiali su Processing in un unico posto comodo da consultare.

Trovate il link diretto nel banner “Processing”, ben visibile nella colonna destra del sito: cliccate e accedete alla raccolta completa, in continuo aggiornamento.

Se state seguendo il corso o cercate ispirazione per le vostre attività in classe, date uno sguardo e fatemi sapere cosa ne pensate ed ovviamente se avete suggerimenti nella realizzazione di lezioni non esitate a segnalarmeli.

Grazie

Lezione 5 – Corso di Elettronica Creativa con Arduino Sensor Kit

Il Buzzer

Quando progettiamo un impianto di automazione abbiamo quasi sempre bisogno di avvisare l’utente di uno stato o di un’anomalia. Oltre alle classiche spie luminose, un modo immediato per “farsi sentire” è impiegare un buzzer, noto colloquialmente come cicalino. Questo piccolo attuatore trasforma un segnale elettrico in un impulso sonoro che può variare da un semplice beep continuo a brevi toni di diversa frequenza.

Tipologie principali di buzzer

Attivo
Contiene un oscillatore interno che genera automaticamente la frequenza fissa non appena viene alimentato.
Con Arduino basta portare il pin di alimentazione a livello HIGH/LOW per abilitare o silenziare il suono.

Passivo
Non possiede oscillatore: necessita di un’onda quadra esterna per farlo vibrare.
Arduino può pilotarlo con PWM (analogWrite) o con la funzione tone() per scegliere la frequenza desiderata.

Tecnologie costruttive

I buzzer – siano essi attivi o passivi – possono realizzarsi con due differenti principi fisici:

  • Magnetici
    una bobina varia il campo magnetico e fa oscillare una sottile membrana metallica.
  • Piezoelettrici
    un disco di materiale piezo si deforma quando riceve tensione, generando la vibrazione acustica.

La scelta fra le due tecnologie dipende principalmente da:

  1. Segnale di pilotaggio disponibile (continua, PWM, ampiezza)
  2. Pressione sonora richiesta (volume)
  3. Spazio e forma concessi dal progetto

Come funziona un buzzer attivo

All’interno è presente un piccolo circuito oscillatore che, alimentato in continua, fa variare il campo magnetico di una bobina. La bobina è rigidamente accoppiata a una membrana, la quale vibra alla frequenza impostata dal circuito e produce un suono costante. In pratica: lo accendiamo – suona; lo spegniamo – tace.

Dati tecnici

  • Tensione nominale: 6V DC
  • Tensione di esercizio: 4-8V DC
  • Corrente nominale: < 30mA
  • Tipo di suono: segnale acustico continuo
  • Frequenza di risonanza: ~2300 Hz

Come funziona un buzzer passivo

Il buzzer passivo è sprovvisto di oscillatore e si comporta come un piccolo altoparlante: emette il tono dell’esatta frequenza del segnale che riceve. Con Arduino possiamo quindi:

  • generare una frequenza fissa con tone(pin, freq);
  • modulare il duty-cycle tramite analogWrite() per variare il volume;
  • creare melodie cambiando velocemente frequenza e durata.

Dati tecnici

  • Tensione nominale: 5V DC
  • Tensione di esercizio: 4-8V DC
  • Corrente nominale massima: ≤ 32 mA
  • Min. Uscita audio a 10 cm: 85 dB
  • Temperatura di esercizio: da 20°C a 45°C

Poiché vogliamo utilizzare il buzzer dell’Arduino Sensor Kit a questo punto possiamo chiederci:

“ma di che tipo è il buzzer di questo kit?”

E’ un buzzer di tipo passivo.

Nelle spiegazioni abbiamo parlato di PWM, di seguito alcuni dettagli, ma se volete approfondire consultate le mie slide: Alfabeto Arduino – Lezione 2 e l’approfondimento su questo sito: Arduino – Approfondimenti sulla modulazione di larghezza di impulso (PWM).

Per uno studio ancora più approfondito: Secrets of Arduino PWM.

Che cos’è il PWM

La modulazione di larghezza d’impulso, o PWM (Pulse Width Modulation), è una tecnica che permette di ottenere effetti analogici usando mezzi digitali. Il controllo digitale genera un’onda quadra, un segnale che passa continuamente da acceso (ON) a spento (OFF). Variando la frazione di tempo in cui il segnale rimane acceso (alto) rispetto a quella in cui rimane spento (basso), è possibile simulare tensioni intermedie tra lo 0 V (spento) e i 5 V (acceso al 100 %). Il periodo in cui il segnale resta acceso si chiama larghezza dell’impulso. Modificando (ovvero modulando) questa larghezza si ottengono valori analogici diversi. Se la commutazione ON/OFF avviene abbastanza velocemente, il segnale risulta percepito come una tensione “media” continua compresa tra 0 V e 5 V.
Questo segnale PWM può dunque essere usato per controllare con facilità un buzzer passivo.
Per generare segnali PWM con Arduino si utilizza la funzione analogWrite(), mentre digitalWrite() produce solo segnali in corrente continua (DC).
Sulla tua scheda ci sono sei pin digitali contrassegnati dal simbolo “~” (tilde), che indica la capacità di gestire un segnale PWM: 3, 5, 6, 9, 10, 11. Questi sono chiamati pin PWM.

Collegamenti

Come abbiamo detto precedentemente Il buzzer del kit è passivo: non produce autonomamente il tono, ma vibra quando riceve un’onda quadra. Con analogWrite() inviate un’onda PWM; variando il duty-cycle (0-255) variate il volume.

Esempio 1:  emissione di un beep

/* Prof. Maffucci Michele
   beep con il buzzer
   14.05.25
*/

const int BuzzerPin = 5;       // D5 ha anche il simbolo ~ = PWM

void setup() {
  pinMode(BuzzerPin, OUTPUT);  // imposta il pin come uscita
}

void loop() {
  analogWrite(BuzzerPin, 128); // 50 % di duty-cycle ≈ volume medio
  delay(1000);                 // suona per 1 s
  analogWrite(BuzzerPin, 0);   // silenzio
  delay(1000);                 // pausa di 1 s
}

Funzionamento del codice

  • pinMode()
    imposta il pin in uscita, così può fornire tensione
  • analogWrite(pin, val)
    genera un’onda quadra a ~490 Hz sul pin; val è il duty-cycle (0 = 0 %, 255 = 100 %)
  • delay(ms)
    pausa del programma – qui determina per quanto tempo il buzzer resta attivo/inattivo

Continua a leggere→