Tags Posts tagged with "termometr"

termometr

BeagleBoard

Ostatnio pisaliśmy o obsłudze termometrów w Raspberry Pi. Tym razem pokażemy jak wygląda sprawa odczytu temperatur z czujników za pomocą BeagleBone Black, która nie posiada złącza 1-wire, ale za to w przeciwieństwie do Raspberry Pi posiada siedem złączy analogowych do których bez problemów podłączymy analogowe czujniki temperatury. W artykule tym pokażemy jak łatwo można podłączyć i odczytać temperatury z termometrów LM35DZ.

Wybór czujników

Do naszego przykładu wykorzystaliśmy analogowy czujnik temperatury LM35DZ.

Schemat podłączenia

Na poniższym obrazku przedstawiliśmy schemat podłączenia termometru LM35DZ do złącz GPIO BBBlack. Aby przypomnieć sobie układ portów GPIO polecamy zobaczyć nasz artykułu BeagleBone Black – złącza GPIO. Pierwsza nóżka od lewej z czujnika podłączona jest do pinu 5 (5V), środkowa nóżka podłączona jest do pinu 40 (wejście analogowe AIN1) a trzecia nóżka do analogowego minusa GND_ADC.

BeagleBone Black termometr schemat

Program do odczytu temperatury

Utworzymy prosty program, który będzie wyświetlać nam temperaturę z naszego czujnika. Aby program zadziałał należy zainstalować bibliotekę AdafruitBBIO. Opisywaliśmy proces instalacji biblioteki w artykule BeagleBone Black – sterowanie diodami.
Tworzymy plik temperatura.py

nano temperatura.py

i wklejamy poniższy kod

import Adafruit_BBIO.ADC as ADC
import time

ADC.setup()

while True:
    reading = ADC.read("P9_40")
    mv = reading * 5000
    temp_c = (mv - 500) / 10
    temp_f = (temp_c * 9/5) + 32
    print('C=%d F=%d' % (temp_c, temp_f))
    time.sleep(1)

Program odczytuje wartość, którą pomnażamy przez 5000 (5V=5mV które zasila nasz czujnik). I na podstawie wartości mV obliczamy temperaturę w stopniach Celsjusza a następnie z niej obliczamy temperaturę w stopniach Fahrenheita. A na końcu program wyświetla nasze wartości temperatur.

Uruchamiamy naszą aplikację

python temperatura.py

powinniśmy zobaczyć odczyty z naszego czujnika podanej temperatury w stopniach Celsjusza i Fahrenheita

root@beaglebone:~# python temperatura.py
C=22 F=73
C=23 F=73
C=22 F=73
C=22 F=73
C=23 F=73
C=22 F=73
C=22 F=73

Aby zatrzymać program naciskamy CTRL+c

Oczywiście istnieje możliwość odczytu temperatury z cyfrowego czujnika ds18B20. Opis jak tego dokonać znajdziecie TU.

Artykuł ten jest częścią serii o BeagleBone Black. Za dostarczenie płytki oraz termometru dziękujemy BOTLAND.com.pl

przez -
32 32289
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

Prasa, Czasopismo

1 868
Ukazało się Linux Magazine – numer 161. Lipcowe wydanie magazynu zawiera analizę tworzenia bardziej czytelnych wyrażeń regularnych z Simple Regex Language, instrukcje zabezpieczania i...