Esperimenti di scienze con Arduino: raccogliere dati con sensori
Esperimenti di scienze con Arduino: 3 esperimenti pronti con DS18B20, LDR e HC-SR04, codice CSV, Plotter seriale, tabella, grafico e scaletta di 2 lezioni.
Per fare esperimenti di scienze con Arduino servono sei passi: gli studenti scrivono prima una domanda misurabile e un'ipotesi, poi collegano il sensore adatto ad Arduino; la scheda scrive ogni misura con il suo istante nel formato "zaman_ms,deger" (tempo in millisecondi, valore) sulla porta seriale, la curva si segue dal vivo nel Plotter seriale, le righe del monitor seriale vengono copiate e importate come file CSV in un foglio di calcolo, dalla tabella si costruisce il grafico e il grafico viene confrontato con l'ipotesi per scrivere la conclusione. A differenza della misura a mano con termometro e cronometro, Arduino raccoglie 60 punti in 10 minuti a intervalli regolari, senza stancarsi e senza errori di lettura. Così il lavoro dello studente non è trascrivere valori, ma interpretare i dati.
In questo articolo trovi tre esperimenti pronti adatti alle lezioni di scienze, fisica e biologia: la curva di raffreddamento dell'acqua calda con il DS18B20, la variazione dell'intensità luminosa con la distanza con una LDR e il moto su un piano inclinato con l'HC-SR04 (più, come extra, la misura della velocità del suono). Per ogni esperimento sono pronti domanda, variabili, materiali, schema dei collegamenti, codice compilabile, modello di tabella dati e risultato atteso. Seguono i passaggi per il Plotter seriale e l'esportazione dei dati, una tabella su errori di misura e calibrazione, una scaletta di 2 × 40 minuti, un breve modello di relazione di laboratorio e le note di sicurezza. Gli esempi partono da questa ipotesi: supponiamo che tu abbia una classe di 24 studenti divisi in 6 gruppi da 4, e che ogni gruppo abbia un Arduino Uno e un computer. Qui non entriamo nei dettagli di collegamento dei sensori; per ciascuno trovi il link alla sua guida quando serve.
Esperimenti di scienze con Arduino in 6 passi: dalla domanda alla conclusione
- Domanda e ipotesi: scegli una domanda misurabile ("L'acqua calda si raffredda più in fretta nei primi 5 minuti o nei 5 successivi?") e fai scrivere l'ipotesi con lo schema "Se … allora … perché …". L'ipotesi deve contenere una direzione o un numero; dire "cambia" non basta.
- Variabili: fai scrivere in tabella la variabile indipendente (quella che cambi tu: tempo, distanza, inclinazione), la variabile dipendente (quella misurata dal sensore: temperatura, luce, posizione) e le variabili controllate (quantità d'acqua, stessa torcia, stessa tavola). Quando un esperimento non riesce, la causa è spesso una variabile che non è stata tenuta costante.
- Sensore e codice: collega il sensore e carica il codice. Il codice scrive ogni riga nel formato "zaman_ms,deger"; la prima riga è l'intestazione con i nomi delle colonne. Il tempo lo tiene la scheda con il suo contatore millis(), il cronometro non serve.
- Osservazione dal vivo: prima della registrazione vera segui una breve prova nel Plotter seriale. Se la curva fa salti strani (cavo allentato, ombra, contatto con la mano) correggi subito; accorgersene a misura finita è troppo tardi.
- Dati e tabella: copia le righe del monitor seriale, salvale come file .csv, importale nel foglio di calcolo e aggiungi la conversione di unità (ms → s) e le colonne di calcolo.
- Grafico e conclusione: traccia un grafico XY (a dispersione), scrivi nome e unità sugli assi, confronta il grafico con l'ipotesi e scrivi la conclusione con una frase basata sui dati: "La nostra ipotesi è stata confermata oppure no, perché …".
Elenco dei materiali e schema dei collegamenti
| Materiale | Per gruppo | Totale classe (6 gruppi) | Esperimento |
|---|---|---|---|
| Arduino Uno + cavo USB | 1 | 6 | Tutti |
| Computer (con Arduino IDE installato) | 1 | 6 | Tutti |
| Breadboard + 10 cavetti jumper maschio-maschio | 1 set | 6 set | Tutti |
| Sonda DS18B20 impermeabile + resistenza da 4,7 kΩ | 1 + 1 | 6 + 6 | 1 Raffreddamento |
| Tazza resistente al calore (circa 250 mL) + misurino | 1 + 1 | 6 + 6 | 1 Raffreddamento |
| Acqua calda (circa 60 °C, distribuita dall'insegnante) | 200 mL | 1,2 L + scorta | 1 Raffreddamento |
| LDR + resistenza da 10 kΩ | 1 + 1 | 6 + 6 | 2 Luce |
| Piccola torcia LED o torcia del telefono + metro a nastro | 1 + 1 | 6 + 6 | 2 Luce |
| Sensore di distanza HC-SR04 | 1 | 6 | 3 Moto |
| Tavola liscia da 1–1,5 m, 2–3 libri, macchinina + cartoncino 10 × 10 cm | 1 set | 6 set | 3 Moto |
| Termometro da laboratorio (per il confronto) | — | 1 | Calibrazione |
| Esperimento | Sensore | Collegamento ad Arduino Uno | Componenti extra e note |
|---|---|---|---|
| 1 Raffreddamento | Sonda DS18B20 | Rosso → 5V, nero → GND, giallo (DQ) → D2 | Resistenza da 4,7 kΩ tra filo giallo e 5V; librerie OneWire e DallasTemperature |
| 2 Luce | LDR | Un piedino → 5V, l'altro → A0 | Resistenza da 10 kΩ tra A0 e GND (partitore di tensione); nessuna libreria |
| 3 Moto e suono | HC-SR04 | VCC → 5V, GND → GND, Trig → D9, Echo → D10 | Nessun componente extra; il cono di circa 15° davanti al sensore deve restare libero |
Esperimento 1: la curva di raffreddamento dell'acqua calda (DS18B20)

Domanda: l'acqua calda perde ogni minuto la stessa quantità di calore o il raffreddamento rallenta via via? Esempio di ipotesi: "Quando la differenza di temperatura tra acqua e stanza è grande il raffreddamento è rapido, quando la differenza diminuisce rallenta." Variabile indipendente il tempo, variabile dipendente la temperatura dell'acqua; variabili controllate quantità d'acqua (200 mL), tipo di recipiente, posizione sul banco e temperatura della stanza. Puoi dare ai gruppi anche una seconda domanda: c'è differenza tra tazza con e senza coperchio, oppure tra bicchiere di vetro e di carta? In quel caso la variabile indipendente diventa il tipo di recipiente, due gruppi misurano contemporaneamente e confrontano le curve. Per collegamento e installazione delle librerie guarda la guida al DS18B20. Se hai solo un DHT11 non immergerlo mai in acqua: l'esperimento equivalente e sicuro con il DHT11 è scaldare il sensore nel palmo per un minuto, posarlo sul banco e misurare come si raffredda all'aria (guida al DHT11).
1// Deney 1: Sıcak suyun soğuma eğrisi / Experiment 1: cooling curve of hot water
2// Kütüphaneler: OneWire + DallasTemperature / Libraries: OneWire + DallasTemperature
3#include <OneWire.h>
4#include <DallasTemperature.h>
5
6const int ONE_WIRE_PIN = 2; // DS18B20 veri (DQ) pini / data (DQ) pin
7const unsigned long INTERVAL_MS = 10000; // 10 saniyede bir ölçüm / one reading every 10 s
8const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
9
10OneWire oneWire(ONE_WIRE_PIN);
11DallasTemperature sensors(&oneWire);
12unsigned long startMs = 0;
13unsigned long lastMs = 0;
14
15void setup() {
16 Serial.begin(9600);
17 sensors.begin();
18 if (!PLOTTER_MODE) {
19 Serial.println("zaman_ms,sicaklik_C"); // CSV başlık satırı / CSV header line
20 }
21 startMs = millis();
22 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
23}
24
25void loop() {
26 unsigned long now = millis();
27 if (now - lastMs < INTERVAL_MS) {
28 return; // daha zamanı gelmedi / not time yet
29 }
30 lastMs += INTERVAL_MS; // kaymayan zamanlama / drift-free timing
31
32 sensors.requestTemperatures(); // ölçümü başlat (~750 ms) / start conversion (~750 ms)
33 float tempC = sensors.getTempCByIndex(0);
34 if (tempC == DEVICE_DISCONNECTED_C) { // sensör yanıt vermedi / sensor did not respond
35 return;
36 }
37
38 if (PLOTTER_MODE) {
39 Serial.print("sicaklik_C:");
40 Serial.println(tempC, 2);
41 } else {
42 Serial.print(now - startMs); // deney başından beri ms / ms since start
43 Serial.print(",");
44 Serial.println(tempC, 2);
45 }
46}| Tempo (s) | Temperatura acqua T (°C) | Temperatura stanza T_amb (°C) | Differenza ΔT = T − T_amb (°C) | Frazione rimasta ΔT / ΔT₀ |
|---|---|---|---|---|
| 0 | … | … | … | 1,00 |
| 60 | … | … | … | … |
| 120 | … | … | … | … |
| 300 | … | … | … | … |
| 600 | … | … | … | … |
| 900 | … | … | … | … |
| 1200 | … | … | … | … |
Il codice scrive una riga ogni 10 secondi; 20 minuti di misura fanno 120 righe (sicaklik_C è la temperatura in °C). Il tempo arriva dal contatore millis() della scheda e, poiché alla variabile lastMs si aggiungono ogni volta esattamente 10 000 ms, le misure non slittano nel tempo; la tecnica è spiegata nell'articolo su millis() e delay(). Se all'inizio del codice imposti PLOTTER_MODE a true, la colonna del tempo sparisce e il Plotter seriale disegna solo la temperatura. Il modello qui sopra è la tabella riassuntiva per la relazione, i dati completi restano nel file CSV; misura la temperatura della stanza all'inizio, con lo stesso sensore in aria. Risultato atteso: la curva non è una retta ma si appiattisce sempre di più: nei primi minuti la temperatura scende in fretta, poi la discesa rallenta. È la legge di raffreddamento di Newton: la velocità di raffreddamento è proporzionale alla differenza di temperatura tra corpo e ambiente. Gli studenti che calcolano l'ultima colonna vedono che la differenza diminuisce circa della stessa frazione in intervalli uguali; supponiamo che nei primi 8 minuti si sia dimezzata: negli 8 minuti successivi si dimezzerà di nuovo. La tazza con coperchio si raffredda più lentamente, perché si perde meno calore per evaporazione. In biologia lo stesso esperimento, ripetuto con recipienti piccoli e grandi, porta a discutere perché gli animali piccoli perdono calore più in fretta.
Esperimento 2: intensità luminosa e distanza (LDR)

Domanda: come diminuisce l'intensità luminosa allontanandosi da una sorgente; se la distanza raddoppia, la luce si dimezza o diventa un quarto? Esempio di ipotesi: "Se la distanza raddoppia, l'intensità luminosa diventa un quarto." Variabile indipendente la distanza della torcia dalla LDR (10, 15, 20, 30, 40 e 50 cm), variabile dipendente il valore letto su A0; variabili controllate stessa torcia, stessa pila, torcia rivolta perpendicolarmente alla LDR e luce ambiente. Fai l'esperimento in un'aula con le tende chiuse e, se possibile, luci abbassate; con molta luce ambiente il contributo della torcia sparisce alle distanze maggiori. Con questo collegamento il valore letto cresce quando la luce aumenta; la logica del partitore di tensione è spiegata nella guida alla LDR. Fai scorrere la torcia lungo il metro, a ogni distanza aspetta 5 secondi che il valore si stabilizzi e annota in tabella tre valori consecutivi del monitor seriale. All'inizio fai una misura con la torcia spenta: è il valore di fondo dell'ambiente. Se il valore alla distanza massima è molto vicino al fondo, escludi quella distanza dal grafico.
1// Deney 2: Işık şiddeti ve mesafe / Experiment 2: light intensity and distance
2// Bağlantı: 5V - LDR - A0 - 10 kΩ - GND / Wiring: 5V - LDR - A0 - 10 kΩ - GND
3const int LDR_PIN = A0; // bölücünün orta noktası / divider midpoint
4const unsigned long INTERVAL_MS = 500; // yarım saniyede bir satır / one line every 0.5 s
5const int SAMPLES = 16; // ortalama için örnek sayısı / samples per average
6const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11int readAverage() {
12 long sum = 0;
13 for (int i = 0; i < SAMPLES; i++) {
14 sum += analogRead(LDR_PIN); // 0 (karanlık) ... 1023 (aydınlık) / dark ... bright
15 delay(2);
16 }
17 return (int)(sum / SAMPLES); // gürültüyü azaltır / reduces noise
18}
19
20void setup() {
21 Serial.begin(9600);
22 if (!PLOTTER_MODE) {
23 Serial.println("zaman_ms,ldr_ham"); // CSV başlık satırı / CSV header line
24 }
25 startMs = millis();
26 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
27}
28
29void loop() {
30 unsigned long now = millis();
31 if (now - lastMs < INTERVAL_MS) {
32 return;
33 }
34 lastMs += INTERVAL_MS;
35
36 int raw = readAverage();
37 if (PLOTTER_MODE) {
38 Serial.print("ldr_ham:");
39 Serial.println(raw);
40 } else {
41 Serial.print(now - startMs); // deney başından beri ms / ms since start
42 Serial.print(",");
43 Serial.println(raw);
44 }
45}| Distanza d (cm) | 1 / d² (1/cm²) | Misura 1 | Misura 2 | Misura 3 | Media grezza | Resistenza LDR (Ω) |
|---|---|---|---|---|---|---|
| Torcia spenta | — | … | … | … | … | … |
| 10 | 0,0100 | … | … | … | … | … |
| 15 | 0,0044 | … | … | … | … | … |
| 20 | 0,0025 | … | … | … | … | … |
| 30 | 0,0011 | … | … | … | … | … |
| 40 | 0,0006 | … | … | … | … | … |
| 50 | 0,0004 | … | … | … | … | … |
Ogni mezzo secondo il codice scrive la media di 16 letture (ldr_ham è il valore grezzo); le piccole oscillazioni di una singola analogRead si smorzano. Per calcolare la resistenza della LDR, se la media grezza è nella colonna F, scrivi in G la formula =10000*(1023-F3)/F3 e trascinala verso il basso (vale per resistenza fissa da 10 kΩ e LDR collegata a 5V). Risultato atteso: con la distanza il valore letto diminuisce, in fretta da vicino e lentamente da lontano. Però passando da 10 a 20 cm il valore grezzo non diventa un quarto, perché il numero grezzo non è l'intensità luminosa ma corrisponde alla tensione del partitore. Per vedere la legge dell'inverso del quadrato metti distanza e resistenza della LDR in un grafico con entrambi gli assi logaritmici: i punti si dispongono circa su una retta. L'intensità luminosa è inversamente proporzionale al quadrato della distanza e la resistenza della LDR è circa inversamente proporzionale alla potenza γ dell'intensità; per questo la pendenza della retta non risulta 2 ma 2 × γ. Nelle LDR comuni γ è di solito tra 0,5 e 0,9, quindi ci si aspetta una pendenza tra 1 e 1,8. Nella fisica delle superiori è una buona occasione per discutere come il comportamento dello strumento di misura influisce sul risultato.
Esperimento 3: moto sul piano inclinato e velocità del suono (HC-SR04)

Domanda: una macchinina lasciata su un piano inclinato scende a velocità costante o accelera sempre di più? Come cambia l'accelerazione se aumenta l'inclinazione? Esempio di ipotesi: "In tempi uguali la macchinina percorre tratti sempre più lunghi, cioè accelera; con più inclinazione accelera di più." Variabile indipendente il tempo (nel secondo giro l'inclinazione: 1, 2 e 3 libri), variabile dipendente la distanza della macchinina dal sensore; variabili controllate macchinina, punto di partenza e tavola. Preparazione: alza un'estremità di una tavola liscia da 1–1,5 m con dei libri e metti l'HC-SR04 all'estremità bassa, rivolto verso la tavola. Incolla sul retro della macchinina un cartoncino da 10 × 10 cm: il sensore non riceve un'eco affidabile da oggetti piccoli e rotondi, mentre un cartoncino piatto dà un'eco forte. Tieni la macchinina a circa 100 cm dal sensore, lasciala andare e metti un libro davanti al sensore perché la macchinina non lo urti. Principio di funzionamento e portata del sensore sono nella guida all'HC-SR04.
1// Deney 3: Eğik düzlemde hareket ve ses hızı / Experiment 3: motion on a ramp and speed of sound
2const int TRIG_PIN = 9; // tetik / trigger
3const int ECHO_PIN = 10; // yankı / echo
4const unsigned long INTERVAL_MS = 60; // ölçümler arası en az ~60 ms / at least ~60 ms between pings
5const bool PLOTTER_MODE = false; // true: Serial Plotter için yalnız değer / value only for Serial Plotter
6const bool RAW_ECHO_US = false; // true: ses hızı deneyi için yankı süresi (µs) / echo time for speed of sound
7
8unsigned long startMs = 0;
9unsigned long lastMs = 0;
10
11void setup() {
12 pinMode(TRIG_PIN, OUTPUT);
13 pinMode(ECHO_PIN, INPUT);
14 digitalWrite(TRIG_PIN, LOW);
15 Serial.begin(9600);
16 if (!PLOTTER_MODE) {
17 Serial.println(RAW_ECHO_US ? "zaman_ms,yanki_us" : "zaman_ms,mesafe_cm"); // CSV başlığı / CSV header
18 }
19 startMs = millis();
20 lastMs = startMs - INTERVAL_MS; // ilk ölçüm hemen / first reading right away
21}
22
23void loop() {
24 unsigned long now = millis();
25 if (now - lastMs < INTERVAL_MS) {
26 return;
27 }
28 lastMs += INTERVAL_MS;
29
30 digitalWrite(TRIG_PIN, LOW);
31 delayMicroseconds(2);
32 digitalWrite(TRIG_PIN, HIGH); // 10 µs tetik darbesi / 10 µs trigger pulse
33 delayMicroseconds(10);
34 digitalWrite(TRIG_PIN, LOW);
35
36 unsigned long echoUs = pulseIn(ECHO_PIN, HIGH, 25000UL); // en fazla 25 ms (~4 m) / max 25 ms (~4 m)
37 if (echoUs == 0) { // yankı yok, satırı atla / no echo, skip the line
38 return;
39 }
40 float distanceCm = echoUs * 0.0343 / 2.0; // 343 m/s, gidiş-dönüş / round trip
41
42 if (PLOTTER_MODE) {
43 Serial.print("mesafe_cm:");
44 Serial.println(distanceCm, 1);
45 } else {
46 Serial.print(now - startMs); // deney başından beri ms / ms since start
47 Serial.print(",");
48 if (RAW_ECHO_US) {
49 Serial.println(echoUs);
50 } else {
51 Serial.println(distanceCm, 1);
52 }
53 }
54}| Colonna | Intestazione | Contenuto o formula | Cosa mostra? |
|---|---|---|---|
| A | zaman_ms | Arriva dal CSV | Tempo trascorso dall'inizio dell'esperimento |
| B | mesafe_cm | Arriva dal CSV | Distanza della macchinina dal sensore |
| C | zaman_s | =A2/1000 | Asse orizzontale del grafico |
| D | yol_cm | =B$2-B2 | Spazio percorso dal punto di partenza |
| E | hiz_cm_s | =(D7-D2)/(C7-C2), da E7 in giù | Velocità media su circa 0,3 s |
| F | kosul | 1, 2 o 3 libri | A quale prova appartiene la riga |
Il codice scrive una riga ogni 60 ms, cioè circa 16 righe al secondo; questo intervallo è consigliato perché le eco dell'HC-SR04 non si sovrappongano. Se l'eco non torna (oggetto fuori portata o inclinato) la riga viene saltata. Calcola la velocità non tra due righe consecutive ma a distanza di 5 righe: su intervalli di 60 ms anche un'oscillazione di misura di 1–2 mm fa ballare molto la velocità. Risultato atteso: il grafico posizione-tempo non è una retta ma una curva sempre più ripida (una parabola); il grafico velocità-tempo invece è circa una retta, cioè la macchinina accelera in modo costante e la pendenza della retta dà l'accelerazione. Su un piano inclinato senza attrito l'accelerazione sarebbe g × sin θ: con una tavola da 1,5 m alzata di 10 cm sin θ ≈ 0,067 e l'accelerazione è circa 65 cm/s². Se il valore misurato è più piccolo, dipende dall'attrito e dalla rotazione delle ruote, e va scritto nella relazione come fonte di errore. Variante velocità del suono: imposta RAW_ECHO_US a true, metti un cartoncino piatto davanti al sensore a 20, 40, 60, 80 e 100 cm e calcola a ogni distanza la media del tempo di eco. Nel grafico con il percorso di andata e ritorno (2 × d) sull'asse orizzontale e il tempo sull'asse verticale, la pendenza è 1/v; v risulta intorno a 340 m/s a temperatura ambiente e cresce con la temperatura (circa v ≈ 331 + 0,6 × T m/s). Il metodo della pendenza elimina da solo anche il ritardo fisso interno del sensore.
Plotter seriale ed esportazione dei dati in tabella
- Dopo il caricamento apri Strumenti > Monitor seriale e imposta la velocità a 9600 baud come nel codice. Il pulsante del timestamp deve essere disattivato; se è attivo, all'inizio di ogni riga viene aggiunta l'ora del computer e il CSV si rovina.
- Prima di iniziare la misura cancella l'output e premi il pulsante RESET della scheda. Così il tempo parte da 0 e la prima riga è un'intestazione come zaman_ms,sicaklik_C.
- Per il grafico dal vivo imposta PLOTTER_MODE a true nel codice, ricarica e apri Strumenti > Plotter seriale. Il Plotter seriale non salva i dati, li mostra soltanto: usalo nella prova e, nel giro di registrazione, tieni PLOTTER_MODE a false.
- A misura finita seleziona con il mouse le righe del monitor seriale, dall'intestazione all'ultima riga, e copiale con Ctrl+C (Cmd+C su macOS). Incollale in un editor di testo semplice e salvale con un nome che contenga gruppo, esperimento e data, per esempio gruppo2-raffreddamento-0411.csv.
- Importa il file nel foglio di calcolo: in Excel con Dati > Da testo/CSV, in Fogli Google con File > Importa, in LibreOffice Calc aprendo direttamente il file. Scegli la virgola come separatore.
- Attenzione al separatore decimale: Arduino scrive con il punto, per esempio 23.50, mentre i fogli di calcolo in italiano si aspettano la virgola. In importazione scegli le impostazioni locali Inglese (Stati Uniti) oppure sostituisci i punti con virgole; altrimenti 23.50 viene letto come testo o come data e il grafico resta vuoto.
- Aggiungi le colonne di calcolo (ms → s, differenza, frazione, velocità) e traccia il grafico come grafico a dispersione XY. Il grafico a linee tratta l'asse orizzontale come categorie equidistanti e, se mancano righe, l'asse del tempo si deforma.
Un buon grafico di laboratorio si riconosce da quattro cose: variabile indipendente sull'asse orizzontale, variabile dipendente sull'asse verticale, nome e unità su entrambi gli assi ("Tempo (s)", "Temperatura (°C)") e un titolo che dica cosa mostra ("Raffreddamento di 200 mL d'acqua in una tazza senza coperchio"). Mostrare due condizioni nello stesso grafico con colori diversi (con e senza coperchio, 1 e 3 libri) permette il confronto a colpo d'occhio. Prima di guardare il grafico chiedi agli studenti di rispondere con uno schizzo su carta alla domanda "Se la nostra ipotesi è giusta, come deve apparire il grafico?"; mettere affiancati schizzo e grafico reale è il modo più semplice per scrivere la conclusione. La conclusione deve sempre poggiare su un numero: "Nei primi 5 minuti l'acqua si è raffreddata di … °C, nei 5 successivi di … °C." Come fissare la scala nel Plotter seriale e le regole per le etichette sono spiegate nella guida al Monitor seriale. Se non vuoi copiare a mano le misure lunghe puoi scrivere i dati direttamente su file con Python, e per misurare senza computer puoi fare una registrazione CSV con il modulo scheda SD.
Errori di misura e calibrazione
| Argomento | Cosa devi sapere | Cosa fare in classe |
|---|---|---|
| Precisione del DS18B20 | ±0,5 °C tra −10 e +85 °C; a 12 bit una misura richiede circa 750 ms. | Prima della misura metti tutte le sonde nello stesso recipiente con acqua e ghiaccio; annota la differenza da 0 °C e correggila in tabella. |
| Precisione del DHT11 | ±2 °C tra 0 e 50 °C; al massimo 1 misura al secondo, risposta lenta. | Non immergerlo, usalo solo per esperimenti in aria; non scendere sotto 1 secondo tra una misura e l'altra. |
| LDR | Non lineare, diversa da esemplare a esemplare; dopo un cambio di luce il valore impiega un po' a stabilizzarsi. | Usa la stessa LDR per tutto l'esperimento, aspetta 5 s a ogni distanza e interpreta il risultato solo all'interno dei dati del gruppo. |
| HC-SR04 | 2–400 cm, risoluzione circa 3 mm; la velocità del suono cambia di circa 0,6 m/s per ogni 1 °C; cono di circa 15°. | Controlla con il metro a 20 e 50 cm; il bersaglio sia piatto e perpendicolare al sensore, senza altri oggetti sul percorso. |
| Frequenza di campionamento | Misure troppo rade perdono la forma della curva, misure troppo fitte producono rumore e file inutilmente grandi. | Scegli in base alla durata del fenomeno: raffreddamento 10 s, luce 0,5 s, moto 60 ms. Punta ad almeno 20–30 punti per fenomeno. |
| Misure ripetute | Una misura sola può essere un caso; ripetere mostra quanto è affidabile il risultato. | Misura ogni condizione almeno 3 volte; riporta nella relazione la media e la differenza tra valore massimo e minimo (dispersione). |
| Tempo | Con il cronometro a mano il tempo di reazione umano è di circa 0,2 s. | Lascia il tempo al contatore millis() della scheda; usa il cronometro a mano solo come controllo. |
Scaletta: 2 lezioni da 40 minuti
La scaletta qui sotto vale per tutti e tre gli esperimenti; se le tue ore sono da 50 o 60 minuti, i minuti in più vanno bene per misure ripetute o per la discussione. La prima volta ti consigliamo di dare a tutti i gruppi l'Esperimento 1: è il più semplice da montare e, mentre la misura procede da sola, i gruppi possono preparare le tabelle. Quando la classe ha preso la mano puoi dividere i 6 gruppi in tre postazioni da due; se ogni esperimento lo fanno due gruppi, si possono anche confrontare i risultati. Caricare i codici sulle schede prima della lezione fa risparmiare 8–10 minuti della prima ora. Per ruoli e postazioni nelle classi numerose puoi leggere l'articolo sulle classi numerose, per materiali e disposizione dei banchi la guida al laboratorio scolastico.
| Lezione e minuti | Insegnante | Gruppi | Prodotto |
|---|---|---|---|
| 1ª lezione 0–5 | Apre la domanda con un'osservazione quotidiana: "Perché il tè si raffredda in fretta nei primi minuti?" | Scrivono la domanda sul quaderno, dicono le prime previsioni. | Domanda dell'esperimento |
| 1ª lezione 5–12 | Spiega lo schema dell'ipotesi e i tipi di variabili, assegna i ruoli: sperimentatore, tempo e controllo, responsabile dei dati, relatore. | Scrivono l'ipotesi e la tabella delle variabili. | Ipotesi e tabella delle variabili |
| 1ª lezione 12–20 | Mostra la tabella dei collegamenti; può aver caricato il codice in anticipo. | Montano il circuito, vedono nel monitor seriale l'intestazione e i primi valori. | Circuito funzionante |
| 1ª lezione 20–35 | Gira tra i gruppi e controlla le variabili controllate. | Misurano: 15 minuti per il raffreddamento, 7 condizioni × 3 ripetizioni per la luce, 3 inclinazioni × 3 prove per il moto. | Dati grezzi |
| 1ª lezione 35–40 | Ricorda la regola per i nomi dei file. | Copiano i dati, li salvano come .csv e li mettono nella cartella comune. | File CSV |
| 2ª lezione 0–10 | Mostra alla lavagna separatore decimale e passaggi di importazione. | Importano il CSV nel foglio di calcolo, aggiungono le colonne di calcolo. | Tabella ordinata |
| 2ª lezione 10–22 | Ricorda le regole per nome degli assi, unità e titolo. | Tracciano il grafico XY, lo confrontano con lo schizzo dell'ipotesi. | Grafico |
| 2ª lezione 22–32 | Chiede quali righe della tabella degli errori riguardano l'esperimento del gruppo. | Scrivono la conclusione e le fonti di errore. | Paragrafo di conclusione ed errori |
| 2ª lezione 32–37 | Guida il giro dei grafici. | Spiegano il grafico al gruppo vicino in 1 minuto e ricevono una domanda. | Feedback tra pari |
| 2ª lezione 37–40 | Pone due delle domande di uscita qui sotto. | Scrivono risposte brevi su un foglietto. | Biglietto di uscita |
- Quali erano la variabile indipendente e quella dipendente, quale variabile hai tenuto costante?
- In quale parte del grafico il cambiamento è più rapido, e da cosa lo capisci nel grafico?
- La tua ipotesi è stata confermata? Su quali due numeri basi la risposta?
- Se avessi misurato ogni 60 secondi invece che ogni 10, come sarebbe cambiato il grafico?
- Qual è stata la fonte di errore più grande, e cosa cambieresti rifacendo l'esperimento?
Valutazione: modello breve di relazione di laboratorio
- Titolo e domanda: nome dell'esperimento, componenti del gruppo, data e domanda in una frase.
- Ipotesi: con lo schema "Se … allora … perché …", così come è stata scritta prima della misura; non si corregge dopo.
- Variabili: indipendente, dipendente e almeno due variabili controllate.
- Materiali e metodo: sensore, schema dei collegamenti, intervallo di misura e numero di ripetizioni; abbastanza chiaro perché un altro gruppo possa ripetere l'esperimento, al massimo 6 passi.
- Dati: tabella riassuntiva come nel modello e, in allegato, il nome del file CSV.
- Grafico: grafico XY con nomi degli assi, unità e titolo.
- Conclusione: l'ipotesi è stata confermata? 2–3 frasi basate su uno o due numeri.
- Fonti di errore e miglioramenti: almeno due fonti di errore e cosa cambieresti rifacendo l'esperimento. Per il voto puoi adattare a queste sezioni i criteri dell'articolo sulla rubrica di valutazione per Arduino.
Progetti con sensori pronti nell'app, Capire il codice e strumenti
Per tutti i sensori di questi esperimenti BlueGrays ha progetti pronti con schema del circuito, elenco dei componenti e codice; gli studenti possono usarli per conoscere il sensore prima dell'esperimento. Sono gratuiti: Misurare l'intensità luminosa con LDR, HC-SR04 Misura della distanza (display seriale) e Temperatura e umidità con DHT11; se usi l'ESP32 sono gratuiti anche Lettura dell'intensità luminosa con il modulo LDR ESP32, ESP32 HC-SR04 Misuratore di distanza a ultrasuoni e ESP32 DHT22 Temperatura e umidità (con display LCD). Nei progetti gratuiti sono aperti anche i blocchi e la sezione Capire il codice: lo studente legge passo per passo cosa fa il codice e nell'attività Prova tu fa da solo una piccola modifica; come usarla in classe è spiegato nell'articolo su Capire il codice. Per calcolare la tensione del partitore nell'esperimento con la LDR c'è lo strumento Partitore di tensione (Premium), per verificare le resistenze bastano gli strumenti gratuiti Codice colori e Legge di Ohm. Se vuoi aprire a tutta la classe progetti Premium con sensori, come Misura di temperatura con NTC e display Lcd 2x16 che mostra la temperatura su LCD o Data Logger di Temperatura ESP32 (DHT22 + DS1307 RTC + microSD + OLED) che salva i dati su microSD, ci sono i pacchetti educatore con pagamento unico, con cui gli studenti diventano Premium senza aggiungere una carta.
Sicurezza: acqua calda, elettricità e vicinanza all'acqua
- Acqua calda: non usare acqua bollente; circa 60 °C bastano e la curva viene comunque chiara. L'acqua la distribuisce l'insegnante, le tazze stanno al centro del banco, dove i cavi non possono impigliarsi. Durante la misura la tazza non si tiene in mano e non si sposta.
- Acqua ed elettricità: in acqua va solo la punta metallica della sonda impermeabile. Arduino, breadboard e computer stanno ad almeno 30 cm dal recipiente, meglio su un vassoio separato. Se si rovescia acqua sul banco, prima stacca il cavo USB, poi asciuga.
- Solo alimentazione USB: tutti questi esperimenti sono alimentati dalla porta USB del computer; nessun apparecchio collegato alla rete elettrica (bollitore, lampada, stufetta) va collegato al circuito di Arduino.
- Cablaggio: fai e modifica i collegamenti con l'USB scollegato. Se un componente si scalda o senti odore di bruciato, stacca subito l'USB.
- Luce: non puntare la torcia negli occhi di nessuno; guardare da vicino torce LED potenti dà fastidio agli occhi.
- Piano inclinato: la tavola non deve sporgere dal banco, la macchinina va fermata con un libro prima che urti il sensore e i libri sotto la tavola vanno sistemati in modo che non scivolino.
Un sensore, un'uscita CSV ordinata e una buona domanda trasformano l'esperimento di scienze da ripetizione del risultato del libro in un vero lavoro di misura: gli studenti tracciano i propri grafici, discutono le proprie fonti di errore e difendono la conclusione con i propri numeri. Se prima dell'esperimento vuoi far conoscere i sensori e montare i circuiti passo per passo dal telefono, puoi partire dai progetti gratuiti con LDR, HC-SR04 e DHT11 nell'app BlueGrays.
Domande frequenti
Quali esperimenti di scienze si possono fare con Arduino?
Ogni grandezza misurabile con un sensore può diventare un esperimento: temperatura (raffreddamento, riscaldamento, isolamento), luce (distanza, filtri colorati), distanza e moto (piano inclinato, pendolo), umidità del terreno (esperimenti con le piante), suono e pressione. Per iniziare, curva di raffreddamento, luce e distanza e piano inclinato sono i tre esperimenti più facili da montare e con il risultato più chiaro.
Come si esportano i dati di Arduino in Excel?
Il modo più semplice è far scrivere al codice i dati sulla porta seriale come righe separate da virgole nel formato "tempo_ms,valore". Copi le righe dal monitor seriale, le salvi come file .csv e le importi in Excel con Dati > Da testo/CSV. In un Excel impostato in italiano ricorda di scegliere il punto come separatore decimale, altrimenti i numeri vengono letti come testo.
Il Plotter seriale di Arduino salva i dati?
No, il Plotter seriale mostra solo il grafico dal vivo e non scrive i dati su file. Per salvarli devi copiare le righe CSV dal monitor seriale, farle scrivere su file da uno script Python oppure usare un modulo scheda SD.
Per un esperimento di scienze meglio DS18B20 o DHT11?
Se devi misurare acqua o un altro liquido usa il DS18B20 nella versione a sonda impermeabile: la precisione di ±0,5 °C e la punta immergibile sono adatte agli esperimenti di raffreddamento. Il DHT11 misura temperatura e umidità dell'aria con una precisione di ±2 °C, non si immerge e risponde lentamente; usalo solo per esperimenti in aria.
Come si misura la velocità del suono con Arduino?
Fai stampare il tempo di eco dell'HC-SR04 in microsecondi e metti un cartoncino piatto davanti al sensore a diverse distanze. Riporti in un grafico il percorso di andata e ritorno (2 × distanza) contro il tempo di eco; dalla pendenza della retta ricavi la velocità del suono, che a temperatura ambiente risulta di circa 340 m/s.
Quante lezioni servono per un esperimento di scienze con Arduino?
Per un esperimento bastano due lezioni da 40 minuti: nella prima ipotesi, montaggio e misura, nella seconda tabella, grafico, conclusione e relazione. Se i codici vengono caricati sulle schede prima della lezione, nella prima ora resta più tempo per la misura.
Progetti da realizzare dopo questo articolo
Vedi tutti i progetti
Misurare l'intensità luminosa con LDR
Vuoi vedere quanto è luminosa la tua stanza sotto forma di numero? L'LDR, un piccolo componente sensibile alla luce, misura la luce ambiente e l'Arduino scrive il valore sullo schermo del computer ogn

HC-SR04 Misura della distanza (display seriale)
Il sensore HC-SR04 funziona come un pipistrello che trova la strada al buio: manda un suono che non puoi sentire, ne ascolta l'eco e misura quanto è lontano l'oggetto davanti a sé. L'Arduino scrive qu

Temperatura e umidità con DHT11
Quanti gradi ci sono nella tua stanza, e l'aria è umida o secca? Il sensore DHT11 misura temperatura e umidità, e l'Arduino scrive i valori su uno schermo LCD a due righe, aggiornandoli ogni paio di s

Lettura dell'intensità luminosa con il modulo LDR ESP32
Monitoraggio in tempo reale sul Serial Monitor del valore grezzo dell'ADC del modulo LDR e della percentuale relativa di luce calcolata dai valori di riferimento al buio e alla luce. Questa percentuale non è una misurazione in lux. Spiega il principio di calibrazione del modulo. È consigliabile eseguirlo prima del Progetto 10, poiché serve a determinare il valore di soglia.

ESP32 HC-SR04 Misuratore di distanza a ultrasuoni
Il sensore a ultrasuoni HC-SR04 calcola la distanza misurando il tempo di volo (Time of Flight) dell'onda sonora che emette dopo aver colpito un oggetto e essere rimbalzata indietro. In questo progetto invieremo un impulso di 10 microsecondi dall'ESP32 al pin TRIG del sensore e leggeremo il tempo di eco proveniente dal pin ECHO con pulseIn(). Visualizziamo la distanza calcolata in cm su un display LCD I2C 16x2. Poiché l'HC-SR04 funziona a 5V, è necessario un divisore di tensione sul pin EC

ESP32 DHT22 Temperatura e umidità (con display LCD)
Si tratta di un progetto che misura la temperatura e l'umidità dell'ambiente tramite il sensore DHT22 e le visualizza in tempo reale su un display LCD I2C 16x2. I dati vengono letti dal sensore utilizzando il protocollo one-wire tramite la libreria Adafruit DHT. Questo progetto costituisce la base per stazioni meteorologiche IoT, sistemi di automazione domestica intelligente o sistemi di monitoraggio ambientale nelle serre. La comunicazione con il DHT22 avviene tramite il pin GPIO 4 dell'ESP32.

Misura di temperatura con NTC e display Lcd 2x16
Misura la temperatura dell'ambiente con un sensore che sembra una piccola perlina. Questo componente, chiamato NTC, fa passare la corrente sempre più facilmente man mano che si scalda; l'Arduino legge

Data Logger di Temperatura ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
Costruisci un data logger di temperatura con timestamp usando ESP32! Leggi temperatura/umidità dal DHT22 ogni minuto, ottieni l'ora reale dal DS1307 RTC e registra su scheda microSD in formato CSV. L'OLED mostra dal vivo temperatura (font grande), percentuale di umidità, timestamp e contatore di log. Il file /temp_log.csv sulla scheda SD si apre in Excel, Google Sheets o Python pandas per l'analisi — perfetto per il monitoraggio di serre, tracciamento della temperatura domestica, raccolta
Altri articoli
App BlueGrays
Costruisci questo circuito passo passo sul telefono
Schema, codice ed elenco componenti in un’unica schermata. Oltre 200 progetti Arduino, ESP32 e Pico da realizzare.
Inquadra con il telefono
Punta la fotocamera sul codice: si apre lo store del tuo telefono.
oppure apri lo store

