Archivi categoria: arduino

Aggiornare il firmware dell’Arduino UNO R4 WiFi

Con l’aiuto di alcuni studenti procederò nelle prossime mattinate all’aggiornamento del firmware del modulo di connettività ESP32-S3 dell’Arduino UNO R4 WiFi, questa operazione è necessaria perché la scheda venga riconosciuta correttamente dagli strumenti di sviluppo (Arduino IDE, Arduino Cloud) e per usare le funzioni di rete.

Poiché questa operazione verrà effettuata su una grande quantità di schede, ho preferito scriverne un post che i ragazzi potranno seguire, in ogni caso il riferimento ufficiale è la documentazione del sito Arduino da cui ho estrapolato la guida.

Metodo consigliato — da Arduino IDE (2.2.1 o successivo)

1 – Collega l’UNO R4 WiFi al PC con un cavo USB-C dati e aprite Arduino IDE 2.

2 – Se avevate aperto Serial Monitor o Plotter, chiudetele.

3 – Andate su StrumentiAggiornamento del firmware.

4 – Nel menu a tendina selezionare “UNO R4 WiFi” e premete sul pulsante “VERIFICA AGGIORNAMENTI“. Se la scheda non compare, verificate il cavo/porta, provate a premere il pulsante RST. Se ancora non appare, potrebbe mancare il firmware del bridge USB: usate la procedura di ripristino indicata seguendo questo link.

5 – Dal menu a discesa: “Seleziona la versione del firmware” scegliere l’ultima disponibile e fate clic su “INSTALLA“.

Nota importante: l’installazione sovrascrive lo sketch presente sulla scheda.

6 – Attendete il messaggio “Firmware correttamente installato” (in basso a sinistra, guardate l’immagine che segue)

7 – Scollegate e ricollega la scheda dal PC (passaggio fondamentale)
Finché non la scollegate e ricollegate, la scheda resta in ESP Download mode; se caricate uno sketch in questo stato, rischiate di cancellare il firmware del bridge USB.

8 – Chiudete la finestra dell’ “Aggiornamento del firmware” facendo clic in alto a destra. A questo punto la scheda dovrebbe essere rilevata correttamente e pronta per essere programmata.

Nel caso in cui il l’aggiornamento non va a buon fine bisogna procedere con l’aggiornamento manuale, in tal caso la guida ufficiale è quella che trovate al seguendo il link: Restore the USB connectivity firmware on UNO R4 WiFi with espflash di cui dettaglio i passi di seguito. Continua a leggere

Progettare bene, programmare meglio: diagrammi di flusso – Lezione 1/5

Ripasso di inizio anno – appunti per la classe.

Perché bisogna imparare a realizzare i diagrammi di flusso (anche se “programmiamo poco”)?

Quando progetti un programma per Arduino, il problema più grande non è scrivere le parentesi giuste: è decidere l’ordine delle azioni e quando prendere decisioni. Un diagramma di flusso è un disegno semplice che mostra i passi da compiere, le scelte “sì/no” e l’ordine in cui tutto accade. È usato in informatica da decenni proprio per rappresentare, passo-passo, il comportamento di un algoritmo o di un processo.

Un flowchart ti aiuta a vedere il programma prima di scriverlo: rettangoli per le azioni (es. “accendi LED”), rombi per le domande (es. “pulsante premuto?”), ovali per inizio/fine, parallelogrammi per ingresso/uscita di dati, frecce per la direzione. L’idea è sempre quella: dall’alto verso il basso, una freccia alla volta, fino all’uscita. Questa notazione è diventata uno standard di fatto e, nelle versioni “complete”, include molte altre forme utili (ne esistono decine); noi useremo solo quelle essenziali.

Dove si usano e perché ci interessano in laboratorio di sistemi

I diagrammi di flusso non servono solo a chi programma: si usano per documentare, spiegare e migliorare processi in tanti contesti (scuola, aziende, sanità, logistica). Nel nostro laboratorio li usiamo per tradurre un problema reale (una luce che si accende, un sensore che decide) in una sequenza chiara. Questo approccio è lo stesso che trovi nel project management: rappresentare un processo rende più facile pianificare, allineare il team e trovare i colli di bottiglia.

