Przejdź do głównej zawartości

Biblioteka do obsługi cyfrowego czujnika temperatury DS18B20

· 3 min aby przeczytać
 Biblioteka do obsługi cyfrowego czujnika temperatury DS18B20

Prosta biblioteka do obsługi popularnych termometrów cyfrowych DS18S2, DS1820, DS18B20, DS1822, DS1825 oraz DS28EA00, komunikujących się za pośrednictwem magistrali 1-Wire.

Główne założenia

Głównym celem było stworzenie biblioteki do obsługi popularnych czujników temperatury komunikujących się za poradnictwem magistrali 1-Wire. Przewagą tej biblioteki nad innymi jest fakt, że jej konfiguracja sprowadza się do jednej linii kodu. Dodatkowo umieściłem w niej popularną bibliotekę do obsługi magistrali 1-Wire, co oznacza że nie musimy pobierać dodatkowych modułów, które są odpowiedzialne za komunikację z wykorzystaniem tej magistrali. Biblioteka ta została zmodyfikowana przeze mnie w taki sposób, aby konfiguracja oraz inicjalizacja sprowadzała się jedynie do wywołania pojedynczej metody.

Przykład użycia biblioteki z wykorzystaniem modułu ESP8266

W dalszej części przedstawię sposób konfiguracji środowiska Arduino IDE do obsługi modułu ESP8266 oraz przykład użycia biblioteki DevTomek_DS18B20 do obsługi termometru cyfrowego DS18B20.

Dodajemy płytkę ESP8266

W pierwszej kolejności musimy dodać dodatkową płytkę w menadżerze płytek. W tym celu uruchamiamy Arduino IDE i przechodzimy do Plik -> Preferencje -> Dodatkowy adres URL do menadżera płytek, gdzie wklejamy poniższy link:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Teraz przechodzimy do Narzędzia -> Płytka -> Menedżer płytek i instalujemy płytkę esp8266 by ESP8266 Community.

Następnie wybieramy płytkę SparkFun ESP8266 Thing Dev z listy dostępnych płytek w menu kontekstowym Narzędzia -> Płytki.

Importujemy bibliotekę DevTomek_DS18B20

W pierwszej kolejności musimy pobrać najnowszą wersję biblioteki dostępnej tutaj. Następnie przechodzimy do Szkic -> Dołącz bibliotekę -> Dodaj bibliotekę .ZIP.. i wybieramy pobraną wcześniej bibliotekę.

Tworzymy nowy projekt

Teraz możemy utworzyć nowy projekt i umieścić w nim poniższy kod.

#include <ESP8266WiFi.h>
#include <DevTomek_DS18B20.h>

#define DS18B20_PIN 5

// set up DevTomek_DS18B20 variable and initialise 1-wire bus
DevTomek_DS18B20 ds18b20(DS18B20_PIN);

void setup() {
Serial.begin(9600); // initialise serial bus
ds18b20.begin(); // search devices on 1-wire bus
}

void loop() {
delay(1000);

// sends command for all devices on the bus to perform a temperature conversion
ds18b20.requestTemperatures();

// get temperature for first device
float tempValue = ds18b20.getTemp(0);

// print temperature in degrees Celsius
Serial.println(tempValue);
}

Przed wgraniem programu musimy podłączyć czujnik temperatury DS18B20 do naszego modułu ESP, tak jak pokazano na poniższych schematach.

Opis wyprowadzeń czujnika temperatury DS18B20
Opis wyprowadzeń czujnika temperatury DS18B20
Schemat połączeniowy czujnika temperatury DS18B20 z modułem ESP8266
Schemat połączeniowy czujnika temperatury DS18B20 z modułem ESP8266
Schemat elektryczny czujnika temperatury DS18B20 z modułem ESP8266
Schemat elektryczny czujnika temperatury DS18B20 z modułem ESP8266

Teraz możemy wgrać program do naszego modułu ESP i obserwować odczytaną wartość temperatury w monitorze portu szeregowego (ang. Serial Monitor).

wskazówka

W przypadku, gdy wystąpi poniższy błąd podczas programowania modułu

could not open port /dev/ttyUSB0: Permission denied: '/dev/ttyUSB0'

należy wykonać następującą komendę i uruchomić ponownie komputer.

sudo usermod -a -G dialout $USER

Kod źródłowy biblioteki można znaleźć w tym repozytorium lub pobrać najnowszą wersję klikając na poniższy przycisk.