Archivi categoria: elettronica

Corso IoT con ESP32 – corso base – lezioni operative per docenti

10 lezioni pratiche per partire da zero e arrivare al controllo di dispositivi reali

Quando si parla di IoT a scuola si rischia spesso di cadere in due estremi: da una parte attività troppo teoriche, che restano astratte e poco coinvolgenti; dall’altra una successione di mini-progetti interessanti ma scollegati tra loro, che non aiutano davvero gli studenti a costruire competenze solide.

Per questo ho deciso di raccogliere in questa pagina un percorso completo in 10 lezioni dedicato all’uso della ESP32 con MicroPython, pensato in modo particolare per docenti e per chi parte con competenze iniziali ancora fragili.

L’idea di fondo è molto semplice: costruire un corso che sia graduale, pratico e coerente, in cui ogni attività prepari la successiva. Si parte dall’ambiente di sviluppo e dai primi GPIO, si passa attraverso sensori, ADC, PWM, Wi-Fi, pagine web locali e Bluetooth BLE, per arrivare infine al controllo della velocità di un motore DC da browser.

In realtà durante la scrittura di tutte queste lezioni mi sono accorto che il corso stava diventando un libro molto pratico, pertanto se desiderate leggere in anteprima i capitoli del libro potete farlo

iscrivendovi all’area Premium del mio sito
(in abbonamento mensile o annuale)

L’iscrizione permetterà di leggere ed utilizzare la documentazione che utilizzo per i miei corsi in presenza e online destinati a docenti, studenti e appassionati di elettronica e tecnologie. Per sapere come è struttura la guida docente, le schede operative di laboratorio, valore didattico dell’opera vi invito a leggere il post di presentazione su Scholaria.

La pubblicazione avverrà periodicamente tendenzialmente un capitolo ogni 10 giorni circa.

Ho scelto di usare ESP32 perché è una piattaforma estremamente versatile e, soprattutto in un contesto scolastico, permette di lavorare con:

  • ingressi e uscite digitali;
  • letture analogiche;
  • PWM;
  • Wi-Fi;
  • Bluetooth BLE;

tutto con una sola scheda e senza cambiare continuamente ambiente di lavoro.

Ho scelto invece MicroPython perché consente di introdurre la programmazione hardware con una sintassi più accessibile, pur mantenendo un buon livello di rigore tecnico.

In questo post trovate lo sviluppo dell’intero percorso in una forma ordinata, così da poterlo usare come indice generale del corso, come pagina di riferimento di studio oppure come hub centrale del blog a cui collegare le singole lezioni.

A chi è rivolto il corso

Questo percorso è pensato soprattutto per:

  • insegnanti della secondaria di primo e secondo grado;
  • classi che stanno iniziando a lavorare con microcontrollori e IoT;
  • studenti con competenze iniziali basse o intermedie;
  • docenti che desiderano una sequenza di attività già organizzata in modo progressivo.

Ogni lezione è stata costruita con una attenzione particolare a quattro aspetti:

  • linguaggio semplice ma corretto;
  • forte connessione tra codice e cablaggio;
  • verifica immediata in laboratorio;
  • crescita graduale della complessità.

Come è costruito il percorso

Il corso segue una logica molto precisa.

All’inizio si lavora sui fondamentali:

  • ambiente di sviluppo;
  • primo programma;
  • GPIO;
  • LED;
  • lettura di segnali analogici.

Successivamente si passa ai sensori e alla logica di controllo:

  • potenziometro;
  • LDR;
  • DHT11;
  • soglia di intervento;
  • PWM.

Dopo questa base, il percorso entra nella parte più chiaramente “IoT”:

  • ESP32 come Access Point;
  • pagina web locale;
  • dashboard;
  • controllo e monitoraggio via browser;
  • collegamento BLE con smartphone.

Infine si chiude con un’attività più completa e più vicina a un sistema reale:

  • controllo della velocità di un motore DC con driver L298N e slider web.

In questo modo ogni nuova lezione aggiunge un solo gradino tecnico alla volta, evitando di sovraccaricare gli studenti con troppe novità contemporaneamente.

Indice completo delle 10 lezioni

Lezione 1 – Thonny, ESP32 e MicroPython: primi passi nell’ambiente di sviluppo
In questa prima lezione si impara a installare e usare Thonny, a collegare correttamente la ESP32 al computer, a selezionare l’interprete MicroPython e a distinguere tra shell, script e file salvati sulla scheda. È la base necessaria per tutto il corso.

  • Argomenti principali: Thonny, interpreter, REPL, main.py, primi test.
  • Obiettivo: rendere gli studenti autonomi nei passaggi iniziali di lavoro con ESP32 e MicroPython.