Esistono poi varianti “cugine” dei flowchart che potresti incontrare:

  • Workflow (flusso di lavoro), molto usato per capire chi fa cosa e quando;
  • Swimlane (corsie), utile quando più persone o sottosistemi collaborano;
  • Data Flow Diagram / DFD (flusso di dati), focalizzato su come circolano i dati tra parti di un sistema.

Noi partiamo dal flowchart di base (azioni/decisioni) perché è il ponte più diretto verso il codice Arduino

Buone pratiche “da prima riga di codice”

  • Definisci il problema in una frase (“Cosa voglio ottenere?”).
  • Elenca i passi e le decisioni (domande “sì/no”).
  • Disegna il flusso con poche forme standard (Inizio > Azioni > Decisioni > Fine).
  • Cerca le inefficienze: passaggi inutili, decisioni doppie, attese esagerate.
  • Condividi e rivedi: il diagramma è un documento vivo; aggiornatelo quando cambi idea.

Questa routine è identica a quella usata nei team professionali quando costruiscono o migliorano un processo.

Dalla carta al digitale (e al testo)

Puoi disegnare su carta, usare strumenti visuali come Lucidchart o Miro (trascini le forme e colleghi con frecce), oppure scrivere i diagrammi come testo con Mermaid (“diagram as code”), che si integra bene nei siti e nelle note tecniche. In questa lezione useremo Mermaid proprio per abituarci a ragionare prima in blocchi, poi in pseudocodice, poi in C/C++ per Arduino.

Mappa veloce “flowchart > Arduino”

Inizio / Setup > setup(): qui imposti i pin come INPUT/OUTPUT.
Azione → istruzioni come digitalWrite(), analogWrite(), tone().
Decisione (rombo) > if (...) { ... } else { ... }, spesso con letture da sensori: digitalRead(), analogRead().
Ciclo > loop() che ripete le azioni in sequenza.
Questa corrispondenza 1:1 rende naturale “tradurre” il disegno in codice, riducendo gli errori e il tempo di debug. (Rivedremo questa mappa in ogni esempio pratico.)

Cosa evitare all’inizio

  • Frecce che si incrociano: rendono il percorso confuso.
  • Domande ambigue: un rombo = una domanda con risposta sì/no chiara.
  • Simboli inventati: resta su 4–5 forme standard; andrai veloce e capirai tutto al volo.
  • Salti di logica: se ti perdi, torna ai passi del processo (definisci > elenca > disegna > verifica).

Un buon diagramma di flusso è come una ricetta: indica ingredienti (sensori/attuatori), passaggi (azioni), domande al cuoco (“la pasta è al dente?” > sì/no). Se la ricetta è chiara, il codice funziona e tutti in team capiscono cosa fare.

Nota per i lettori (studenti e non): nei paragrafi successivi troverai la pipeline completa che useremo sempre: Problema > Diagramma (Mermaid) > Pseudocodice > Sketch Arduino, con esempi concreti (LED, pulsante, LDR, buzzer). Questa struttura è pensata per classi che iniziano: potete seguirla anche se non hai mai scritto una riga di codice.

Simboli nei diagrammi di flusso: poche forme bastano

L’elenco delle forme può sembrare infinito, ma non serve conoscerle tutte. Ogni simbolo indica un tipo di passaggio preciso e ha un contesto d’uso ben definito. Quando disegni, se ti senti perso, torna all’essenziale: per la grande maggioranza dei diagrammi bastano davvero alcune forme base; le altre servono in casi specifici. Qui sotto trovi quelle più ricorrenti.

Forme comuni del flowchart

Simbolo del diagramma di flusso Nome Descrizione
Inizio/Fine Segna il punto di avvio o la conclusione del flusso; delimita i confini del processo.
Processo / Azione Indica un passo operativo: un’attività, una funzione o un’elaborazione che “fa qualcosa”.
Decisione Rappresenta una domanda binaria (sì/no, vero/falso) che dirama il percorso su esiti diversi.
Input/Output (Dati) Mostra un ingresso (dato in arrivo, misura, comando) o un’uscita(risultato, messaggio, documento).
Linea di flusso Definisce la direzione della sequenza tra le forme; chiarisce l’ordine dei passi.
Sottoprocesso / Processo predefinito Collega a una procedura già definita altrove o a un gruppo di azioni consolidate.
Connettore in pagina Unisce parti lontane dello stesso schema senza incrociare frecce; migliora la leggibilità.
Connettore fuori pagina Collega a un continua su un’altra pagina; spesso include un riferimento o un codice.
Documento Indica la produzione o l’uso di un documento (ordine, report, lettera, promemoria).
Documenti multipli Come sopra, ma per più documenti generati/gestiti nello stesso passaggio.
Input manuale L’utente digita o inserisce dati a mano (es. login, compilazione di un campo).
Operazione manuale Passo che richiede intervento umano (non automatizzato) per proseguire.
Database / Archivio dati Dati archiviati in modo strutturato e interrogabili (lettura/scrittura/filtri).
Memoria interna Dati conservati all’interno del sistema/dispositivo durante l’elaborazione.
Attesa / Ritardo Indica una pausa temporale o un ritardo prima del passo successivo.
Commento / Nota Aggiunge chiarimenti al lettore; si collega con linea tratteggiata alla parte pertinente.

