Čidlo teploty DS18B20 a modul ESP32
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.
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).
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
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.
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
Dallas
od Milese Burtona.Temperature
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.
. Adresu daného čidla nám vrátí metoda téhož objektugetDeviceCount() sensors.
, kdegetAddress (tempDevice Address, cislo_cidla) tempDeviceAddress
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:
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).
- zdroje:
- 1) https:
//blog. uelectronics. com/ tarjetas-desarrollo/ internet-of-things/ como-programar-el- ds18b20-con-arduino-ide-y-esp32/ - 2) https://
www. theengineeringprojects. com/ 2019/ 01/ introduction-to- ds18b20.html - 3) https://
randomnerdtutorials. com/ esp32-ds18b20- temperature- arduino-ide/