Home Assistant a scuola: la guida “a puntate” per elettronica & automazione – 01

Questa guida nasce con un obiettivo doppio: replicare in contesti diversi ciò che ho già sperimentato sul campo, a partire da casa mia e trasformare Home Assistant in una palestra didattica concreta per la scuola (ITIS). Il progetto è necessariamente diluito nel tempo: il mio lavoro quotidiano in classe è intenso e scrivere “un po’ alla volta” mi consente di essere più costante e produttivo. Nei prossimi mesi la guida sarà utilizzata integralmente dai miei studenti, quindi per me è anche un modo per strutturare meglio i materiali e organizzare le attività di laboratorio in modo progressivo e replicabile.

Come sempre trovate su queste pagine una sintesi, di un percorso più esteso ed approfondito che verrà svolto in presenza a scuola.

Nota sull’origine dei contenuti

Questa guida nasce dalla traduzione in italiano del manuale di installazione ufficiale di Home Assistant e da miei appunti, il tutto riadattata in alcune parti per un uso didattico a scuola (ITIS), con esempi, lessico semplificato e procedure più guidate pensate per docenti e studenti.

Perché Home Assistant a scuola

La guida nasce per supportare docenti e studenti del percorso di Elettronica ed Automazione dell’ITIS con attività concrete di laboratorio: prototipi, sensori, attuatori, automazioni e dashboard. Farò usare Home Assistant come una vera palestra di allenamento per orchestrare dispositivi e servizi, simulare scenari della vita scolastica (aule, laboratori, LTO), raccogliere dati e creare procedure automatizzate utili alla didattica e all’organizzazione quotidiana.

Vogliamo documentare e standardizzare il lavoro del Laboratorio Territoriale per l’Occupabilità (LTO) e offrire una traccia replicabile: setup chiari, materiali riutilizzabili, esercizi graduali. La guida mostrerà come trasformare Home Assistant in un ambiente di sperimentazione che unisce elettronica, informatica, reti e buone pratiche di gestione del laboratorio, con un  percorso pensato per essere seguita passo passo sia in aula sia a casa.

Cos’è Home Assistant

Home Assistant è una piattaforma open-source per l’automazione e il controllo di dispositivi e servizi, pensata per funzionare in locale (privacy e affidabilità) e per integrare centinaia di tecnologie diverse in un’unica interfaccia e motore di automazioni. È supportata da una grande comunità e offre installazioni pronte per Raspberry Pi e altri sistemi, con gestione semplificata di add-on, backup e aggiornamenti.

La variante Home Assistant OS è un sistema operativo dedicato che rende l’installazione “apri e usa” su single-board computer e x86-64, riducendo la manutenzione e facilitando la gestione del laboratorio (snapshot, add-on, supervisione centrale).

Dal punto di vista storico e tecnologico, il progetto nasce nel 2013 ed è oggi sviluppato dalla Open Home Foundation e da una community globale; backend in Python, frontend web, migliaia di integrazioni e un focus costante su controllo locale e sicurezza.

Tradotto in pratica per l’ITIS: un “collante” che ci permette di collegare sensori/attuatori reali, creare dashboard per il laboratorio, costruire automazioni verificabili (trigger-condizioni-azioni) e fare misure e report utili alla valutazione delle attività.

A chi è rivolta la guida

Docenti di elettronica e sistemi che cercano esempi pronti (step-by-step) e materiali riutilizzabili.
Studenti di elettronica/automazione che vogliono vedere subito sensori e attuatori integrati in un flusso “dati > logica > azione”.
LTO / FabLab didattici che vogliono un’impostazione replicabile, con criteri di sicurezza, versioning dei file e checklist operative.

Cosa faremo (indice “a puntate” in fase di realizzazione)

  • Preparazione – Scelte hardware, HAOS vs altre installazioni, criteri di rete in laboratorio.
  • Installazione su Raspberry Pi – Flash, primo avvio, onboarding, snapshot.
  • Interfaccia & Add-on essenziali – File Editor, Samba/backup, MQTT, ESPHome (panoramica).
  • Prime automazioni – Trigger, condizioni, azioni, blueprint; notifiche e scene.
  • Dashboard di laboratorio – Card base, layout per postazioni, pannello docente.
  • Sensori & Attuatori reali – MQTT ed ESPHome con esempi di misura e pilotaggio.
  • Energy & Presence (opzionale) – Raccolta dati e visualizzazione didattica.
  • Sicurezza & manutenzione – Account, backup, ripristino, troubleshooting “da classe”.

Licenze, privacy e sostenibilità didattica

La natura open-source e il controllo locale permettono di usare Home Assistant anche senza dipendere dal cloud: un vantaggio in termini di privacy, latency e continuità delle esercitazioni in laboratorio. Le integrazioni coprono protocolli e prodotti eterogenei, così da valorizzare strumentazione già presente a scuola e ridurre i costi iniziali.

