Biblioteka do obsługi cyfrowego czujnika temperatury DS18B20

Posted on 6 October, 2018 at 16:27

Tags: C++ ESP AVR Arduino


Biblioteka do obsługi cyfrowego czujnika temperatury DS18B20

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).

W przypadku, gdy wystąpi błąd podczas programowania modułu należy wykonać następującą komendę:

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.


Please provide a valid nick.
Please provide a valid content.

* These fields are required.