Un monitor temperatura acquario ESP32 permette di leggere la temperatura dell’acqua e seguirne l’andamento senza affidarsi a un’occhiata occasionale al termometro. In questa guida realizziamo un dispositivo di sola lettura con una scheda ESP32 DevKit e una sonda digitale DS18B20: il valore compare sul monitor seriale del computer ogni cinque secondi.
Il progetto non accende né spegne riscaldatori, filtri o altre apparecchiature. Serve come strumento informativo e non sostituisce il termometro indipendente, i controlli dell’acquariofilo o un dispositivo commerciale progettato per uso continuo. Prima di immergere la sonda, verifica che il modello acquistato sia effettivamente sigillato e dichiarato dal produttore per immersione continuativa.
Come funziona il progetto
La DS18B20 misura la temperatura e comunica con l’ESP32 tramite il bus digitale 1-Wire. Il chip supporta risoluzioni configurabili da 9 a 12 bit; il datasheet indica un’accuratezza nominale di ±0,5 °C nell’intervallo da −10 °C a +85 °C. Questi dati descrivono il sensore, non certificano automaticamente l’accuratezza di una sonda economica già assemblata: guaina, cablaggio, montaggio e qualità del componente possono influire sul risultato.
L’ESP32 legge il dato e lo invia via USB al monitor seriale dell’Arduino IDE. Non serve collegare la scheda alla rete Wi-Fi, aggiungere cloud o comandare carichi. Mantenere il primo prototipo semplice rende più facile isolare gli errori di cablaggio e confrontare la lettura con un termometro indipendente.
Componenti e strumenti
- Una scheda ESP32 DevKit basata su ESP32-WROOM-32, alimentata dalla porta USB.
- Una sonda DS18B20 a tre fili, con guaina e dichiarazione del produttore per immersione continuativa in acqua dolce.
- Una resistenza da 4,7 kΩ, tolleranza standard, come pull-up tra dato e 3,3 V.
- Una breadboard e cavetti jumper per il prototipo, da tenere asciutti e lontani dalla vasca.
- Un cavo USB dati e un alimentatore USB SELV conforme, collocato lontano da schizzi e gocciolamenti.
- Un termometro indipendente per il confronto delle letture.
Controlla il pinout della tua specifica scheda: le etichette possono cambiare tra produttori e revisioni. Qui useremo GPIO 4, ma puoi scegliere un altro GPIO adatto, aggiornando la costante nel firmware. Non applicare 5 V al pin dati o a un GPIO dell’ESP32: nel progetto il bus viene tirato a 3,3 V.
Schema di collegamento
Per la sonda con fili identificati, segui la documentazione del produttore invece di dedurre la funzione dal colore: non esiste una convenzione cromatica garantita per tutti i cavi. I tre collegamenti sono:
- VDD della sonda → 3V3 dell’ESP32
- GND della sonda → GND dell’ESP32
- DQ della sonda → GPIO 4 dell’ESP32
Inserisci la resistenza da 4,7 kΩ tra DQ e 3V3. È la resistenza di pull-up che mantiene il bus nello stato alto quando nessun dispositivo lo porta a zero. La configurazione usa alimentazione normale a tre fili, non la modalità parassita. Non collegare il pull-up a 5 V: il livello logico del bus deve rimanere compatibile con la scheda ESP32.
Prima di collegare la USB, ricontrolla ogni filo e verifica che i terminali non possano toccarsi. La scheda, la breadboard e tutte le giunzioni restano asciutte. Solo la punta della sonda, se certificata per questo uso, entra nell’acqua.
Preparare l’Arduino IDE
- Installa Arduino IDE e aggiungi il supporto alle schede ESP32 seguendo le istruzioni ufficiali di Espressif per Arduino-ESP32.
- Dal Gestore schede seleziona il modello corrispondente alla tua scheda, ad esempio “ESP32 Dev Module”, se compatibile con la relativa documentazione.
- Dal Gestore librerie installa OneWire e DallasTemperature. La seconda usa la prima per dialogare con il sensore.
- Collega l’ESP32 via USB, scegli la scheda e la porta corretta, quindi apri il monitor seriale a 115200 baud.
I nomi delle porte e la procedura di caricamento dipendono dal sistema operativo e dal convertitore USB-seriale montato sulla scheda. Se il caricamento non parte, consulta la guida del produttore della DevKit invece di spostare fili a caso con la scheda alimentata.
Firmware completo
Carica questo sketch. Il programma verifica che il sensore sia stato rilevato, attende cinque secondi tra le letture e segnala un errore se il dato non è disponibile.
#include <OneWire.h> #include <DallasTemperature.h> constexpr uint8_t ONE_WIRE_PIN = 4; constexpr unsigned long INTERVALLO_MS = 5000; OneWire oneWire(ONE_WIRE_PIN); DallasTemperature sensori(&oneWire); unsigned long ultimaLettura = 0; void setup() { Serial.begin(115200); delay(300); sensori.begin(); sensori.setResolution(12); const int numeroSensori = sensori.getDeviceCount(); Serial.print("Sensori DS18B20 rilevati: "); Serial.println(numeroSensori); if (numeroSensori == 0) { Serial.println("ERRORE: controlla alimentazione, DQ e pull-up da 4,7 kOhm."); } } void loop() { const unsigned long adesso = millis(); if (adesso - ultimaLettura < INTERVALLO_MS) { return; } ultimaLettura = adesso; sensori.requestTemperatures(); const float temperatura = sensori.getTempCByIndex(0); if (temperatura == DEVICE_DISCONNECTED_C) { Serial.println("ERRORE: sensore non raggiungibile; verifica il cablaggio."); return; } Serial.print("Temperatura acqua: "); Serial.print(temperatura, 2); Serial.println(" °C"); } La libreria richiede tempo per completare la conversione, soprattutto alla risoluzione di 12 bit. Per un monitor semplice è un compromesso accettabile: l’intervallo di cinque secondi è molto più lungo del tempo di misura e il loop può attendere la conversione. Se in seguito aggiungi altre attività, passa alla modalità non bloccante documentata dalla libreria e gestisci esplicitamente la disponibilità del dato.
Montaggio e prima accensione
- Lascia la scheda scollegata dalla USB e cabla sensore, GPIO, massa e resistenza come indicato sopra.
- Fai una verifica visiva dei collegamenti e della polarità. Non alimentare il circuito se non sei certo della funzione dei fili della sonda.
- Carica lo sketch mantenendo la scheda e la breadboard su un banco asciutto, lontano dall’acquario.
- Apri il monitor seriale a 115200 baud. Dovresti vedere il numero di sensori rilevati e, a intervalli regolari, una lettura in gradi Celsius.
- Solo dopo aver verificato il funzionamento a secco, prova la sonda in un contenitore separato con acqua. Immergi esclusivamente la parte dichiarata impermeabile; tieni giunzioni e connettori fuori dal contenitore.
Non considerare una lettura plausibile come prova che il cablaggio sia sicuro o che la sonda sia impermeabile. Se il monitor mostra “sensore non raggiungibile”, spegni e scollega l’USB prima di controllare i fili. Se la lettura è fissa, instabile o incoerente, prova un cavo più corto, verifica la resistenza e confronta il sensore con un’unità nota come funzionante.
Verifica della lettura e confronto
Metti la sonda e un termometro indipendente nello stesso contenitore d’acqua, senza far toccare le punte tra loro o il fondo. Attendi che le letture si stabilizzino e annota entrambi i valori. Ripeti il confronto vicino alla temperatura a cui userai la sonda: una verifica al punto di congelamento può essere utile come controllo grossolano, ma non certifica l’accuratezza nell’intervallo tipico dell’acquario.
Considera la tolleranza dichiarata del DS18B20 e quella dello strumento di confronto. Se i valori differiscono, non modificare automaticamente la soglia o applicare una correzione nel codice: prima verifica il datasheet della sonda assemblata, la posizione dei due strumenti e il tempo di stabilizzazione. Questo monitor è informativo e non deve diventare l’unico riferimento per la salute dei pesci.
Sicurezza vicino all’acqua
Il progetto lavora a bassa tensione continua sul lato ESP32, ma resta necessario tenere l’elettronica lontana dall’acqua. Posiziona la scheda in una scatola adatta all’ambiente, su un supporto stabile e sopra il livello della vasca; crea un’ansa verso il basso sul cavo USB e sul cavo della sonda, così eventuali gocce non seguono il cavo fino alla scheda o alla presa.
Usa un alimentatore USB certificato e integro, con la parte collegata alla rete elettrica lontana da schizzi e superfici bagnate. Non aprire l’alimentatore, non modificare spine e prese e non portare mai la rete a 230 V sulla breadboard. Non immergere giunzioni, connettori o sensori privi di dichiarazione d’uso in immersione. In caso di condensa, infiltrazione, cavo lesionato o odore anomalo, interrompi l’alimentazione in sicurezza e non riutilizzare il prototipo finché non è stato controllato.
Non usare questo progetto per interrompere o regolare un riscaldatore: un errore software, un sensore staccato o un relè guasto potrebbe creare condizioni pericolose per gli animali. Per la gestione della temperatura, continua a seguire le indicazioni adatte alla specie e controlla l’acquario con strumenti indipendenti. La nostra guida sul Betta splendens in acquario spiega perché temperatura e termometro indipendente fanno parte della routine.
Problemi frequenti
- Nessun sensore rilevato: scollega la USB e ricontrolla VDD, GND, DQ e la resistenza tra DQ e 3V3.
- Valore −127 °C o errore di disconnessione: la libreria non riceve una misura valida; verifica contatti, pin GPIO scelto e integrità del cavo.
- Letture intermittenti: controlla falsi contatti, lunghezza del cavo e qualità della pull-up. Inizia con un cablaggio corto e ordinato.
- La lettura non coincide con il termometro: confronta le specifiche dei due strumenti, aspetta la stabilizzazione e ripeti la misura nello stesso punto.
- La sonda si appanna o mostra acqua nella guaina: rimuovila immediatamente dal servizio e non immergerla di nuovo; il prodotto potrebbe non essere sigillato come dichiarato.
Limiti e manutenzione
Il monitor non conserva uno storico, non invia allarmi e non misura altri parametri dell’acqua. Il dato dipende da sonda, cablaggio, scheda, alimentazione USB e firmware; una sonda guasta può smettere di fornire dati senza che il sistema protegga l’acquario. Controlla periodicamente il valore seriale e confrontalo con il termometro indipendente. Ispeziona guaina e cavo senza tirare la sonda, tieni i connettori asciutti e scollega l’USB prima di intervenire sul circuito.
Annota modello e specifiche della sonda, data di installazione e differenza osservata nel confronto. Se cambi sonda, scheda o lunghezza del cavo, ripeti la verifica. Non presentare il prototipo come strumento calibrato o certificato: è un progetto didattico che aiuta a leggere una temperatura, non un dispositivo di sicurezza.
Fonti tecniche e immagine
- Datasheet DS18B20 di Analog Devices.
- Installazione ufficiale di Arduino-ESP32 e documentazione GPIO ESP32.
- Libreria OneWire e libreria DallasTemperature.
Foto illustrativa di una scheda microcontrollore con moduli su breadboard, non è lo schema del progetto e non mostra una sonda DS18B20. Foto di Vishnu Mohanan via Unsplash.