Esempi di attività “vicine alla vita scolastica”

Ho organizzato le idee in categorie di attività: non saranno tutte realizzate, ma saranno utilizzate come base di discussione con gli studenti per valutarne la fattibilità e scegliere cosa sviluppare in gruppi di progetto (ad esempio in attività di PCTO). L’obiettivo è ragionare su come trasformare un’idea in un prototipo concreto, definendo priorità, vincoli e impatto didattico.

Come farò valutare dagli studenti le proposte (idee anche questa in fase di sviluppo):

  • Fattibilità tecnica: sensori/attuatori disponibili, integrazione con Home Assistant, complessità di sviluppo.
  • Impatto didattico: competenze coinvolte (elettronica, reti, coding, dati), utilità per la vita scolastica.
  • Costi e tempi: componenti necessari, budget, pianificazione a sprint.
  • Sicurezza & privacy: uso in ambiente scolastico, conformità e minimizzazione dei dati.
  • Manutenibilità & scalabilità: riuso dei moduli, documentazione, possibilità di estendere il progetto.
  • Inclusione & accessibilità: benefici per studenti con bisogni educativi speciali.

Ambiente e qualità dell’aria

  • Polveri sottili nel cortile (PM2.5/PM10): sensore (es. PMS5003/SDS011) su ESP32; dashboard con trend orari/giornalieri; automation: se PM supera soglia > notifica a docenti/ATA e cartello “ridurre attività all’aperto”.
  • Stazione meteo didattica: temperatura/UR, pioggia, vento, radiazione; correlare meteo con assenze in palestra/uscite didattiche.
  • Rumore nei corridoi/aula: microfono analogico per livello sonoro; semaforo visivo in classe per autoregolazione.

Sicurezza e accessi

  • Sistemi anti-intrusione: PIR, contatti magnetici su porte/finestre, vibrazione su vetrate; se rilevato movimento fuori orario > sirena/luce + notifica con snapshot ESP32-CAM.
  • Uscite di emergenza: sensori stato porta + test programmati; se porta ostruita/aperta fuori norma > alert a DSGA/collaboratori.
  • Armadi strumentazione: NFC/contatti per apertura; log prelievi/restituzioni per responsabilità e inventario.

Energia e edificio

  • Analisi consumo energetico: smart plug (banchi prova, stampanti 3D, forni reflow), pinza amperometrica/Modbus su quadri; automation: spegnimento notturno/standby; report settimanale per classe/spazio.
  • Bilancio termico/dispersioni: sonde T°/UR in e out (aule, corridoi, esterno) + porta/finestra aperta; se ΔT anomalo o finestra aperta con riscaldamento ON > notifica; log per stimare dispersioni e comportamenti.
  • Monitor fotovoltaico: produzione vs consumi scuola; suggerimento fasce orarie per carichi energivori (laboratorio macchine, stampa 3D).

Laboratori e didattica operativa

  • Banchi prova “occupazione & ticket”: pulsante “richiesta aiuto”, stato banco (OK/KO), coda assistenza sul monitor docente.
  • Gestione stampanti 3D: sensori temperatura/hotend, consumo, fine-filamento; avviso fine stampa e spegnimento automatico.
  • Magazzino componenti: bilance/pesi o contatori ottici su cassettini “critici”; scorte minime > lista acquisti automatica.

Vita quotidiana d’istituto

  • Bacheca digitale: dashboard con eventi del giorno, aule occupate, avvisi ATA; aggiornamento da Google Calendar/Sheets.
  • Clima “comfort apprendimento”: indice combinato (T°, UR, CO₂, rumore, illuminamento) per aula; suggerimenti operativi (arieggiare, abbassare tapparelle, ecc.).

Inclusione e benessere

  • Semaforo acustico-visivo per studenti sensibili al rumore: se superata soglia > luce soft + promemoria “voce bassa”.
  • Promemoria routine (PAI/PEI): notifiche discrete su tablet del docente (pause attive, cambio attività, idratazione).

Manutenzione e asset

  • Ciclo manutenzione attrezzature: ore di utilizzo macchine/pompe/saldatori; scadenze manutentive.
  • Perdite d’acqua (bagni/lab): sensori acqua; chiusura elettrovalvola + avviso bidello.

Come seguire la serie

Pubblicherò gli episodi con cadenza “abbastanza” regolare sul sito. Ogni articolo sarà una porzione del tutorial generale e conterrà file di supporto, checklist e dove necessario schede attività. Se volete ricevere gli aggiornamenti, iscriviti a questo sito o segui i miei canali social.

Non mi resta che dirvi: Buon Making a tutti 🙂

Quick References per lo studio – Scrivere una relazione tecnica

