Tags Posts tagged with "ds18b20"

ds18b20

przez -
32 36895
Raspberry Pi

Na rynku dostępnych jest kilka rodzajów termometrów z różnymi sposobami komunikacji m.in. 1-wire, analogowe czy i2c. Przy wykorzystaniu Raspberry Pi najbardziej wygodnym i najprostszym rozwiązaniem jest wykorzystanie termometrów komunikujących się poprzez protokół 1-wire, który Raspberry Pi obsługuje na pinie 4 GPIO. Raspberry Pi jest w stanie obsłużyć do ośmiu urządzeń za pomocą protokołu 1-wire. W artykule tym pokażę jak łatwo można podłączyć i odczytać temperatury z termometrów DS18B20+.

Praktycznie wszystkie systemy maja już zainstalowane moduły dla protokołu 1-wire i obsługi termometrów po tym protokole. Aby sprawdzić czy moduły są zainstalowane możemy je ręcznie załadować

sudo modprobe w1-gpio
sudo modprobe w1-therm

Jeśli nie otrzymaliśmy żadnych błędów to warto aby powyższe moduły ładowały się wraz ze startem systemu dodając do pliku /etc/modules poniższe linijki.

w1-gpio
w1-therm

UWAGA:

W nowszych wersjach systemu należy jeszcze dodać poniższy wpis do pliku /boot/config.txt i zrestartować malinę.

dtoverlay=w1-gpio,gpiopin=4

Wybór czujników

Do naszych testów użyjemy cyfrowe termometry DS18B20+, które do komunikacji wykorzystują protokół 1-wire. Czujniki DS18B20+ można także kupić jako moduły oraz wodoodporne sondy.

Schemat podłączenia

Na poniższym obrazku pokazany jest schemat podłączenia termometrów do Raspberry Pi. Rezystor musi mieć wartość 4,7KΩ i być podłączony pomiędzy zasilaniem 3.3v (pin 1<>prawa nóżka) a kablem komunikacji (pin 7(GPIO4)<>środkowa nóżka). Trzecia lewa nóżka powinna być podłączona do GDN (pin 6)

ds1820 Raspberry pi

Odczytywanie informacji z czujników

Odczyt stanów i wartości z magistrali 1-wire odbywa się za pomocą odczytów z plików. Listę podpietych urządzeń można odczytać np. za pomocą poleceń

cd /sys/bus/w1/devices
ls

Po przejściu do katalogu sys/bus/w1/devices i wyświetleniu jego zawartości zobaczymy wszystkie podłączone urządzenia

28-0000045478fb  28-000004f3843c  28-0000054d14bc  28-0000054d6df0
28-000004f354e6  28-0000054cfeb2  28-0000054d52b8  w1_bus_master1

gdzie 28-00000xxxxxx to ID urządzeń a w1_bus_master1 określa pierwszy i jedyny główny kontroler w naszej malinie.

Możemy wyświetlić w łatwy sposób liczbę podłączonych czujników

cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slave_count
7

Możemy również wyświetlić listę ID podłączonych czujników

cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
28-0000054d6df0
28-0000054d52b8
28-000004f3843c
28-0000054d14bc
28-0000054cfeb2
28-000004f354e6
28-0000045478fb

Aby odczytać wartości temperatur oraz inne dane przykładowo z pierwszego czujnika z naszej listy wydajemy polecenie

cat /sys/bus/w1/devices/28-0000054d52b8/w1_slave

78 01 4b 46 7f ff 08 10 51 : crc=51 YES
78 01 4b 46 7f ff 08 10 51 t=23500

Temperatura podana jest w wartości t=23500, którą musimy podzielić przez 1000, dzięki czemu otrzymujemy ją w bardziej przyjaznym formacie – 23,5 (°C). Wartość crc=51 YES określa czy transmisja była wykonana bez błędów – w naszym przypadku się to udało.

Dzięki możliwości odczytu informacji o czujnikach z plików możemy praktycznie w każdym języku programowania odczytywać dane jak ze zwykłych plików tekstowych za pomoca wbudowanych funkcji i klas danego języka.

Polecane

Python

0 106
Python 3.6.4rc1 jest pierwszym kandydatem do następnego wydania Pythona 3.6.4 jako wydanie konserwacyjne. Podczas gdy wersja 3.6.4rc1 jest edycją poglądową, nie przeznaczoną dla środowisk...