Co je DS18B20?
DS18B20 je digitální teplotní senzor, který posílá teplotu rovnou jako číslo – žádný analogový převod, žádné rušení, žádná kalibrace. Prodává se také ve vodotěsném nerezovém pouzdře na dlouhém kabelu, což z něj dělá ideální volbu pro měření teploty půdy, vody v akváriu, bazénu nebo venkovní teploty.
Podle datasheetu měří v rozsahu −55 °C až +125 °C, má nastavitelné rozlišení převodu 9 až 12 bitů a v rozsahu −10 °C až +85 °C je uváděná přesnost ±0,5 °C. Napájecí napětí je 3,0 až 5,5 V, takže se dá bez problémů použít nejen s klasickým Arduinem, ale i s deskami pracujícími na 3,3 V, jako je ESP32.
Senzor komunikuje přes sběrnici OneWire – to znamená, že data tečou po jediném vodiči. Nespornou výhodou komunikačního rozhraní 1-Wire je připojení několika senzorů na jednu sběrnici, tedy na jeden signálový vodič.
Hlavní vlastnosti
- Rozsah měření −55 °C až +125 °C, přesnost ±0,5 °C
- Digitální výstup přes sběrnici OneWire
- Vodotěsné nerezové pouzdro na kabelu
- Napájení 3,0–5,5 V – kompatibilní s ESP32
- Možnost připojit více senzorů na jeden pin
Potřebné komponenty
- ESP32
- Vodotěsná sonda DS18B20
- Rezistor 4,7 kΩ (pull-up)
- Propojovací vodiče
⚠️ Pull-up rezistor je nutný. U ESP32 musí být pull-up připojený na 3,3 V, ne na 5 V, protože GPIO piny nejsou určené pro 5V logiku.
Zapojení
Vodotěsná sonda DS18B20 má tři vodiče: červený (napájení), černý nebo modrý (zem) a žlutý (data).
Červený vodič připojte na 3,3V ESP32. Černý vodič připojte na GND. Žlutý (datový) vodič připojte na GPIO 4.
Mezi datový vodič (žlutý) a napájení (3,3V) zapojte pull-up rezistor 4,7 kΩ. Bez něj sběrnice OneWire nefunguje spolehlivě a senzor vrací chybové hodnoty.
⚠️ GPIO 4 je běžná a bezpečná volba, ale funguje i většina ostatních GPIO pinů. Vyhněte se pinům 34–39 – ty jsou pouze vstupní a nemají interní pull-up.
Schéma zapojení:
ESP32 3.3V → červený vodič (VCC)
ESP32 GND → černý vodič (GND)
ESP32 GPIO4 → žlutý vodič (DATA)
Pull-up: GPIO4 ──[ 4,7 kΩ ]── 3.3V
Instalace knihoven
V Arduino IDE otevřete Library Manager a nainstalujte dvě knihovny:
- OneWire od Paula Stoffregena
- DallasTemperature od Milese Burtona
Kód 1 – jednoduché čtení teploty
1#include <OneWire.h>
2#include <DallasTemperature.h>
3
4// Datový vodič připojen na GPIO 4
5#define ONE_WIRE_BUS 4
6
7OneWire oneWire(ONE_WIRE_BUS);
8DallasTemperature sensors(&oneWire);
9
10void setup() {
11 Serial.begin(115200);
12 sensors.begin();
13 Serial.println("DS18B20 senzor připraven");
14}
15
16void loop() {
17 // požádej senzor o měření
18 sensors.requestTemperatures();
19
20 // přečti teplotu z prvního senzoru (index 0)
21 float teplota = sensors.getTempCByIndex(0);
22
23 if (teplota == DEVICE_DISCONNECTED_C) {
24 Serial.println("Chyba: senzor odpojen");
25 } else {
26 Serial.print("Teplota: ");
27 Serial.print(teplota);
28 Serial.println(" °C");
29 }
30
31 delay(1000);
32}Časté problémy
Senzor vrací hodnotu −85 °C nebo −127 °C
→ Chybí pull-up rezistor 4,7 kΩ mezi datovým vodičem a 3,3V
→ Špatné zapojení datového vodiče
→ Hodnota −127 °C znamená, že senzor není nalezen
Teplota se nemění nebo je nesmyslná
→ Zkontrolujte že pull-up je na 3,3V, ne na 5V
→ Ověřte pevné spoje – u nepájivého pole bývá problém s kontaktem
Funguje jen občas
→ Zkraťte propojovací vodiče
→ Ověřte kvalitu pull-up rezistoru (přesně 4,7 kΩ)
Více senzorů – některý chybí
→ Ověřte že každá sonda má pevný spoj na sběrnici
→ Zkontrolujte celkové napájení – při mnoha senzorech může být potřeba silnější pull-up
Možná rozšíření
- Přidejte relé a vodní pumpu – automatické zavlažování podle teploty půdy
- Kombinujte s DHT22 – kompletní monitoring teploty vzduchu i půdy
- Přidejte OLED nebo TM1637 displej – zobrazujte teplotu bez počítače
- Kombinujte s RTC DS1307 – logujte teplotu v čase a sledujte denní křivku
- Přidejte MQTT – posílejte teplotu do Home Assistanta nebo na mobil
- Postavte meteostanici – DS18B20 venku + BME680 pro kompletní data