Una relazione tecnica ha lo scopo di rendere trasparente e replicabile un lavoro: spiega che cosa è stato svolto, con quali procedure, quali risultati sono emersi e quali conclusioni ne derivano. Il suo primo obiettivo è comunicare: anche un progetto ben fatto, se non è descritto con rigore, di fatto “non esiste” perché non può essere capito, rifatto o proseguito da altri. Per questo contano struttura, sintesi e terminologia accurata.

Nel contesto di laboratorio (elettronica, informatica, scienze), oltre al testo, servono elementi operativi: uno schema disegnato in modo corretto, un bill of materials (BOM – in italiano: lista dei materiali) con caratteristiche, l’indicazione dei punti di misura, i  datasheet e le convenzioni di rappresentazione adottate. Questa parte oggettiva permette il debug e facilita eventuali migliorie del prototipo.

La scansione consigliata comprende:

  • scopo/obiettivi;
  • materiali e strumenti (con versioni software e tolleranze/portate);
  • metodo (passi riproducibili e parametri);
  • risultati (tabelle/figure ordinate con unità e incertezze);
  • discussione (lettura dei dati, problemi, alternative);
  • conclusioni;
  • riferimenti (fonti e datasheet);
  • allegati eventuali (codice, schemi, CSV).

Criteri di qualità da tenere davanti agli occhi

  • chiarezza e sintesi: testo breve, ma completo rispetto all’obiettivo;
  • coerenza dei dati: assi etichettati, unità SI, legenda, stima dell’incertezza;
  • riproducibilità: parametri, condizioni operative, versioni hardware/software esplicite;
  • onestà tecnica: limiti, errori e problemi dichiarati e come sono stati gestiti;

Scarica PDF A4 della guida operativaApri il sorgente Markdown su GitHub

Se non sai cos’è il Markdown segui il link

---
title: "Relazione tecnica – "
autore: "<classe/nome cognome>"
data: "08.10.2025"
versione: "1.0"
---

## 1) Scopo / Obiettivo


## 2) Materiali e Strumenti
- Componenti/sensori (modello, tolleranze): …
- Strumentazione (portata/risoluzione): …
- Software/Firmware (versioni): …
- Datasheet/Riferimenti: …

## 3) Schema & Configurazione
- Schema elettrico / diagramma (con punti di misura)
- Pin-out / cablaggio / indirizzi (se I²C/SPI)
- Foto del setup (facoltativa ma consigliata)

## 4) Metodo (passi riproducibili)
1) …
2) …
- Parametri: 
- Criteri di accettazione: 

## 5) Risultati (dati ordinati)
- Tabella(i) con unità di misura e incertezze
- Grafici con assi etichettati e legenda
- Eventuali schermate (Serial/oscilloscopio)

## 6) Discussione (interpretazione)
- Cosa mostrano i dati? (trend, anomalie)
- Errori e limiti (strumento, metodo, ambiente)
- Alternative e possibili miglioramenti

## 7) Conclusioni
<2–3 frasi: risposta allo scopo + prossimo passo>

## 8) Allegati
- Codice .ino / script / CSV
- Schema in formato editabile

## 9) Riferimenti
- Datasheet, articoli, pagine web (con data di accesso)

Esempio 1 – Arduino: “Soglia di luce per LED d’allarme”

Scopo

Definire una soglia “luce bassa” per accendere un LED quando l’illuminazione in aula scende sotto il livello utile alla lettura.

Materiali e Strumenti

  • Arduino UNO, fotoresistenza + R 10 kΩ (divisore), LED + R 220 Ω;
  • Multimetro (portata 20 V DC, risoluzione 0,01 V);
  • IDE Arduino 2.3.x; quaderno dati; datasheet fotoresistenza.

Schema & Configurazione

  • Divisore su A0, LED su D7. Annotati i punti di misura (A0 e Vout LED) sullo schema.

Metodo

  • Rilevare A0 ogni 200 ms per 60 s in tre condizioni: finestra aperta (giorno), tenda tirata (penombra), luce spenta (buio).
  • Applicare media mobile su 10 campioni (riduzione rumore).
  • Proporre una soglia fissa iniziale e verificare falsi allarmi.
  • Valutare soglia “adattiva” = baseline – Δ (baseline = media primi 5 s).

Risultati

Tabella 1 – Valori medi A0 (0–1023), n=300 campioni per condizione

Condizione A0 medio Dev. std Note
Giorno (finestra) 780 22 alta variabilità
Penombra 430 18 stabile
Buio luce off 120 9 molto stabile

Discussione

La soglia fissa 200 funziona in condizioni estreme, ma è poco sensibile in penombra. Con soglia adattiva (baseline – 250) impostata dopo 5 s, l’attivazione scatta appena la luce cala di circa 30–35% rispetto al livello di partenza, adattandosi a mattino/pomeriggio. Limiti: sensibilità all’orientamento della fotoresistenza e ombre locali (proporre schermatura).