Lezione 2 – GPIO digitali con ESP32: accendere e far lampeggiare un LED
La prima vera attività hardware del percorso. Si introduce il concetto di GPIO come uscita digitale e si realizza il classico circuito con LED e resistenza, pilotato da MicroPython.

  • Argomenti principali: Pin.OUT, on(), off(), value(), tempi di attesa.
  • Obiettivo: capire come un programma può produrre un effetto fisico reale.

Lezione 3 – Potenziometro, ADC e PWM: regolare la luminosità di un LED
Qui gli studenti scoprono come leggere una grandezza analogica con l’ADC e come usare il PWM per regolare la luminosità di un LED in modo continuo.

  • Argomenti principali: potenziometro, ADC, read_u16(), PWM, duty_u16().
  • Obiettivo: collegare ingresso analogico e uscita PWM in un primo sistema di controllo continuo.

Lezione 4 – LDR e soglia di intervento: luce notturna automatica con ESP32
In questa attività la ESP32 legge il livello di luce ambientale tramite una LDR e accende automaticamente un LED quando si supera una soglia di buio.

  • Argomenti principali: partitore resistivo, LDR, soglia, if/else, automazione.
  • Obiettivo: introdurre la logica decisionale basata su misura e confronto.

Lezione 5 – DHT11 con ESP32: misurare temperatura e umidità in locale
Si introduce il sensore DHT11, leggendo temperatura e umidità direttamente nella shell di Thonny, senza ancora coinvolgere la rete.

  • Argomenti principali: modulo dht, measure(), temperature(), humidity().
  • Obiettivo: comprendere il funzionamento di un sensore ambientale digitale e visualizzarne correttamente i dati.

Lezione 6 – ESP32 come Access Point: creare una rete Wi-Fi locale senza Internet
La ESP32 viene trasformata in un piccolo Access Point Wi-Fi, capace di creare una rete locale a cui collegare smartphone o computer, senza bisogno di router o connessione Internet.

  • Argomenti principali: network.WLAN, AP_IF, active(True), ifconfig().
  • Obiettivo: preparare la base per tutte le lezioni successive con interfaccia web locale.

Lezione 7 – DHT11 su pagina web locale: primo web server Wi-Fi con ESP32
Qui si uniscono sensore e rete: la ESP32 legge temperatura e umidità dal DHT11 e le pubblica in una pagina web locale accessibile dal browser.

  • Argomenti principali: DHT11, Access Point, socket, HTML, server HTTP.
  • Obiettivo: costruire un primo vero progetto IoT locale con sensore e pagina web.

Lezione 8 – Pulsanti reali e dashboard: contatore con interfaccia web
Tre pulsanti fisici collegati alla ESP32 permettono di aumentare, diminuire o azzerare un contatore, mentre una dashboard web mostra il valore aggiornato quasi in tempo reale.

  • Argomenti principali: Pin.IN, Pin.PULL_UP, contatore, dashboard, aggiornamento dinamico.
  • Obiettivo: collegare eventi fisici reali a una interfaccia web di monitoraggio.

Lezione 9 – Controllo wireless via Bluetooth BLE con ESP32 e MicroPython
In questa lezione si cambia tecnologia e si introduce il Bluetooth Low Energy. La ESP32 si comporta come periferica BLE e riceve comandi dallo smartphone per pilotare un LED.

  • Argomenti principali: BLE, peripheral, central, advertising, servizi e caratteristiche GATT.
  • Obiettivo: mostrare una seconda modalità di comunicazione wireless, diversa dal Wi-Fi ma molto utile nei dispositivi IoT.

Lezione 10 – Controllo velocità motore DC da browser con ESP32, PWM e driver L298N
La lezione conclusiva del percorso: il browser controlla la velocità di un motore DC tramite slider web, mentre la ESP32 genera il PWM e il driver L298N gestisce la parte di potenza.

  • Argomenti principali: PWM, motore DC, L298N, slider HTML, controllo velocità.
  • Obiettivo: integrare interfaccia web, controllo PWM e attuazione reale in un progetto finale completo.

Materiali necessari per il corso

Di seguito trovi una lista generale dei materiali utili per seguire l’intero percorso.

Hardware di base

  • 1 scheda ESP32
  • cavo USB dati
  • breadboard
  • jumper maschio-maschio

Componenti elettronici

  • LED
  • resistenze da 220 Ω
  • potenziometro da 10 kΩ
  • LDR
  • resistenza da 10 kΩ per partitore
  • sensore DHT11
  • 3 pulsanti
  • motore DC
  • modulo L298N

Dispositivi esterni

  • computer con Thonny
  • smartphone, tablet o PC con Wi-Fi
  • smartphone con app BLE generica
  • alimentazione esterna per il motore DC

