Descrizione
[vc_row][vc_column][vc_column_text]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.
[/vc_column_text][/vc_column][/vc_row]