Conclusioni

La soglia adattiva riduce falsi negativi in penombra. Prossimo passo: mappare A0 > lux con calibrazione a due punti e riportare sul grafico unità SI.

Esempio 2 – Fisica: “Verifica della legge del pendolo”

Scopo

Verificare la legge

per piccole oscillazioni, stimando l’errore sperimentale.

Materiali e Strumenti

Filo inestensibile, massa 100 g, metro rigido (±1 mm), cronometro (±0,01 s). Rilevazione su 10 oscillazioni per ridurre l’incertezza di misura.

Metodo

Per ciascuna lunghezza L={0,30, 0,45, 0,60} m:

  1. Misurare il tempo di 10 oscillazioni;

  2. Calcolare

  1. Confrontare T con

con

Risultati

L (m) t10 (s) T (s) misurato T (s) teorico Δ = T-Tteo Δ%
0,30 11,0 1,10 1,09 0,01 0,9%
0,45 13,4 1,34 1,34 0,00 0,0%
0,60 15,5 1,55 1,55 0,00 0,0%

Grafico consigliato:

Discussione

Scostamento max < 1%: incertezze legate al cronometro e all’angolo iniziale (non perfettamente “piccolo”), attriti trascurati. Possibile miglioramento: fotocellula per misura automatica, media su tre serie per ogni L.

Conclusioni

La legge del pendolo è confermata entro l’errore sperimentale; proporre estensione a grandi ampiezze per osservare le deviazioni.

Qualcomm acquisisce Arduino e presenta UNO Q: AI e Linux nel formato UNO

Comunicato importante per la comunità Arduino

Qualcomm Technologies, Inc. ha reso noto di aver raggiunto un accordo per acquisire Arduino, riferimento mondiale nell’hardware e software open-source. L’operazione accelera la strategia di Qualcomm di mettere le proprie tecnologie edge a disposizione degli sviluppatori. L’iniziativa si aggiunge alle recenti integrazioni di Edge Impulse e Foundries.io, delineando una piattaforma edge full-stack che copre hardware, software e servizi cloud. La chiusura resta soggetta al via libera delle autorità e alle consuete condizioni di closing.

La combinazione tra elaborazione, grafica, computer vision e AI di Qualcomm e la semplicità, accessibilità e community di Arduino promette di moltiplicare la produttività degli sviluppatori nei diversi settori. Arduino manterrà impostazione open e spirito comunitario, aprendo al contempo a un piattaforma completa per lo sviluppo moderno, con UNO Q come primo tassello.

Arduino conserverà brand, strumenti e missione in modo indipendente e continuerà a supportare microcontrollori e microprocessori provenienti da più fornitori. Con l’ingresso nella famiglia Qualcomm, gli oltre 33 milioni di utenti attivi della community avranno accesso allo stack tecnologico dell’azienda e alla sua presenza globale. Start-up, aziende, professionisti, scuole e maker potranno prototipare e validare più in fretta, con un percorso verso il mercato supportato dalle tecnologie Qualcomm e da un ecosistema di partner esteso.

Arduino UNO Q

UNO Q è una single board di nuova generazione con architettura a “doppio cervello”: un microprocessore compatibile Debian Linux accanto a un microcontrollore per il controllo in tempo reale. Basata su Qualcomm Dragonwing™ QRB2210, la scheda è pensata per visione e audio con AI reattivi al contesto, dai sistemi smart home evoluti all’automazione industriale. L’ambizione è renderla lo strumento di riferimento per ogni sviluppatore: versatile, accessibile e adatta a un apprendimento continuo.

Oltre alla piena compatibilità con Arduino IDE e con il classico ecosistema UNO, UNO Q è la prima scheda Arduino supportata da Arduino App Lab, il nuovo IDE integrato che unifica i flussi RTOS, Linux, Python e AI per accelerare sviluppo e distribuzione. App Lab è open-source e progettato per ideare, prototipare e scalare rapidamente soluzioni AI fino alla produzione. L’integrazione nativa con Edge Impulse velocizza l’intero ciclo di vita dei modelli—dalla raccolta di dati reali al tuning e all’ottimizzazione—per casi d’uso come rilevamento di persone/oggetti, anomaly detection, classificazione immagini, riconoscimento suoni ambientali e keyword spotting.

Dichiarazioni

Nakul Duggal (Group GM, Automotive, Industrial & Embedded IoT, Qualcomm Technologies, Inc.):

“Con Foundries.io, Edge Impulse e ora Arduino, acceleriamo la nostra visione di rendere accessibili all’ecosistema globale degli sviluppatori le nostre tecnologie di calcolo e IA più avanzate. Unendo l’ethos open-source di Arduino al portafoglio di Qualcomm, milioni di sviluppatori potranno creare soluzioni intelligenti più rapidamente ed efficientemente, con un chiaro percorso alla commercializzazione.”