Per le prime lezioni bastano davvero pochi componenti:
ESP32, breadboard, LED, resistenze, potenziometro e LDR.
I moduli più “strutturati”, come DHT11, BLE e L298N, entrano solo nella parte centrale e finale del corso.

Come consiglio di usare queste lezioni

Questo percorso può essere usato in diversi modi.

Come corso lineare
È la modalità che consiglio di più. Le lezioni sono state pensate per essere affrontate in ordine, perché ogni tappa prepara la successiva.

Come raccolta di attività laboratoriali
Un docente può anche scegliere singole lezioni da usare in momenti diversi dell’anno, ma conviene comunque tenere presente la progressione logica del percorso.

Come riferimento per studio individuale
Uno studente motivato può usare il corso anche da solo, purché proceda con calma e senza saltare i passaggi fondamentali.

Un possibile uso in classe

Una scansione semplice potrebbe essere questa:

  • lezioni 1–2: familiarizzazione con ambiente e GPIO
  • lezioni 3–5: sensori, ADC, PWM e acquisizione dati
  • lezioni 6–8: rete locale e dashboard web
  • lezione 9: controllo BLE
  • lezione 10: progetto finale con motore

Questa organizzazione consente di trasformare il percorso anche in un piccolo modulo laboratoriale di più settimane.

Quando si costruisce un corso IoT per studenti dell’ITIS, la vera difficoltà non è trovare idee interessanti: quelle non mancano. La difficoltà vera è creare un percorso che abbia una progressione chiara, che non spaventi chi parte da zero e che mantenga sempre un forte legame tra teoria e pratica.

Questo corso nasce proprio con questa intenzione: portare gli studenti a capire che dietro la parola “IoT” non ci sono formule magiche, ma una serie di competenze concrete che si costruiscono passo dopo passo:

  • saper programmare una scheda;
  • saper leggere un sensore;
  • saper pilotare un’uscita;
  • saper comunicare in rete;
  • saper controllare un dispositivo reale.

Ed è in questa continuità che, secondo me, sta il vero valore di un buon percorso laboratoriale.

Sviluppi possibili

Chi conclude questo percorso può poi proseguire, ad esempio, verso:

  • logging dati;
  • dashboard più evolute;
  • controllo di relè;
  • servo e motori con inversione di direzione;
  • sensori ambientali più accurati;
  • integrazione con piattaforme cloud;
  • piccoli progetti di robotica o automazione.

Se siete interessati a sostenere questo corso/libro vi invito ad iscrivervi all’area Premium.

Buon Making a tutti 🙂

Capire prima di costruire – 03: che cosa significa GND in un circuito?

Una sigla che incontriamo continuamente nei circuiti, ma che vale la pena capire bene prima di collegare fili e componenti.

Chi osserva uno schema elettronico, oppure usa una scheda come Arduino, ESP32 o micro:bit, incontra quasi subito una sigla: GND.

All’inizio la si riconosce per abitudine. Si collega il filo al pin GND, si chiude il circuito, magari tutto funziona, e si passa oltre. Però, se vogliamo davvero capire che cosa stiamo costruendo, non basta sapere “dove va messo il filo”. Bisogna capire che cosa rappresenta quel punto del circuito.

GND è una di quelle parole piccole che, in laboratorio, fanno una grande differenza. Capirla aiuta a leggere meglio gli schemi, a usare correttamente il multimetro e a evitare molti errori pratici, soprattutto quando si collegano sensori, moduli esterni e microcontrollori.

Cosa significa GND

GND è l’abbreviazione di ground, nei contesti didattici viene spesso tradotto con massa oppure indicato come riferimento a 0 volt.

Quando diciamo che un pin è a 5 V, stiamo sottintendendo qualcosa di importante: quel pin è a 5 V rispetto a GND. La tensione, infatti, non si misura mai “da sola”, ma sempre come differenza tra due punti.

Massa e terra non sono la stessa cosa (anche se a volte coincidono)

Molto spesso si fa l’errore di considerare GND e massa la stessa cosa, non è corretto: GND è il riferimento a 0 volt, mentre massa è il potenziale di riferimento del nostro circuito che può assumere anche 0 volt, tipicamente nella maggior parte delle vostre sperimentazioni vi troverete nella condizione di avere come livello di riferimento lo 0 Volt pertanto massa e terra coincidono.

  • Massa: è il potenziale comune di riferimento del circuito, spesso ha valore di 0 V. È il “piano terra” della nostra analogia: il valore di riferimento comune rispetto a cui misuriamo e capiamo i segnali elettrici.
  • GND (0 V di riferimento) o Ground o Terra: è il potenziale comune di riferimento del circuito ed ha come valore 0 V, anche in questo caso possiamo dire che è il “piano terra” della nostra analogia: lo zero rispetto a cui misuriamo e capiamo i segnali elettrici.
  • Terra / PE (Protective Earth – protezione) negli impianti civili e industriali: è il nome con cui identifichiamo il collegamento all’impianto di terra, usato soprattutto per sicurezza elettrica (scariche, guasti, schermature).