Alcune varianti di forma e naming possono cambiare leggermente a seconda dello strumento o dello standard adottato; l’insieme di base rimane comunque coerente tra le principali piattaforme.

Nella prossima lezione vedremo quali tool utilizzare per disegnare diagrammi di flusso.

Buon Coding a tutti 🙂

Comprensione del testo tecnico – Escape game didattico con Arduino UNO R4 – icebreaker per l’inizio dell’anno scolastico

Da tempo sperimento l’escape game nelle attività di laboratorio: è una modalità estremamente coinvolgente, orienta l’attenzione all’obiettivo, aumenta la concentrazione e riduce il rumore non costruttivo. Quello che si sente in aula è il brusio utile di chi discute, prova, sbaglia e ci riprova per risolvere un problema. La sfida di questi mesi è renderla significativa anche per studenti un po’ più grandi, con competenze tecniche talvolta “disordinate” e bisogno di nuova motivazione.

Capisco che qualcuno possa considerarla una scelta poco adatta a un istituto tecnico, richiamando l’idea che la scuola debba puntare solo su abilità pratiche e nozioni da trasferire in vista del lavoro o dell’università. A mio avviso è una visione superata: la scuola è cambiata, gli studenti sono diversi, né peggiori né migliori di “noi”, i ragazzi vivono in un mondo che offre moltissimo, ma spesso lascia poco spazio alla creatività o, meglio, non la allena. Non devo convincere nessuno: da insegnante sento la responsabilità di cercare strategie efficaci per aiutare i ragazzi e, insieme ai colleghi, fornire loro gli strumenti per diventare cittadini consapevoli. Questo post è il mio diario di bordo: metto per iscritto ciò che sperimento in classe per farne memoria e, se può essere utile, per condividerlo.

Dopo aver progettato escape analogiche, digitali e fisiche, voglio consolidare l’approccio nella didattica curricolare. Comincio da qualcosa di semplice: un escape “ice breaking” di inizio anno. Quella che segue è l’attività, volutamente essenziale; se l’esperimento continuerà a funzionare, pubblicherò anche le prossime tappe.

Siamo all’inizio dell’anno scolastico, come dicevo sopra, ho rimodellato il mio “ice breaking” per il laboratorio di sistemi trasformandolo in una breve esplorazione individuale in stile escape. Nell’attività l’obiettivo non è “programmare bene”, ma osservare come gli studenti cercano informazioni, leggono testi tecnici e narrativi, e trasferiscono ciò che capiscono in un prodotto visivo semplice. Ho scelto un oggetto per loro nuovo, mi sono concentrato sulla matrice 12×8 dell’Arduino UNO R4 WiFi, ho creato una piccola situazione di disorientamento produttivo: un compito che per la loro fascia di età è elementare, però non è mai stato affrontato, da risolvere attingendo esclusivamente alla documentazione ufficiale sul sito Arduino.cc. La sequenza di indizi li ha costretti a leggere con attenzione, a verificare i prerequisiti, a selezionare ciò che serviva e a ricomporre la soluzione anche con un po’ di “copia e incolla consapevole” dagli strumenti ufficiali (come l’Editor della matrice). Chiudendo il percorso, ogni studente ha mostrato il simbolo di sblocco sulla matrice di LED ed ha guadagnato il badge, successivamente siamo passati ad un breve debrief collettivo in cui abbiamo esplicitato strategie efficaci, fraintendimenti e punti chiave tecnici per giungere alla consapevolezza di non avere completa dimestichezza nelle tecniche per risolvere un problema.

