V dnešním článku si ukážeme, jak k modulu ESP32 připojit teplotní čidlo Dallas DS18B20. Ukážeme si, jak zapojit tento teplotní senzor a jak naprogramovat jeho načítání v prostředí Arduino IDE pomocí podpůrné knihovny.

Obrázek 1 – připojení čidla Dallas DS18B20 k modulu ESP32
Teplotní senzor DS18B20
Teplotní čidlo DS18B20 je jednovodičové digitální čidlo teploty, což znamená, že ke komunikaci s vaším ESP32 vyžaduje pouze jedinou datovou linku (a GND). Může být napájen externím napájecím zdrojem, nebo může být napájen přímo z datové linky (tzv. „Parazitní režim“), což eliminuje potřebu externího napájecího zdroje.
Teplotní čidlo DS18B20 má rozsah napájení 3,0 V až 5,5 V a rozsah provozních teplot je –55 °C až +125 °C (v teplotním rozsahu –10 °C až 85 °C s garantovanou přesností ±0,5 °C).

Obrázek 2 – pouzdra a pinout čidla Dallas DS18B20
Každý snímač teploty DS18B20 má jedinečný 64-bitový sériový kód. To umožní připojit více senzorů ke stejnému datovému vodiči. Teplotu lze tedy získat z více senzorů pomocí jediného GPIO pinu. Teplotní senzor DS18B20 je v klasickém plastovém pouzdře TO92 nebo také ve vodotěsné verzi v nerezovém pouzdře (viz obr. 2).
Připojení čidla DS18B20 k modulu ESP32
Jak již bylo zmíněno dříve, teplotní senzor DS18B20 může být napájen pinem VDD (normální režim), nebo může svůj výkon odvozovat z datové linky (parazitní režim). Ukážeme si připojení v obou režimech:
Normální režim |
Parazitní režim |
Obrázek 3 – zapojení normálního a parazitního režimu čidla Dallas
V pro náš následující příklad použijeme normální režim, ve kterém napájíme čidlo Dalas napětím 3,3 V (pin 3V3) a data načínáme pinem GPIO 4.

Obrázek 4 – připojení čidla Dallas DS18B20 k modulu ESP32
Programový kód v prostředí Arduino IDE
Instalace knihoven
Pro komunikaci s teplotním čidlem DS18B20 je třeba nainstalovat knihovnu OneWire
(od Paula Stoffregena) a knihovnu Dallas Temperature. Při instalaci těchto knihoven postupujte podle následujících kroků.
- Otevřete prostředí Arduino IDE a přejděte na Projekt > Přidat knihovnu > Spravovat knihovny…, poté by se měl otevřít Správce knihoven.
- Do vyhledávacího pole napište „ onewire “ a nainstalujte knihovnu
OneWire
od Paula Stoffregena.

- Poté vyhledejte „dallas“ a nainstalujte knihovnu
DallasTemperature
od Milese Burtona.

Programový kód
Po instalaci požadovaných knihoven můžete nahrát následující kód do ESP32. Tento kód načítá teplotu z čidla teploty DS18B20 a zobrazuje tyto hodnoty na sériovém monitoru prostředí Arduino IDE. Princip kódu je opět vysvětlen v jeho komentářích.
Kód: (ukázka komunikace čidla DS18B20 s modulem ESP32)
/* DS18B20 na Serial Monitor */
#include <OneWire.h> // vlozeni knihovny OneWire
#include <DallasTemperature.h> // vlozeni knihovny Dallas Temperature
const int oneWireBus = 4; // teplotni cidlo pripojeno k GPIO 4
OneWire oneWire(oneWireBus); // instance pro komunikaci se zarizeni OneWire
DallasTemperature sensors(&oneWire); // reference oneWire na senzor Dallas
// funkce SETUP se spusti jednou pri stisknuti tlacitka reset nebo pri zapnuti desky.
void setup() {
Serial.begin(115200); // prenosova rychlost serioveho vystupu
sensors.begin(); // Start senzoru DS18B20
}
// funkce LOOP bezi stale dokola.
void loop() {
sensors.requestTemperatures(); // je potreba zavolat pred ctenim senzoru
float temperatureC = sensors.getTempCByIndex(0); // nacteni T z cidla 0
Serial.println("Teplota: ");
Serial.print(temperatureC); // vypsani nactene hodnoty na seriovy vystup
Serial.println("ºC");
delay(5000); // cekani 5s, pak se mereni opakuje
}
- POZNÁMKA:
- Metoda
getTempCByIndex()
akceptuje index nebo adresu teplotního čidla. Protože v našem případě používáme pouze jeden senzor, lze použít index 0. Pokud chcete číst více než jeden senzor, lze použít index 0 pro první senzor, index 1 pro další senzor a tak dále. V případě více čidel nám počet připojených zařízení ke sběrniciOneWire
zjistí následující metoda objektusensors
, která se nazývásensors.getDeviceCount()
. Adresu daného čidla nám vrátí metoda téhož objektusensors.getAddress(tempDeviceAddress,cislo_cidla)
, kdetempDeviceAddress
je proměnná typuDeviceAddress
, do které metoda vrátí adresu čidla, které je zaevidováno jako čidlo čísla daného proměnnoucislo_cidla
. Celá metoda vrací hodnotu TRUE, pokud proběhlo zjištění adresy správně, hodnota FALSE indikuje problém. Získanou hodnotu v proměnnétempDeviceAddress
lze pak použít místo indexu čidla.
Po nahrání kódu byste měli zobrazit údaje ze senzorů v sériovém monitoru:

Obrázek 5 – výstup naměřené teploty na Serial Monitor
Máme hotovo – umíme načítat teplotu z čidla Dallas DS18B20!
Závěr
V dnešním článku jsme si ukázali jednoduché připojení teplotního čidla Dallas DS18B20 k modulu ESP32. Toto čidlo velice přesné, jednoduché na ovládání a díky možné verzi ve voděodolném pouzdru i využitelné v široké škále aplikací. Případným zájemcům o ukázku připojení a obsluhy více čidel Dallas DS18B20 k modulu ESP32, popřípadě o ukázku vytvoření jednoduchého Wi-Fi teploměru doporučujeme následující anglický článek ESP32 DS18B20 Temperature Sensor with Arduino IDE (Single, Multiple, Web Server).