In molti dispositivi alimentati da rete, la massa del circuito può essere collegata alla terra, e in quel caso massa e terra finiscono per trovarsi allo stesso potenziale e spesso si parla di “0 V” ed ecco perché molto spesso massa a terra (GND) vengono utilizzati per esprimere lo stesso concetto, però mi raccomando ricordate la differenza!

GND non è un posto in cui la corrente sparisce

Qui conviene fermarsi un momento, perché c’è un equivoco molto diffuso.

A volte si dice che la corrente “va a massa”, come se arrivasse in GND e scomparisse. In realtà non funziona così.

In un circuito chiuso la corrente deve compiere un percorso completo: parte dal generatore, attraversa i componenti e ritorna al generatore. Se il percorso non è chiuso, la corrente non può circolare in modo corretto.

GND, quindi, non è un buco in cui l’elettricità finisce, è un nodo del circuito: un punto comune che usiamo come riferimento e, in molti casi, anche come percorso di ritorno della corrente.
Continua a leggere

Capire prima di costruire – 02: perché un LED ha bisogno di una resistenza in serie?

Una delle prime regole che si imparano in laboratorio, ma che vale la pena capire davvero.

Quando si comincia a lavorare con i circuiti elettronici, prima o poi arriva sempre questa raccomandazione:

“Non collegare mai un LED direttamente all’alimentazione senza una resistenza.”

È una regola giusta, e in laboratorio va presa sul serio. Però, se vogliamo imparare davvero l’elettronica, non basta ripeterla a memoria: dobbiamo capire che cosa succede nel circuito e perché quella resistenza è così importante.

Prima di tutto: che cos’è un LED

Un LED, cioè Light Emitting Diode, è un diodo che emette luce quando viene attraversato da corrente nel verso corretto.

La cosa importante da ricordare è questa:

un LED non si comporta come una normale resistenza. Non è lui a “scegliere” quanta corrente far passare in modo sicuro. Se lo colleghiamo male, può danneggiarsi molto in fretta, anche se per un istante sembra funzionare.

Il punto chiave: il LED non limita da solo la corrente

Questo è il concetto centrale.

Molti studenti all’inizio dei loro studi di elettronica pensano: “Se gli do la tensione giusta, il LED si accende e basta”. In parte è vero: il LED si accende quando è polarizzato correttamente. Il problema, però, è la corrente.

Senza un componente che la tenga sotto controllo, il LED può lasciar passare più corrente di quella che riesce a sopportare. Ed è proprio qui che entra in gioco la resistenza.

La resistenza serve a limitare la corrente che attraversa il LED e a mantenerla entro un valore sicuro.

Perché la sola tensione non basta

Ogni LED ha una propria caduta di tensione diretta: è la tensione che troviamo ai suoi capi quando il LED è acceso e lavora nel verso corretto.

Indicativamente possiamo avere questi valori:

  • LED rosso: circa 1,8 – 2,2 V
  • LED verde: circa 2 – 3 V
  • LED blu o bianco: circa 3 – 3,3 V

Facciamo un esempio semplice. Immaginiamo un LED rosso con una caduta di circa 2 V e un’alimentazione da 5 V.

Se lo colleghiamo direttamente ai 5 V, quei volt in più devono comunque “finire” da qualche parte. Senza una resistenza, il rischio è che la corrente salga troppo rapidamente.

Il risultato può essere questo:

  • il LED diventa molto luminoso per un attimo;
  • si scalda;
  • si danneggia in modo permanente.

Il ruolo della resistenza

La resistenza prende su di sé una parte della tensione disponibile e, soprattutto, stabilisce quanta corrente può passare nel circuito.

Per stimare il valore della resistenza possiamo usare la legge di Ohm:

R = (V alimentazione – V LED) / I

Per esempio:

  • alimentazione = 5 V;
  • caduta sul LED = 2 V;
  • corrente desiderata = 10 mA = 0,01 A.

Quindi:

R = (5 – 2) / 0,01 = 300 Ω

Nella pratica si sceglie spesso il valore standard più vicino. In questo caso, ad esempio, si può usare tranquillamente una resistenza da 330 Ω. Continua a leggere

Capire prima di costruire – 01: che differenza c’è tra tensione, corrente e resistenza?

Tre parole che compaiono ovunque in elettronica, ma che spesso vengono confuse tra loro.


Chi inizia a studiare elettrotecnica o elettronica incontra quasi subito tre grandezze fondamentali: tensione, corrente e resistenza.
Sono termini molto usati, ma proprio perché si sentono spesso si rischia di credere di averli capiti, quando in realtà restano un po’ sfocati.