L’attività si è svolta in circa 90 minuti di lavoro, nella parte introduttiva ho dato alcune indicazioni operative dopo di che ho osservato e preso appunti sul loro modo di operare e farmi un’idea più precisa delle loro capacità.

Vi condivido l’attività che spero possa essere migliorata.

Materiali necessari per ogni allievo

  • N.1 scheda Arduino UNO R4
  • N. 1 PC per allievo
  • N. 1 Sito per creare l’escape game realizzato con Google Site, trovate il link al fondo di questo post.

Scheda di presentazione dell’attività didattica (per il docente/formatore)

“Sblocca il laboratorio” è un escape game didattico con ingresso morbido e motivante nell’ecosistema Arduino UNO R4 WiFi: lo studente deve mostrare un Simbolo di Sblocco sulla matrice 12×8 integrata sulla scheda, ma la chiave non è “scrivere codice da zero”; è trovare, capire e applicare le informazioni giuste dentro la documentazione ufficiale. L’attività allena così la ricerca dell’informazione tecnica (orientarsi tra Getting Started, Tutorial, Hardware; scegliere un esempio pertinente ed utilizzare l’editor della matrice), la comprensione del testo narrativo (tradurre la storia-missione in azioni concrete e verificabili) e la comprensione del testo tecnico (prerequisiti come installazione driver, concetti essenziali della LED Matrix, flusso operativo “disegna > esporta > carica”). In classe tutto ciò si traduce in problem solving consapevole: riconoscere i punti critici, correggere il percorso, giustificare le scelte di fonte e di metodo.
Funziona bene anche con gruppi fragili o demotivati perché il feedback è immediato. Lo scaffolding è naturale: la documentazione guida passo dopo passo e l’editor di icone riduce il carico cognitivo mantenendo il controllo del risultato. Il compito rimane breve, chiaro e gratificante: un unico output visivo con criteri di riuscita espliciti, abbastanza sfidante da dare senso alla ricerca, ma sufficientemente accessibile da permettere a tutti di arrivare in fondo e raccontare come ci sono arrivati. In questo modo la valutazione non riguarda solo l’esito, ma la qualità del percorso: dove hanno cercato, cosa hanno capito, come lo dimostrano.

Sito Escape per svolgere l’attività: “sblocca il laboratorio”

Se serve ho realizzato una versioni in lingua inglese del gioco escape in modo che si posa realizzare un’attività trasversale tra l’insegnamento dell’inglese e la disciplina tecnica, il link al sito è:

Unlock the Lab

Attenzione il badge è nascosto come link (il colore del testo si confonde con lo sfondo pagina) nell’ultima pagina, questa informazione deve essere fornita agli studenti solamente quando  hanno mostrato il codice sulla matrice LED dell’Arduino R4.

Buon lavoro 🙂

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

In arrivo una nuova versione di EduRobot MicroMoto!

Da tempo avevo “nel pennino” un progetto che ancora non ho avuto modo di sviluppare pienamente: la realizzazione di una valigetta STEAM pensata per attività di Making didattico da utilizzare in più discipline.
Ora, grazie all’evoluzione di EduRobot MicroMoto, il progetto sta prendendo forma concreta.

Sto lavorando alla progettazione di una nuova versione di MicroMoto, realizzata in compensato: una struttura più solida e resistente rispetto alla versione precedente in cartone.
Ogni faccia del parallelepipedo è preforata, permettendo un’elevata espandibilità: sarà possibile collegare facilmente componenti elettronici, sensori, attuatori, elementi meccanici e strutturali, trasformando il robot di base in molteplici configurazioni differenti.

Questa nuova versione non sarà un oggetto a sé stante, ma il primo modulo di un progetto più ampio: una valigetta modulare STEAM che raccoglierà componenti, strumenti ed esperimenti pensati per integrare varie discipline — dall’elettronica alla meccanica, dalla fisica alla programmazione.
L’idea è costruire un percorso laboratoriale completo, dove ogni elemento della valigetta diventa parte di un sistema didattico aperto, personalizzabile e progressivo.

La spinta a dare concretezza a questo progetto arriva anche dal nuovo corso di robotica che avvierò tra poche settimane, per il quale desideravo proporre ai partecipanti una piattaforma ancora più solida, versatile e stimolante.

Nei prossimi aggiornamenti, racconterò più nel dettaglio sia l’evoluzione di MicroMoto sia la progettazione della valigetta e dei primi kit di esperimenti!