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.

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.