Dagli appunti per i miei studenti.
Capire bene la differenza tra queste tre grandezze è importante perché costituisce una delle basi di tutto ciò che verrà dopo: circuiti, sensori, LED, alimentatori, Arduino, motori, misure elettriche.

La tensione elettrica

La tensione elettrica, spesso indicata come differenza di potenziale (d.d.p.), rappresenta la causa prima di ogni fenomeno elettrico dinamico. Scientificamente, si definisce tensione tra due punti A e B il rapporto tra il lavoro L compiuto dalle forze del campo elettrico per spostare una carica positiva q dal punto A al punto B e la carica stessa. In termini matematici, utilizzando la notazione standard, si esprime come:

V_{AB} = \frac{L_{AB}}{q}

L’unità di misura, il Volt (V), rende omaggio ad Alessandro Volta, la cui ricerca presso l’Università di Pavia ha segnato la nascita dell’elettrotecnica moderna. Per chi inizia lo studio dell’elettrotecnica, è fondamentale comprendere che la tensione non è un “flusso” ma una “condizione” di squilibrio energetico. Una batteria carica possiede una tensione ai suoi capi anche se non è collegata a alcun circuito, esattamente come un corpo sollevato da terra possiede energia potenziale gravitazionale anche se non è in caduta libera.

Sorgente di Tensione Valore Nominale (V) Ambito di Utilizzo
Pila Zinco-Carbone / Alcalina 1,5 V Telecomandi, piccoli apparati
Batteria al Litio (Singola Cella) 3,7 V Smartphone, droni, wearable
Porta USB Standard 5,0 V Alimentazione logica digitale, Arduino
Batteria Piombo-Acido (Auto) 12,0 V Avviamento motori, servizi automotive
Rete Domestica (Monofase) 230 V Elettrodomestici, illuminazione civile

Nelle applicazioni pratiche di laboratorio, la tensione viene fornita da generatori che possono essere pile chimiche o alimentatori da banco, questi ultimi permettono di regolare la “spinta” impressa alle cariche, permettendo di osservare come variano le altre grandezze in gioco. Un errore frequente nella fase di apprendimento è confondere la tensione disponibile con quella effettivamente “utilizzata” dai componenti; la comprensione che la tensione è una proprietà relativa a due punti e non un valore assoluto è il primo passo per una corretta analisi dei nodi e delle maglie di un circuito.

L’intensità di corrente

Se la tensione è la causa, la corrente elettrica è l’effetto. Essa consiste nel movimento ordinato di particelle dotate di carica elettrica. Nei conduttori metallici, tipicamente utilizzati nei laboratori, i portatori di carica sono gli elettroni di conduzione, che si muovono all’interno del reticolo cristallino del metallo. L’intensità di corrente I è definita come la quantità di carica dQ che attraversa una sezione del conduttore nell’intervallo di tempo dt:

I = \frac{dQ}{dt}

L’unità di misura è l’Ampere (A), una delle sette unità fondamentali del Sistema Internazionale. È cruciale distinguere tra la velocità con cui l’energia si propaga nel circuito (vicina a quella della luce) e la velocità di deriva degli elettroni, che è sorprendentemente lenta, spesso dell’ordine di pochi millimetri al secondo. Questo fenomeno viene spiegato agli studenti attraverso il modello del “domino” o della “colonna di palline”: quando si applica tensione, l’effetto si ripercuote istantaneamente su tutta la linea, ma ogni singola carica percorre solo un breve tratto nell’unità di tempo.

Nell’elettronica moderna, specialmente quando si opera con sensori e microcontrollori, si utilizzano quasi esclusivamente i sottomultipli dell’Ampere.

Livello di Corrente Valore Tipico Significato Tecnico
Corrente di dispersione <1 µA Valori minimi in isolanti o standby
Corrente Sensori Analogici 1–10 mA Segnale tipico per trasduttori
Corrente LED Standard 10–20 mA Valore di sicurezza per segnalazione
Limite Pin Arduino 40 mA Massima corrente prelevabile senza danni
Carico di Potenza (Motori) >500 mA Richiede stadi di amplificazione o driver

Un aspetto che richiede un’attenzione particolare è il verso della corrente. Storicamente, prima della scoperta dell’elettrone, si ipotizzò che a muoversi fossero cariche positive dal polo + al polo . Questa convenzione è rimasta universale in tutta l’elettrotecnica e l’elettronica. Per chi inizia lo studio è necessario chiarire che, sebbene fisicamente gli elettroni risalgano il potenziale (dal al +), i calcoli e gli schemi seguono il verso convenzionale discendente. Questa distinzione è essenziale quando si affrontano componenti polarizzati come i diodi o i condensatori elettrolitici.