Fabio Violante (CEO, Arduino):

“La collaborazione con Qualcomm ci permette di potenziare il nostro impegno su accessibilità e innovazione. UNO Q è solo l’inizio: vogliamo offrire alla community strumenti potenti per un’IA intuitiva, scalabile e aperta a tutti.”

Massimo Banzi (Co-fondatore, Arduino):

“Da semplicità, economicità e community è nato un movimento che ha cambiato la tecnologia. Entrando in Qualcomm, porteremo strumenti di IA d’avanguardia alle persone, restando fedeli ai nostri valori.”

Evento

Per approfondire, segui la diretta “From Blink to Think” del 7 ottobre 2025 alle 7:00 a.m. PT / 16:00 CEST:
https://www.arduino.cc/from-blink-to-think

Fonte: Qualcomm

Nuova serie di Quick References per il laboratorio

Nelle ultime settimane ho ricevuto diversi messaggi da colleghi che hanno usato le mie Quick Reference in classe, adattandole ai propri contesti e ai bisogni degli studenti. Alcuni mi hanno raccontato di versioni semplificate per le prime classi, altri di varianti “pronte all’uso” per il laboratorio di elettronica ma anche di attività di coding e tinkering.
Grazie di cuore: i vostri riscontri e le vostre personalizzazioni sono la prova che ciò che scrivo può essere utile soprattutto quando si passa dalla teoria alla pratica.

Ricevendo i vostri messaggi, ho maturato l’idea di una nuova serie di Quick Reference focalizzata sulle attività di laboratorio, l’ambito che vivo di più ogni giorno.

Obiettivi principali che mi sono prefisso:

  • Passi chiari e sequenziali: dall’allestimento alla verifica finale.
  • Formato stampabile e proiettabile: A4 per studenti + “slide” per la spiegazione.
  • Tempi e materiali in prima pagina per pianificare al volo.
  • Check-list sicurezza & inclusione.
  • Sezione “debug rapido”: errori tipici e fix da 30 secondi.
  • Compiti di realtà: piccole estensioni per consolidare fuori dall’aula.

Cosa uscirà nei prossimi giorni:

  • Scrivere una relazione tecnica
  • Presentazioni tecniche efficaci
  • Preparare un’esposizione orale
  • Calendar blocking settimanale
  • Nomi file & versioni come i pro
  • Prototipi hardware: sicurezza & ordine
  • Uso responsabile dell’AI a scuola
  • Zettelkasten “lite” per appunti
  • Kanban personale per lo studio

(L’ordine di uscita potrebbe essere diversa da quella indicata sopra)

Sono tutti in fase di realizzazione è l’idea è quella di includere: materiali, setup, procedura, varianti, sicurezza, errori frequenti, rubrica di valutazione essenziale, estensioni interdisciplinari, non so se riuscirò ad essere così dettagliato ma ci proverò.

Condivisione e contributi

Il progetto resta aperto e cresce con le vostre idee.
Se ritenete sentitevi liberi di inviare una vostra variante o un esempio da voi sviluppato, volentieri segnalerò con crediti i vostri contributi.

Grazie ancora 🙂

Lezione 11 – Corso di Elettronica Creativa con Arduino Sensor Kit

Accelerometro

L’accelerometro del Sensor Kit è un “sensore di movimento” a tre assi (X, Y, Z) capace di misurare come cambia la velocità di un oggetto nello spazio. Anche quando è fermo, l’accelerometro non rileva “zero accelerazione” in quanto misura la gravità terrestre, circa 1 g (≈ 9,81 m/s²). Questa caratteristica è utilissima perché ci permette sia di capire se e quanto ci stiamo muovendo, sia di stimare l’inclinazione del modulo rispetto alla verticale. In pratica: se appoggio la scheda piatta sul banco, il valore lungo Z sarà vicino a 1 g; se lo incliniamo, la gravità si “ridistribuisce” tra X e Y e possiamo ricavare l’angolo di inclinazione.

Con i dati che fornisce l’accelerometro possiamo fare molte cose: visualizzare scosse e vibrazioni (come un mini sismografo), creare un avviso di caduta, progettare giochi di equilibrio o semplicemente tracciare i movimenti sulla Serial Plotter. In questa lezione impareremo a leggere le tre componenti, a filtrare il rumore e a trasformare quei numeri in azioni concrete (LED, buzzer, messaggi su OLED).

Un briciolo di teoria

L’accelerometro misura accelerazioni lungo X, Y, Z e come dicevo sopra, da fermo “vede” la gravità (~1 g ≈ 9,81 m/s²).

Il modulo del vettore accelerazione è:

Con il dispositivo quasi fermo, possiamo stimare l’inclinazione rispetto alla verticale usando solo la gravità:

che rappresenta l’angolo rispetto all’asse Z (in gradi).

Caratteristiche tecniche (per i più esperti)

  • Tipo sensore: MEMS accelerometro triassiale digitale.
  • Interfacce: I²C e SPI digitali (il modulo Grove è normalmente usato in I²C sul Sensor Kit).
  • Indirizzo I²C: di default 0x19, commutabile a 0x18 (pin SA0/SDO a GND).
  • Campo di misura (full-scale): ±2 g, ±4 g, ±8 g, ±16 g (selezionabile via registro).
  • Risoluzione dati: uscita fino a 16-bit; modalità operative low-power/normal/high-resolution (fino a 12-bit effettivi).
  • Frequenza di campionamento (ODR): da 1 Hz fino a 5.3 kHz (a seconda della modalità).
  • Funzioni integrate:
    • 2 generatori di interrupt programmabili (motion, free-fall, wake-up).
    • Rilevamento orientamento 6D/4D, self-test, FIFO 32 campioni.
  • Alimentazione (chip): 1.71–3.6 V; consumo molto basso (fino a ~2 µA in ultra-low-power). Il modulo Grove è compatibile 3 V / 5 V.
  • Intervallo di temperatura operativa: −40 °C … +85 °C.

Informazioni utili per l’uso nell’Arduino Sensor Kit

  • Con la libreria Arduino_SensorKit.h leggete le tre componenti con Accelerometer.readX() / readY() / readZ(); i valori restituiti sono interpretati in g (gravità ≈ 1 g a riposo).
  • Il modulo Grove usato nel Sensor Kit documenta esplicitamente indirizzi I²C, range e compatibilità 3V/5V, utile se sorgono conflitti su bus I²C o serve cambiare indirizzo.

Collegamenti

Per quanto riguarda i collegamenti è sufficiente connettere il sensore ad uno degli ingressi I²C della Base Shield.

Esempio 01 – Lettura accelerometro 3 assi

/*
  Prof. Maffucci Michele
  02.10.2025
  Lettura accelerometro 3 assi – Arduino Sensor Kit
*/

#include <Arduino_SensorKit.h>   // Libreria unica per i moduli del Sensor Kit

const unsigned long intervalloMs = 500;  // intervallo tra una stampa e la successiva

void setup() {
  // Inizializzazione porta seriale per inviare i dati al PC
  Serial.begin(9600);

  // ATTENZIONE:
  // while(!Serial); serve ad ASPETTARE che il monitor seriale sia stato aperto
  // (utile sulle schede con USB nativa, esempio: Arduino UNO R4 WiFi, Leonardo, MKR).
  // Così non "perdi" le prime stampe.
  // Su schede senza USB nativa non è necessario e puoi rimuoverlo.
  while (!Serial) { ; }

  // Avvio dell'accelerometro a 3 assi
  Accelerometer.begin();
}

void loop() {
  // Lettura delle tre componenti di accelerazione (in g)
  float accelX = Accelerometer.readX();  // Asse X
  float accelY = Accelerometer.readY();  // Asse Y
  float accelZ = Accelerometer.readZ();  // Asse Z

  // Stampa in formato semplice: x:..  y:..  z:..
  Serial.print("x: "); 
  Serial.print(accelX, 3);   // 3 decimali per leggibilità
  Serial.print("  ");

  Serial.print("y: "); 
  Serial.print(accelY, 3);
  Serial.print("  ");

  Serial.print("z: "); 
  Serial.println(accelZ, 3);

  delay(intervalloMs);
}

Esempio 02: Accelerometro – Stampa su Serial Monitor e display OLED

Visualizzazione delle componenti x, y e z dell’accelerazione su Serial Monitor e display OLED

/*
  Prof. Maffucci Michele
  02.10.2025
  Lettura accelerometro 3 assi – Arduino Sensor Kit
  Stampa su Serial Monitor e display Oled
*/

#include <Arduino_SensorKit.h>  // Libreria unica per i moduli del Sensor Kit

const unsigned long intervalloMs = 500;  // intervallo tra una stampa e la successiva

void setup() {
  // Inizializzazione porta seriale per inviare i dati al PC
  Serial.begin(9600);

  // ATTENZIONE:
  // while(!Serial); serve ad ASPETTARE che il monitor seriale sia stato aperto
  // (utile sulle schede con USB nativa, esempio: Arduino UNO R4 WiFi, Leonardo, MKR).
  // Così non "perdi" le prime stampe.
  // Su schede senza USB nativa non è necessario e puoi rimuoverlo.
  while (!Serial) { ; }

  // Avvio dell'accelerometro a 3 assi
  Accelerometer.begin();
  Oled.begin();
  // Inizializza il display OLED.
  // Fa partire la comunicazione I2C e manda al display la sequenza di avvio.
  // Senza questa riga lo schermo non mostra nulla.

  Oled.setFlipMode(true);
  // Ruota il contenuto di 180° (utile se lo vedi capovolto).
  // Se nel tuo caso appare già dritto, puoi mettere false: Oled.setFlipMode(false);

  Oled.setFont(u8x8_font_chroma48medium8_r);
  // Sceglie il font (carattere) 8x8.
  // Con un font 8x8 il display 128x64 si comporta come una griglia 16 colonne × 8 righe.
  // Significa che setCursor(colonna, riga) userà numeri tra 0..15 (colonne) e 0..7 (righe).

  Oled.clear();
  // Pulisce lo schermo (cancella tutto quello che c’era prima).
}

