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 🙂

A a scuola: non basta usarla, bisogna governarla

Le Linee guida MIM non sono un manuale di prompt, ma un invito a introdurre l’Intelligenza Artificiale nella scuola con metodo, responsabilità e attenzione educativa.

Come credo sappiate entro il prossimo dal 2 agosto 2026 l’AI Act europeo diventerà pienamente applicabile, le scuole entro quella data dovranno redigere un protocollo di utilizzo dell’IA nella propria scuola e poiché sarò coinvolto in questa attività ho pensato mettermi a studiare e i miei appunti li ho trasformati in post, all’interno ho inserito slide ed riassunti audio.

Allego la presentazione del primo post.

L’Intelligenza Artificiale sta entrando nella scuola, ma la vera domanda non è solo “quale strumento usare?”.

La domanda più importante è: come la governiamo?

Nel primo post della nuova serie dedicata alle Linee guida MIM sull’IA a scuola provo a spiegare perché non basta usare chatbot, generatori di testi o strumenti automatici.
Serve metodo, responsabilità, attenzione ai dati, controllo umano e una visione educativa chiara.

L’IA può aiutare i docenti, ma non può sostituire la progettazione didattica, la relazione educativa e il pensiero critico.

Il post completo è disponibile nell’area Premium.

Lezioni operative Premium per docenti, studenti e maker

Dal concetto alla pratica: materiali strutturati per imparare, insegnare e costruire

Da molti anni pubblico su questo sito articoli, tutorial, esperienze di laboratorio, attività STEAM, percorsi con microcontrollori, robotica, stampa 3D, coding, elettronica e strumenti digitali per la didattica.

Chi segue queste pagine lo sa bene: il filo conduttore è sempre stato lo stesso. Cercare di rendere più chiari i concetti, più accessibili le tecnologie e più concreta l’esperienza di apprendimento.

In queste ultime settimane, però, molti avranno notato un cambiamento nel ritmo di pubblicazione. Sono passato da una pubblicazione quasi giornaliera a una presenza meno regolare, più discontinua. Questa alternanza non nasce da una perdita di interesse, ma da due motivi principali.

Il primo è molto concreto: l’impegno didattico a scuola, che richiede tempo, attenzione ed energie.

Il secondo riguarda invece una riflessione più ampia che porto avanti da tempo: il desiderio di ristrutturare il lavoro sul sito, andando oltre il singolo tutorial e costruendo contenuti con una maggiore valenza didattica, pratica e formativa.

In questi anni ho pubblicato molte guide operative. Alcune sono nate per rispondere a esigenze dei miei studenti, altre per documentare attività svolte in laboratorio, altre ancora per aiutare docenti, maker e appassionati a orientarsi tra strumenti, componenti, schede elettroniche e tecnologie digitali.

Con il tempo, però, è diventata sempre più evidente una necessità: non bastano sempre idee, spunti o tutorial isolati. Spesso servono materiali più strutturati: lezioni organizzate, attività già pensate per il lavoro reale in classe o in laboratorio, percorsi progressivi, schede operative, strumenti di verifica, indicazioni per evitare gli errori più frequenti.

A questo si aggiunge un altro aspetto. Molte persone mi chiedono un supporto più continuativo per i loro progetti, per attività scolastiche, corsi, prototipi, percorsi didattici o soluzioni tecniche. Mi fa piacere, perché significa che il lavoro svolto in questi anni è stato utile. Allo stesso tempo, però, le richieste sono tante e non sempre riesco a seguirle come vorrei.

Capita anche di ritrovare materiali, idee, spiegazioni o strutture nate da questi articoli all’interno di siti, dispense, corsi o libri di testo. Da un lato è una soddisfazione: vuol dire che quei contenuti circolano e vengono considerati utili, dall’altro lato, però, dietro ogni articolo c’è un lavoro importante: studio, progettazione, scrittura, revisione, immagini, schemi, prove pratiche e adattamento didattico.

Spesso ricevo messaggi molto gentili, del tipo: “Grazie Michele, la tua guida mi è stata utilissima, mi ha permesso di completare un progetto per un cliente” oppure “I tuoi tutorial mi hanno aiutato molte volte a risolvere problemi pratici”. Sono parole che fanno piacere, naturalmente, ma, nella pratica, tutto questo resta spesso una bella pacca sulla spalla e poco più.

Per diverso tempo ho provato a immaginare soluzioni alternative: lezioni singole, incontri in presenza, attività su richiesta, materiali ad accesso libero con eventuale offerta volontaria. Sono strade interessanti, ma difficili da organizzare in modo stabile, soprattutto quando si vuole mantenere una qualità alta e una continuità reale.

Per questo sono arrivato a una svolta.

Dopo molto tempo passato a pensare, progettare e riorganizzare le idee, ho deciso di impostare il lavoro in modo diverso, mantenendo il sito gratuito come spazio aperto di divulgazione, riflessione e condivisione, e affiancandogli un’area Premium dedicata ai materiali più strutturati.

L’area Premium non sarà semplicemente un archivio di articoli più lunghi. Sarà uno spazio in cui raccogliere lezioni operative, corsi, laboratori guidati, schede, materiali per studenti, strumenti per docenti e percorsi già pensati per essere utilizzati, adattati e portati in classe o in laboratorio.

L’idea è far confluire progressivamente in questo spazio anche i materiali che sviluppo per la scuola, per i corsi in presenza, per i webinar e per le attività formative rivolte ai docenti. Non saranno materiali caricati così come sono, ma contenuti ristrutturati, ordinati e resi immediatamente utilizzabili.

Il sito gratuito continuerà quindi a essere il punto di partenza. L’area Premium diventerà lo spazio di approfondimento operativo.

Il principio rimarrà lo stesso che ha guidato il lavoro di questi anni:

capire, sperimentare, misurare, costruire, documentare.

Continua a leggere

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