La resistenza elettrica e le proprietà tecnologiche dei materiali

La resistenza elettrica è la grandezza che quantifica l’opposizione di un corpo al passaggio della corrente. Tale opposizione non deve essere vista come un fattore puramente negativo, ma come lo strumento principale per il controllo delle correnti e per la trasformazione dell’energia elettrica in altre forme, come il calore (effetto Joule) o la luce. La resistenza R si misura in Ohm (\Omega) e dipende strettamente dalla natura del materiale e dalle sue dimensioni geometriche, secondo la seconda legge di Ohm:

R = \rho \cdot \frac{L}{S}

Dove \rho (rho) rappresenta la resistività, una proprietà intrinseca del materiale che varia anche in funzione della temperatura. La formula offre una comprensione intuitiva della “fatica” che le cariche compiono: un conduttore più lungo (L) oppone più resistenza perché aumenta il numero di urti tra cariche e atomi; un conduttore con sezione (S) maggiore offre invece più “spazio” per il passaggio, riducendo la resistenza.

Materiale Resistività ρ (Ω·m) a 20 °C Utilizzo Tecnologico
Argento 1,59·10−8 Contatti di alta precisione
Rame 1,68·10−8 Cablaggi elettrici universali
Alluminio 2,82·10−8 Linee aeree di alta tensione
Costantana 4,9·10−7 Resistenze di precisione (stabile con T)
Silicio Variabile Semiconduttore per microchip

Un approfondimento necessario riguarda la dipendenza dalla temperatura. Nella maggior parte dei metalli, la resistenza aumenta con il calore poiché l’agitazione termica degli atomi del reticolo aumenta la probabilità di collisione con gli elettroni di conduzione. Questo fenomeno è alla base del funzionamento di dispositivi come i termistori (NTC/PTC) utilizzati in elettronica per la misura della temperatura. Al contrario, nei semiconduttori, l’aumento di temperatura può liberare più portatori di carica, riducendo la resistenza, un comportamento che sottolinea la complessità e la varietà dei materiali elettronici che gli studenti impareranno a classificare.

L’analogia idraulica tra tradizione didattica e limiti scientifici

L’uso di analogie nel campo della fisica è una pratica consolidata. Nel contesto didattico, l’analogia idraulica è lo strumento più efficace per visualizzare grandezze altrimenti invisibili.

In questo modello, il circuito elettrico viene paragonato a un sistema di tubazioni in cui scorre un liquido incomprimibile (l’acqua).

Elemento Elettrico Analogia Idraulica Significato Fisico dell’Analogia
Tensione (V) Pressione o dislivello La forza che spinge il fluido attraverso il condotto.
Corrente (I) Portata Il volume d’acqua che passa in una sezione per unità di tempo.
Resistenza (R) Strozzatura o attrito L’opposizione fisica causata dal diametro o dalla rugosità del tubo.
Generatore Pompa Il dispositivo che ristabilisce il potenziale fornendo energia.
Conduttore Tubo di grosso diametro Il percorso che permette il movimento con perdite minime.
Interruttore Rubinetto (con inversione logica) Il comando che permette o impedisce il flusso.

Tuttavia bisogna avere estrema cautela nell’uso di questo modello. Uno dei rischi maggiori è indurre lo studente a pensare che l’elettricità possa “uscire” dal filo come l’acqua da un tubo rotto. È necessario spiegare che, mentre l’acqua può fluire in un tubo aperto verso l’atmosfera, la corrente elettrica richiede necessariamente un percorso chiuso e un ritorno al generatore, a causa dell’altissima rigidità dielettrica dell’aria. Inoltre, l’analogia fallisce nel descrivere i campi elettromagnetici che circondano il filo, fondamentali per comprendere il funzionamento di trasformatori e motori che gli allievi incontreranno nel proseguimento del corso di studi.

Errori tipici e difficoltà

Una delle idee più radicate è il cosiddetto “modello della consumazione”. Molti allievi ritengono che la corrente diminuisca man mano che attraversa i componenti di un circuito (ad esempio, che ce ne sia di più prima di una lampadina e meno dopo). Questo errore deriva da una confusione tra corrente (materia/carica) ed energia. Credo che la strategia didattica corretta possa essere quella che utilizza l’analogia della catena di bicicletta o del circuito idraulico chiuso: la catena si muove alla stessa velocità in ogni punto, ma è il lavoro compiuto dal ciclista a trasferire energia alla ruota.

Un’altra difficoltà riguarda il “ragionamento sequenziale”. Gli studenti tendono ad analizzare i circuiti come se la corrente decidesse cosa fare man mano che incontra i componenti, ignorando che un cambiamento in qualsiasi punto del circuito modifica istantaneamente l’equilibrio di tutto il sistema. L’uso di simulatori come PhET, che permettono di vedere le cariche muoversi in tempo reale e reagire a ogni variazione di resistenza, è fondamentale per superare questo limite cognitivo.