void loop() {
  // Lettura delle tre componenti di accelerazione (in g)
  float accelX = Accelerometer.readX();  // Asse X
  float accelY = Accelerometer.readY();  // Asse Y
  float accelZ = Accelerometer.readZ();  // Asse Z

  // Stampa in formato semplice: x:..  y:..  z:..
  Serial.print("x: ");      // stampa la stringa x: su Serial Monitor
  Serial.print(accelX, 3);  // 3 decimali per leggibilità
  Serial.print("  ");

  Serial.print("y: ");      // stampa la stringa y: su Serial Monitor
  Serial.print(accelY, 3);  // 3 decimali per leggibilità
  Serial.print("  ");

  Serial.print("z: ");        // stampa la stringa z: su Serial Monitor
  Serial.println(accelZ, 3);  // 3 decimali per leggibilità

  Oled.setCursor(0, 0);           // colonna 0, riga 0
  Oled.println("ACCELERAZIONE");  // stampa la stringa e va a capo

  Oled.setCursor(0, 2);   // colonna 0, riga 2
  Oled.print("x: ");      // stampa la stringa x:
  Oled.print(accelX, 3);  // stampa la componente x dell'accelerazione con 3 cifre decimali

  Oled.setCursor(0, 3);   // colonna 0, riga 3
  Oled.print("y: ");      // stampa la stringa y:
  Oled.print(accelY, 3);  // stampa la componente y dell'accelerazione con 3 cifre decimali
  Oled.refreshDisplay();

  Oled.setCursor(0, 4);   // colonna 0, riga 4
  Oled.print("z: ");      // stampa la stringa z:
  Oled.print(accelZ, 3);  // stampa la componente z dell'accelerazione con 3 cifre decimali
  Oled.refreshDisplay();

  delay(intervalloMs);
}

Esempio 03: Accelerometro – Uscita per Serial Plotter (3 curve: X, Y, Z)

Stampa i tre assi con etichette e tab in un’unica riga per campione, in questo modo l’IDE mostra tre curve (X, Y, Z).

/*
  Prof. Maffucci Michele
  02.10.2025
  Accelerometro – Uscita per Serial Plotter (3 curve: X, Y, Z)

  Nota: una riga = un campione; valori etichettati e separati da TAB -> 3 curve nel Plotter.
*/

#include <Arduino_SensorKit.h&gt

const unsigned long periodoCampionamentoMs = 10;  // circa 100 Hz (riduci/aumenta a piacere)

void setup() {
  Serial.begin(115200);
  // Attende l'apertura del Monitor/Plotter Seriali sulle schede con USB nativa
  while (!Serial) { ; }

  Accelerometer.begin();

  // Messaggio di avvio (facoltativo)
  Serial.println("Traccio X,Y,Z (g) - dati GREZZI (nessun filtro)");
}

void loop() {
  // Letture grezze in g
  float x = Accelerometer.readX();
  float y = Accelerometer.readY();
  float z = Accelerometer.readZ();

  // Stampa “label:valore” separati da TAB → il Plotter disegna tre curve
  Serial.print("X:");
  Serial.print(x, 3);
  Serial.print('\t');
  Serial.print("Y:");
  Serial.print(y, 3);
  Serial.print('\t');
  Serial.print("Z:");
  Serial.println(z, 3);

  delay(periodoCampionamentoMs);
}

Versione per esperti

Esempio 04: Accelerometro – Uscita per Serial Plotter (3 curve: X, Y, Z) con filtro passa-basso

Come avete potuto notare nella versione precedente le curve delle tre componenti dell’accelerazione erano seghettate e venivano rappresentate anche piccoli tremolii.

Per evitare questo problema useremo nello sketch che segue un filtro IIR (passa-basso) che smusserà il rumore.

Quali sono i vantaggi nell’utilizzo di un filtro passa basso:

  • Rumore: piccole variazioni veloci e indesiderate nei dati (tremolio della mano, vibrazioni del banco, disturbi elettrici).
  • Passa-basso: un filtro che lascia passare i cambiamenti lenti (il “trend” reale del movimento) e attenua i cambiamenti veloci (dovuti al rumore).
  • IIR (Infinite Impulse Response): significa che l’uscita del filtro dipende sia dal valore attuale sia dall’uscita precedente. In pratica: il filtro “ricorda” un po’ del passato -> è una media mobile esponenziale.

