Descrizione
Ecco una descrizione completa del modulo sonda termica impermeabile DS18B20, accompagnata da una guida dettagliata all’utilizzo con Arduino, esempi di collegamento e codice di programmazione.
🌡️ Sonda Termica Impermeabile DS18B20 – Sensore di Temperatura Digitale per Arduino
✅ Descrizione Generale
La DS18B20 è una sonda di temperatura digitale impermeabile che misura temperature con alta precisione in un’ampia gamma (-55°C a +125°C). Incapsulata in un tubicino d’acciaio inossidabile e dotata di cavo, è perfetta per misurazioni in ambienti umidi o liquidi, come:
- Acqua
- Terreno
- Impianti di riscaldamento
- Acquari
⚙️ Caratteristiche Tecniche
| Caratteristica | Valore |
|---|---|
| Sensore interno | DS18B20 digitale |
| Range di temperatura | da -55°C a +125°C |
| Precisione | ±0.5°C (da -10°C a +85°C) |
| Risoluzione | Programmabile: 9–12 bit |
| Protocollo | 1-Wire |
| Alimentazione | 3.0 – 5.5V |
| Uscita | Digitale (1-Wire, non analogica) |
| Lunghezza del cavo tipica | 90–100 cm (varia in base al venditore) |
| Impermeabilità | Sì (acciaio inox 304 o 316) |
📌 Ogni sensore DS18B20 ha un ID univoco a 64 bit, quindi puoi collegarne più di uno sullo stesso pin Arduino!
🧪 Collegamento alla Scheda Arduino
🧰 Materiale necessario
- Sonda DS18B20 impermeabile
- 1 Resistenza da 4.7 kΩ
- Arduino Uno, Nano, Mega, ecc.
- Breadboard e jumper
🔌 Schema di Collegamento
| Filo Sonda | Collegamento |
|---|---|
| Nero | GND |
| Rosso | 5V |
| Giallo | Dati (es. D2) |
Importante: collega una resistenza da 4.7 kΩ tra il pin dati (giallo) e 5V (pull-up), altrimenti il sensore non funzionerà correttamente.
💻 Programmazione Arduino
📦 Librerie Necessarie
Installa le seguenti librerie da Arduino IDE → Gestione Librerie:
- OneWire di Paul Stoffregen
- DallasTemperature di Miles Burton
📜 Codice di Base – Lettura Temperatura da una DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
// Pin dati della sonda collegato al pin D2
#define ONE_WIRE_BUS 2
// Setup comunicazione OneWire
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin(); // inizializza i sensori
}
void loop() {
sensors.requestTemperatures(); // richiede la temperatura da tutti i sensori
float tempC = sensors.getTempCByIndex(0); // legge la temperatura del primo sensore trovato
Serial.print("Temperatura: ");
Serial.print(tempC);
Serial.println(" °C");
delay(1000);
}
🧠 Approfondimenti e Funzioni Utili
🔄 Più Sonde sullo Stesso Pin
Ogni DS18B20 ha un ID unico: puoi rilevarlo con sensors.getAddress() e poi usarlo per leggere la temperatura da una specifica sonda.
📏 Impostare la Risoluzione
sensors.setResolution(12); // valori validi: 9, 10, 11, 12 (più bit = maggiore precisione, ma lettura più lenta)
🔋 Vantaggi della DS18B20
- ✅ Uscita digitale stabile e precisa
- ✅ Ottima per ambienti umidi o liquidi
- ✅ Supporto a più sensori in parallelo (grazie al protocollo 1-Wire)
- ✅ Codice semplice e ampiamente supportato
📚 Esempi di Applicazione
- 🌡️ Monitoraggio della temperatura del suolo o serra
- 💧 Monitoraggio di liquidi (acqua, birra, vino, ecc.)
- 🐟 Controllo temperatura acquari
- 🔥 Controllo caldaie o riscaldamenti
- 🧪 Progetti IoT o data logging con microSD o WiFi
🛠 Consigli Pratici
- Usa guaina termorestringente o connettori impermeabili se estendi il cavo.
- Se alimenti il sensore da 3.3V (es. su ESP32), controlla che la lunghezza del cavo sia limitata (per evitare cadute di tensione).
- Puoi alimentare il DS18B20 in parassitic mode, ma si consiglia l’alimentazione normale per affidabilità.
✅ Conclusione
La sonda impermeabile DS18B20 è uno dei sensori di temperatura più versatili, precisi e semplici da usare con Arduino. È ideale per:
- Uso in ambienti esterni o liquidi
- Progetti multipli su un solo pin
- Applicazioni IoT di temperatura
✅ 1. Integrazione con Display LCD o OLED
Opzione A: Display LCD 16×2 con I2C
🔧 Hardware:
- DS18B20
- Display LCD 16×2 con adattatore I2C
- Arduino Uno/Nano
- Resistenza 4.7kΩ
📦 Librerie:
LiquidCrystal_I2COneWire,DallasTemperature
📜 Codice base:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // cambia l'indirizzo se necessario
void setup() {
lcd.init();
lcd.backlight();
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print(" C");
delay(1000);
}
Opzione B: Display OLED 128×64 I2C (es. SSD1306)
📦 Librerie:
Adafruit_SSD1306Adafruit_GFXDallasTemperature,OneWire
📜 Codice base disponibile se vuoi anche layout grafici personalizzati. Fammi sapere se lo vuoi!
📡 2. Integrazione Wi-Fi con ESP8266/ESP32 (monitoraggio remoto)
Soluzione A: ESP8266/ESP32 con Web Server Locale
📦 Librerie:
WiFiESPAsyncWebServer(oWebServer.h)DallasTemperature,OneWire
📜 Codice: ESP crea una pagina web accessibile da PC/smartphone
#include <WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WebServer.h>
const char* ssid = "TUO_SSID";
const char* password = "TUA_PASSWORD";
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
WebServer server(80);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(1000);
sensors.begin();
server.on("/", []() {
sensors.requestTemperatures();
float t = sensors.getTempCByIndex(0);
server.send(200, "text/html", "<h1>Temperatura: " + String(t) + " °C</h1>");
});
server.begin();
}
void loop() {
server.handleClient();
}
📲 Apri il browser sul tuo smartphone → inserisci l’IP del modulo ESP (stampato nel Serial Monitor).
Soluzione B: ESP + Blynk (o Telegram) → App smartphone
- Visualizza la temperatura in tempo reale
- Aggiungi notifiche, grafici e log nel cloud
Posso fornirti codice pronto per Blynk (2.0) se vuoi app senza scrivere interfaccia da zero.
📁 3. Salvataggio su SD Card
🔧 Hardware:
- Modulo SD card (microSD)
- Arduino Uno/Mega
- DS18B20
📦 Librerie:
SD.hSPI.hDallasTemperature,OneWire
📜 Codice base:
#include <SPI.h>
#include <SD.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
#define SD_CS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
File logFile;
void setup() {
Serial.begin(9600);
sensors.begin();
SD.begin(SD_CS);
}
void loop() {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
logFile = SD.open("log.csv", FILE_WRITE);
if (logFile) {
logFile.print(millis() / 1000);
logFile.print(",");
logFile.println(temp);
logFile.close();
}
delay(5000);
}
📝 File log.csv pronto per Excel/LibreOffice.
📲 4. Visualizzare i Dati su Smartphone
Opzione A: Web Server (ESP)
- Apri l’IP del modulo dal browser (non serve app)
- Layout HTML personalizzabile
Opzione B: App Blynk 2.0
- Dashboard grafica: gauge, grafici, notifiche
- Lettura della temperatura e automazioni (es. “accendi ventola se >30°C”)
Opzione C: Telegram Bot (ESP32/ESP8266)
- Ricevi messaggi con temperatura via Telegram
📦 Progetto Completo Possibile
Sistema Smart Monitor di Temperatura
✔️ DS18B20 impermeabile
✔️ ESP32 con Wi-Fi
✔️ Visualizzazione su OLED
✔️ Invio su smartphone via Web o Blynk
✔️ Backup su SD card
Abbiamo disponibili datasheet di tutti i componenti, qualora non fosse presente nella scheda download del prodotto inviaci un messaggio dal modulo contattaci e lo pubblicheremo il prima possibile nel nostro sito.
Tutorial: Come usare Sonda termica DS18B20
La sonda termica DS18B20 misura precise temperature in ambienti umidi e asciutti. Ideale per progetti di umidità e temperatura.
Cosa serve
- Sonda termica DS18B20
- Arduino
- Resistenza pull-up (4.7kΩ)
- Cavo di connessione
Passi
- 1. Collega la sonda termica al pin DQ dell’Arduino tramite il cavo.
- 2. Collega la resistenza pull-up tra il pin DQ e la VCC di 5V.
- 3. Collega il pin GND della sonda alla GND dell’Arduino.
- 4. Carica il codice Arduino fornito.
- 5. Verifica sul datasheet per la precisione di misura.
- 6. Prova la sonda con un’applicazione di test.
- 7. Verifica la temperatura in vari ambienti.
- 8. Configura l’alarma di temperatura se necessario.
Codice di esempio
```void loop() { // Leggi la temperatura OneWire ds(DQ); DigitalClock ds; float tempC = ds.getTempC(); Serial.print("Temperatura: "); Serial.print(tempC); Serial.println("°C"); delay(1000);}```
Mini-progetto
Costruisci un sistema di monitoraggio della temperatura per un serbatoio d’acqua.
Errori comuni
- Dimenticare la resistenza pull-up.
- Collegare il pin DQ a VCC.
- Non verificare la connessione prima dell’uso.
- Impostare l’alarma di temperatura senza configurarla.
Accessori consigliati
- Arduino UNO
- Display LCD 16×2
- Batteria 3.7V
- Cavo USB
Domande frequenti
Come posso verificare la connessione?
Controlla che la sonda sia ben collegata e che la resistenza pull-up sia installata correttamente.
Qual è la precisione di misura?
Verifica sul datasheet per la precisione di misura.
Posso utilizzare questa sonda con un microcontrollore diverso?
Sì, ma verifica la compatibilità con il pin DQ e la tensione di alimentazione.