Infine, persiste spesso la confusione tra tensione e corrente, usate nel linguaggio comune come sinonimi (si dice spesso “è passata la 220” intendendo la tensione). E’ importante insistere sul fatto che la tensione è una causa potenziale e la corrente è un effetto attuale: si può avere tensione senza corrente (circuito aperto), ma non corrente senza tensione (salvo nei superconduttori, argomento avanzato).

Questa breve lezione è un primo passo, nei prossimi post vedremo come queste grandezze entrano in gioco in situazioni pratiche, ad esempio quando si collega un LED o si usa un multimetro.

Buono Studio 🙂

Domande dagli utenti – Che cosa significa l’errore avrdude: stk500_getsync()?

Ecco una delle domande che mi sono state fatte ed è forse tra le più comuni:

“Prof, quando provo a caricare lo sketch compare avrdude: stk500_getsync(); che cosa vuol dire?”

questo errore spaventa molto, la scorsa settimana uno studente mi ha detto: “Prof. ho bruciato Arduino!!” 🙂
Nella maggior parte dei casi non indica una scheda “morta”: significa semplicemente che il computer non sta riuscendo a comunicare correttamente con Arduino durante il caricamento del programma.

Risposta

L’errore avrdude: stk500_getsync() compare quando l’IDE prova a trasferire lo sketch alla scheda, ma non riceve la risposta attesa dal bootloader o dall’interfaccia di programmazione seriale. In pratica, il caricamento non parte perché PC e scheda non sono “in sincronia”.

Spesso il messaggio compare insieme a righe come queste:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

Quel resp=0x00 è un indizio tipico: il computer sta tentando di dialogare con la scheda, ma non riceve la risposta corretta.

Che cos’è avrdude

avrdude è il programma che Arduino IDE usa per caricare il codice su molte schede basate su microcontrollori AVR, come UNO classica, Mega e Nano classica. Quando compare questo errore, non è l’IDE che “si è bloccato”: è l’utility di upload che segnala un problema di comunicazione.

Le cause più comuni

Nella pratica, le cause più frequenti sono quasi sempre queste:

01. Scheda sbagliata selezionata nell’IDE

Se in Strumenti > Scheda è impostato un modello diverso da quello realmente collegato, il caricamento può fallire. Arduino indica esplicitamente di controllare prima di tutto che scheda e porta siano corrette.

02. Porta seriale errata

Può succedere di avere selezionato una porta vecchia, una porta non più attiva oppure la porta di un altro dispositivo. Anche questo è uno dei controlli principali suggeriti dal supporto Arduino.

03. Cavo USB inadatto o difettoso

Un caso molto più comune di quanto si pensi: alcuni cavi USB servono solo per l’alimentazione e non trasferiscono dati. In altri casi il cavo dati è semplicemente guasto. Arduino raccomanda di provare un altro cavo e di verificare che sia davvero un cavo dati.

04. Porta occupata da un altro programma

Se la porta seriale è già in uso da un monitor seriale, da un’altra finestra dell’IDE o da un altro software, l’upload può non andare a buon fine. Arduino consiglia di chiudere le altre istanze dell’IDE, i monitor seriali e gli altri programmi che possono bloccare la porta.

05. Qualcosa collegato ai pin 0 e 1

Sulle schede AVR classiche, i pin 0 (RX) e 1 (TX) sono usati anche per la comunicazione seriale durante il caricamento. Se su quei pin è collegato un modulo, un sensore o un circuito esterno, la comunicazione può essere disturbata. Scollegate tutto ciò che non è indispensabile, in particolare proprio da RX e TX.

06. Processore errato nel caso del Nano classico

Per il classic Nano, il supporto Arduino raccomanda anche di controllare la voce Strumenti > Processore, perché un’impostazione sbagliata può causare errori di upload.

07. Problema di bootloader o di interfaccia seriale

Se i controlli di base non risolvono, per alcune schede classiche, un loopback test per verificare la parte USB-seriale. Se il test passa oppure non è applicabile, una possibile soluzione è riscrivere il bootloader.

La cosa importante da capire

Questo errore non significa automaticamente che Arduino sia rotto. Molto spesso il problema è molto più semplice: selezione sbagliata della scheda, porta sbagliata, cavo inadatto, porta occupata o interferenze esterne ed è proprio questo il motivo per cui conviene affrontarlo con metodo, senza cambiare tutto a caso.

Una procedura semplice da seguire

Quando compare avrdude: stk500_getsync(), consiglio di procedere sempre in questo ordine:

Passo 1 – Verificare che lo sketch compili