Formule per ogni asse:

uscita_filtrata(t) = α * ingresso(t) + (1−α) * uscita_filtrata(t−1)

α è un numero tra 0 e 1:

  • α piccolo (es. 0.1) > molto liscio (tanto filtraggio) ma più lento a seguire i cambiamenti.
  • α grande (es. 0.6) > meno liscio (meno filtraggio) ma più reattivo.

In sintesi:
scegliere α in base al compromesso “più liscio vs più rapido”.

/*
  Prof. Maffucci Michele
  02.10.2025
  Accelerometro - Uscita per Serial Plotter (3 curve: X, Y, Z) con filtro IIS (passa-basso)

  Note:
  - Il Serial Plotter IDE riconosce coppie "etichetta:valore" sulla stessa riga,
    separate da TAB. Ogni riga = un campione nel tempo.
*/

#include <Arduino_SensorKit.h&gt

const unsigned long periodoCampionamentoMs = 10;  // circa 100 Hz
const bool usaFiltro = true;                      // metti false se vuoi i dati grezzi
const float alfa = 0.2;                           // 0..1 (più piccolo = più filtrato)

float xF = 0, yF = 0, zF = 0;  // stati del filtro

void setup() {
  Serial.begin(115200);

  // Serve ad attendere l'apertura del Monitor/Plotter Seriali sulle schede con USB nativa,
  // così non perdete le prime stampe (su UNO "classico" puoi toglierlo senza problemi).
  while (!Serial) { ; }

  Accelerometer.begin();

  // (Facoltativo) riga di "header" informale: non necessaria, ma utile a chi guarda il log
  Serial.println("Pronto: traccio X,Y,Z (g) su Serial Plotter");
}

void loop() {
  // Letture in g
  float x = Accelerometer.readX();
  float y = Accelerometer.readY();
  float z = Accelerometer.readZ();

  if (usaFiltro) {
    // Filtro IIR (passa-basso) molto semplice per smussare il rumore
    xF = alfa * x + (1.0f - alfa) * xF;
    yF = alfa * y + (1.0f - alfa) * yF;
    zF = alfa * z + (1.0f - alfa) * zF;

    // Stampa "label:valore" separati da TAB > tre curve nel Plotter
    Serial.print("X:");
    Serial.print(xF, 3);
    Serial.print('\t');
    Serial.print("Y:");
    Serial.print(yF, 3);
    Serial.print('\t');
    Serial.print("Z:");
    Serial.println(zF, 3);
  } else {
    Serial.print("X:");
    Serial.print(x, 3);
    Serial.print('\t');
    Serial.print("Y:");
    Serial.print(y, 3);
    Serial.print('\t');
    Serial.print("Z:");
    Serial.println(z, 3);
  }

  delay(periodoCampionamentoMs);
}

Analizziamo nel dettaglio la parte del filtro.

xF = alfa * x + (1.0f - alfa) * xF;
yF = alfa * y + (1.0f - alfa) * yF;
zF = alfa * z + (1.0f - alfa) * zF;

xF = alfa * x + (1.0f - alfa) * xF;

  • x è il dato grezzo appena letto dall’accelerometro sull’asse X.
  • xF è il dato filtrato (uscita del filtro) per l’asse X.
  • alfa * x prende una frazione del dato nuovo (quanto “peso” dai alla misura attuale).
  • (1.0f - alfa) * xF prende una frazione del valore filtrato precedente (la “memoria”).
  • La somma dei due termini fornisce un valore ammorbidito: meno sensibile ai picchi improvvisi.

Nota sul suffisso f: indica un float letterale (utile per evitare promozioni a double in alcune piattaforme).

yF = alfa * y + (1.0f - alfa) * yF;

  • Identico ragionamento, ma applicato all’asse Y: nuova misura y + memoria del filtrato yF.
  • Mantieni alfa uguale sugli assi per coerenza visiva nel Plotter.

zF = alfa * z + (1.0f - alfa) * zF;

  • Stessa cosa per l’asse Z: la componente verticale (spesso contiene circa 1 g).
  • Filtrare Z aiuta a vedere meglio oscillazioni lente e a ridurre tremolii.

Qualche nota pratica

  1. Inizializzazione: se impostate xF = yF = zF = 0 all’inizio, i primi campioni possono “salire” gradualmente verso il valore reale (breve transitorio). Se volete partire subito “allineati”, potete inizializzare xF=yF=zF al primo dato letto.
  2. Scelta di alfa:
    0.1-0.3 > grafico molto liscio (meno rumore), risposta più lenta.
    0.4-0.7 > più reattivo, ma un po’ più “seghettato”.

Buon Coding a tutti 🙂