Premete Verifica e controllate che non ci siano errori di compilazione. Arduino distingue chiaramente i problemi di compilazione da quelli di upload.

Passo 2 – Controllare scheda e porta

Andate in Strumenti > Scheda e Strumenti > Porta e assicurati che corrispondano davvero alla scheda collegata. Un buon trucco è scollegare e ricollegare Arduino per vedere quale porta compare o scompare.

Passo 3 – Cambiare cavo USB

Se avete un dubbio, prova subito un altro cavo. È uno dei controlli più rapidi e più spesso risolutivi.

Passo 4 – Scollegare tutto dalla scheda

Rimuovete jumper, shield, moduli e in particolare qualsiasi cosa sia connessa ai pin 0 e 1. Poi riprovate il caricamento.

Passo 5 – Chiudere monitor seriale e altri programmi

Chiudete monitor seriale, plotter seriale, altre finestre dell’IDE e software che potrebbero usare la stessa porta. Se necessario, riavviate il computer.

Passo 6 – Premere RESET e riprovare

Provate a resettare la scheda con il pulsante RESET e poi tentare di nuovo l’upload.

Passo 7 – Se usate un Nano classico, controllare il processore

Nel caso del Nano classico, verifica anche la voce Strumenti > Processore.

Quando il problema è più serio

Se dopo tutti questi controlli l’errore resta, allora conviene prendere in considerazione due possibilità:

  • un problema nella conversione USB-seriale;
  • un bootloader danneggiato o mancante.

Nel caso delle schede classiche compatibili con il test, è il caso di fare il loopback test. Se la parte seriale risulta a posto, allora può avere senso riscrivere il bootloader usando un altro Arduino come programmatore.

Ma cos’è il loopback test

Il loopback test è una prova di diagnostica che serve a verificare se la comunicazione seriale tra computer e scheda Arduino funziona correttamente, in particolare la parte gestita dal convertitore USB-seriale della scheda è semplicemente una procedura per testare la comunicazione seriale tra PC e scheda.

Detto in modo semplice:

si “fa tornare indietro” immediatamente tutto ciò che il computer invia alla scheda. Se scrivete  un testo nel Monitor Seriale e lo rivedete comparire subito, significa che quella parte della comunicazione sta funzionando.

Il test serve soprattutto a capire dove si trova il problema quando compare un errore di upload come avrdude: stk500_getsync().

  • Se il loopback test fallisce, il problema è molto probabilmente nella parte USB-seriale della scheda o nella comunicazione con il PC. Ciò indica con molta probabilità un adattatore USB-to-TTL seriale danneggiato.
  • Se il loopback test riesce, vuol dire che la scheda comunica con il computer, ma può esserci un problema diverso, ad esempio il bootloader mancante o corrotto.

Su quali schede si può eseguire:

  • Arduino UNO R3 e revisioni precedenti
  • Arduino UNO R3 SMD
  • Arduino Mega 2560 Rev3 e precedenti
  • Arduino Mega ADK Rev3
  • Arduino Nano classico

Come si esegue:

  • scollegare la scheda dal computer;
  • rimuovere shield, moduli e altri collegamenti;
  • collegare RESET a GND;
  • collegare RX a TX;
  • ricollegare la scheda al computer;
  • aprire IDE o Cloud Editor;
  • aprire il Monitor Seriale;
  • scrivere un messaggio e inviarlo. Se il messaggio ritorna subito in uscita, il test è superato.

Perché si collega RESET a GND

Perché così il microcontrollore principale viene tenuto fermo e non esegue nessuno sketch. In questo modo si testa solo il percorso di comunicazione seriale, senza che il programma utente interferisca. Questa è un’inferenza coerente con la procedura ufficiale, che richiede proprio il ponticello RESET-GND insieme a RX-TX.

Perché si collega RX a TX

Perché tutto ciò che entra in ricezione viene immediatamente rimandato in trasmissione: è questo il “ritorno” del loopback. Se inviate, per esempio, ciao, dovreste leggere di nuovo ciao nel monitor seriale.

Attenzione!

Il loopback test fallisce sempre con il chip CH340 usato su alcune schede derivate o compatibili, quindi in quei casi non va interpretato come prova certa di guasto.

Ricordate

Il loopback test è una prova molto utile per rispondere a questa domanda:

“Il computer riesce almeno a parlare correttamente con l’interfaccia seriale della scheda?”

Checklist di controllo

Vi condivido la checklist rapida da tenere a mente quando si verifica il problema avrdude: stk500_getsync():

  • scheda selezionata correttamente;
  • porta corretta;
  • cavo USB dati funzionante;
  • nessun modulo collegato ai pin 0 e 1;
  • monitor seriale chiuso;
  • reset della scheda;
  • nel Nano classico, processore corretto.

Buon Making a tutti 🙂