Monitorowanie temperatury w Raspberry Pi

Monitorowanie temperatury w Raspberry Pi

Video gracze.COM/WP-Content/Uploads/2020/10/2020-09-29-20-47-25.MP400: 0000: 0000: 40 Zastosuj klawisze strzałek w górę/w dół, aby zwiększyć lub zmniejszyć objętość.
Monitorowanie temperatur może być wymagane w wielu projektach Raspberry Pi. Jest to stosunkowo łatwe do zrobienia w Raspberry Pi, a komponenty wymagane dla tego projektu nie są zbyt kosztowne.W tym artykule pokazuje, jak używać modułu termometru cyfrowego DS18B20 do monitorowania temperatury za pomocą Raspberry Pi. Artykuł pokazuje również, jak utworzyć aplikację internetową do wyświetlenia temperatury.

Rzeczy, których będziesz potrzebować:

Aby wypróbować przykłady w tym artykule, potrzebujesz następujących:

  1. Komputer jednoosobowy Raspberry Pi
  2. Adapter mocy urządzenia Raspberry Pi
  3. Karta microSD z zainstalowanym systemem Raspberry Pi
  4. Łączność sieciowa na urządzeniu Raspberry Pi
  5. Tablica chleba
  6. 3 komputery drutów łączących kobiety do kobiet
  7. Niektóre przewody łączące mężczyzn do męskiej
  8. Rezystor 10k
  9. Cyfrowy moduł termometru DS18B20

DS18B20 Digital Thermometr Pinouts

Jeśli trzymasz termometr cyfrowy DS18B20, jak pokazano na poniższym obrazku, pierwszym pinem będzie podłoże (GND), Drugi pin będzie DANE, A trzeci pin będzie VCC.

Schemat obwodu

Schemat obwodu monitora temperatury pokazano na poniższym obrazku.

Tutaj Pin2/5v urządzenia Raspberry Pi powinno być podłączone do Pin3/vcc cyfrowego modułu termometru.

Pin7/GPIO4 urządzenia Raspberry Pi powinno być podłączone do Pin2/dane cyfrowego modułu termometru.

Pin9/gnd urządzenia Raspberry Pi powinno być podłączone do Pin1/gnd cyfrowego modułu termometru.

A Rezystor 10kΩ powinien być połączony między Pin2 I Pin3 cyfrowego modułu termometru.

Powinieneś trzymać swoje Raspberry Pi, jak pokazano na poniższym obrazku. Następnie będzie górny szpilka Pin1. Szpilka tuż obok Pin1 będzie Pin2. Następnie, jeśli przejdziesz do przodu, po lewej będzie Pin3 I właściwy będzie Pin4, i tak dalej.

Po podłączeniu wszystkich komponentów z urządzeniem Raspberry Pi powinno wyglądać mniej więcej tak:

Przyjrzyj się bliżej, jak umieściłem komponenty na tablicy chleba.

Po podłączeniu wszystkich komponentów do urządzenia Raspberry Pi, zasil na urządzeniu Raspberry Pi. Następnie podłącz się do urządzenia Raspberry Pi za pośrednictwem VNC lub SSH.

Odczyt dane temperatury z cyfrowego termometru DS18B20

Moduł termometru DS18B20 wykorzystuje protokół komunikacji 1-wire do wysyłania danych do Raspberry Pi. Domyślnie interfejs 1-wire nie jest włączony. Możesz łatwo włączyć interfejs z narzędzia konfiguracyjnego Raspberry Pi.

Aby włączyć interfejs 1-wire, uruchom Raspi-Config Z następującym poleceniem:

$ sudo raspi-config

Wybierać Opcje interfejsu i naciśnij .

Wybierać 1-wire i naciśnij .

Wybierać i naciśnij .

Naciskać .

Wyjść z Raspi-Config narzędzie, prasa .

Aby zmienić zmiany, ponownie uruchom swoje Raspberry Pi w następujący sposób:

$ sudo restart

Aby sprawdzić, czy W1_GPIO I W1_THERM Moduły jądra są ładowane, uruchom następujące polecenie:

$ sudo lsmod | GREP W1

Jeśli z jakiegoś powodu, W1_THERM Moduł nie jest ładowany, a następnie możesz ręcznie załadować go następującym poleceniem:

$ sudo modprobe w1_therm

Po włączeniu Komunikacja 1-wire i załadował W1_THERM moduł, nowe urządzenie (28-00000BA693E9, w moim przypadku) powinno być wymienione w /sys/bus/w1/urządzenia katalog, jak widać na zrzucie ekranu poniżej.

$ ls/sys/bus/w1/urządzenia/

Przejdź do nowego katalogu, w następujący sposób:

$ cd/sys/bus/w1/devices/28-00000ba693e9

Powinieneś znaleźć temperatura plik w katalogu, jak widać na zrzucie ekranu poniżej.

$ ls -lh

temperatura Plik to zwykły plik tekstowy. Możesz odczytać dane dotyczące temperatury za pomocą kot polecenie, jak następuje:

Temperatura kota

Jak widać, dane dotyczące temperatury są drukowane na konsoli. Tutaj, 30375 oznacza 30.375 ° C.

Możesz użyć języka programowania, takiego jak Python lub Węzeł.JS, aby przeanalizować te dane temperatury i użyć ich w swojej aplikacji. Pokażę ci, jak to zrobić w następnej sekcji tego artykułu.

Aby przeanalizować dane temperaturowe za pomocą języka programowania, będziesz potrzebować bezwzględnej ścieżki do temperatura plik. Możesz to znaleźć za pomocą Readlink polecenie, jak następuje:

$ readlink -f temperatura

Utwórz aplikację internetową, aby wyświetlić dane temperaturowe:

W tej sekcji dowiesz się, jak anulować dane temperatury z modułu termometru DS18B20 i wyświetlić je w aplikacji internetowej.

W tym przykładzie utworzę interfejs API, który przeanalizuje dane temperatury z modułu termometru DS18B20, do którego można uzyskać dostęp z interfejsu API. Utworzę również aplikację internetową, która pobiera dane temperatury z interfejsu API i ładnie je wyświetli. Użyję węzła.JS Programowanie języka, aby to zrobić. Kody są przesyłane w moim repozytorium Github Shovon8/DS18B20-RaspberryPi-API. Możesz to sprawdzić, jeśli masz trudności z kopiowaniem kodów z tego artykułu.

Węzeł.JS domyślnie nie jest instalowany na systemie Raspberry Pi. Ale jest dostępny w oficjalnym repozytorium pakietów Raspberry Pi OS. Możesz łatwo zainstalować węzeł.JS z repozytorium pakietu Raspberry Pi OS.

Najpierw zaktualizuj pamięć podręczną repozytorium pakietów Apt za pomocą następującego polecenia:

Aktualizacja $ sudo apt

Następnie zainstaluj węzeł.JS i NPM z następującym poleceniem:

$ sudo apt instal nodejs nodejs

Aby potwierdzić instalację, naciśnij Y a następnie naciśnij .

Menedżer pakietów Apt pobranie i zainstaluje wszystkie wymagane pakiety. Ukończenie może potrwać trochę czasu.

W tym momencie węzeł.JS i NPM powinny być zainstalowane.

Raz węzeł.JS i NPM są instalowane, sprawdź, czy węzeł I NPM Polecenia są dostępne w następujący sposób:

$ node --version
$ npm --version

Uaktualnij NPM za pomocą następującego polecenia:

$ sudo npm instalacja -global npm

NPM powinien zostać zaktualizowany.

Jak widać, NPM został zaktualizowany z wersji 5.8.0 do wersji 6.14.8.

$ node --version
$ npm --version

Teraz ten węzeł.JS i NPM są instalowane, utwórz nowy katalog projektu ~/DS18B20, następująco:

$ mkdir -v ~/ds18b20

Przejść do ~/DS18B20 katalog, jak następuje:

$ CD ~/DS18B20

Utwórz puste pakiet.JSON Plik z następującym poleceniem:

$ npm init - -y

Zainstaluj Wyrazić.JS Biblioteka projektu z następującym poleceniem:

$ npm instaluj -Save Express

Ekspres.Biblioteka JS powinna być teraz zainstalowana.

Utwórz nowy plik serwer.JS W katalogu projektu, w następujący sposób:

$ Nano Server.JS

Wprowadź następujące wiersze kodów w serwer.JS plik.

LUT Express = wymaga („Express”);
Niech fs = wymaga („fs”);
let Server = Express ();
const port = 8080;
const webroot = './publiczny';
serwer.Get ('/', Express.statyczny (Webroot));
serwer.GET ('/TEMSEMPETRE', (req, res) =>
Niech tempdatapath = '/sys/bus/w1/devices/28-00000ba693e9/temperatura';
Niech temperatura = FS.ReadfileSync (tempDatapath, kodowanie: „utf8”, flaga: „r ') / 1000;
res.JSON (temperatura, Rangestart: -55, Rangeend: 125);
);
serwer.Listen (port, () =>
konsola.log ('serwer działający na porcie $ port');
);

Po zakończeniu naciśnij + X śledzony przez Y I Aby zapisać serwer.plik JS.

Tutaj Import linii 1 wyrazić, i linia 2 importuje fs moduł.

Linia 4 inicjuje Express.

Linia 6 i 7 definiują PORT I Webroot odpowiednio stałe zmienne. API i Webserver będą działać PORT (który jest 8080, w tym artykule), a serwer Web Webroot (który jest publiczny/ katalog w katalogu projektu w tym artykule).

Linia 9 służy do konfigurowania Express do obsługi treści statycznych z Webroot.

Linie 11-15 definiują punkt końcowy API /temperatura, które zostaną wykorzystane do wprowadzenia danych temperatury do formatu JSON.

W linii 12, TempDatapath Zmienna utrzymuje bezwzględną ścieżkę do temperatura plik cyfrowego modułu termometru DS18B20, pokazany we wcześniejszej sekcji tego artykułu.

W wierszu 13 dane temperatury są odczytywane z temperatura plik za pomocą węzła.moduł JS FS, a dane temperatury są przechowywane w temperatura zmienny.

W wierszu 14 dane dotyczące temperatury są drukowane w formacie JSON. Cyfrowy moduł termometru DS18B20 może mierzyć między temperaturami -55 ° C do 125 ° C. Dodałem, że na wyjściu JSON za pomocą Rangestart I Zakres nieruchomości.

Wreszcie linia 17-19 uruchamia API i serwer Web PORT (który jest 8080, w tym artykule).

Stwórz publiczny/ Katalog w katalogu projektu, w następujący sposób:

$ mkdir -v publiczne

Uruchom serwer.JS Program z następującym poleceniem:

$ Node Server.JS

Serwer powinien działać na porcie 8080.

Możesz uzyskać dostęp do danych temperaturowych modułu termometru DS18B20 z /temperatura punkt końcowy API.

Aby sprawdzić, czy możesz uzyskać dane temperaturowe z interfejsu API, uruchom kędzior, następująco:

$ curl -s http: // localhost: 8080/Temperatura | JSON_PP

Jak widać, dane temperatury są wydrukowane na konsoli w formacie JSON. API działa więc.

Naciskać + C Aby zatrzymać serwer.

Teraz utworzę stronę internetową, która poprosi o serwer API dla danych temperatury i wyświetli go ładnie na stronie. Dane dotyczące temperatury będą aktualizowane co 5 sekund.

Stwórz nowy indeks.html plik w publiczny/ Katalog projektu, w następujący sposób:

$ nano public/indeks.html

Wprowadź następujące wiersze kodów w indeks.html plik.




Monitor temperatury







00.00 ° C


Aktualizacje temperatury co 5 sekund



Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować indeks.html plik.

Plik HTML indeks.html jest łatwe do zrozumienia. Jest to format, w którym dane temperatury będą wyświetlane w aplikacji internetowej.

Tutaj linie 53-55 są używane do wyświetlania paska postępu, a do wyświetlania temperatury używane są linie 57-60.

Linie 5-49 są używane do ładnego dekoracji aplikacji internetowej za pomocą CSS (arkusz stylów kaskadowych).

Linie 62-109 są używane do funkcjonowania aplikacji internetowej. Kody JavaScript są używane do animentacji paska postępu, pobierania danych temperaturowych z interfejsu API i wyświetlania informacji.

Linia 63 działa główny funkcja po załadowaniu aplikacji internetowej do przeglądarki.

główny Funkcja jest bardzo długa. Rozciąga się od linii 65 do linii 108. W obrębie głównej funkcji mamy inne funkcje, takie jak GetTemperature, UpdateTemperature, postęp aktualizacji, App, I początek.

postęp aktualizacji Funkcja, w wierszach 83-86, przyjmuje procent postępu jako wejście i aktualizuje pasek postępu.

UpdateTemperature Funkcja w wierszach 77-81 przyjmuje dane temperatury jako dane wejściowe i aktualizuje aplikację internetową z danymi temperaturowymi.

GetTemperature funkcja w wierszach 66-75 złoży żądanie do /temperatura punkt końcowy interfejsu API i otrzymuje dane temperaturowe. Po otrzymaniu danych wywołuje to UpdateTemperature Funkcja z danymi. UpdateTemperature Następnie aktualizuje aplikację internetową o nowe dane dotyczące temperatury.

App Funkcja, w wierszach 88-99, animuje pasek postępu i żąda danych temperatury z API co 5 sekund.

początek Funkcja, w wierszach 101-104, uruchamia aplikację internetową.

Otworzyć pakiet.JSON Plik z nano edytorem tekstu w następujący sposób:

Pakiet $ nano.JSON

Zmiana główny Do serwer.JS i dodaj nowy skrypt podawać w Skrypty sekcja, jak zaznaczono na zrzucie ekranu poniżej.

Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować pakiet.JSON plik.

Teraz, gdy wszystko jest gotowe, uruchom aplikację internetową i API za pomocą następującego polecenia:

$ NPM Run Serve

Serwer powinien działać na porcie 8080.

Teraz otwórz przeglądarkę internetową na urządzeniu Raspberry Pi i odwiedź http: // localhost: 8080. Dane temperaturowe z modułu termometru cyfrowego DS18B20 powinny być wyświetlane w przeglądarce internetowej, jak widać na zrzucie ekranu poniżej.

Dane dotyczące temperatury powinny być aktualizowane co 5 sekund.

Jak widać, temperatura zmienia się co 5 sekund.

Jeśli chcesz uzyskać dostęp do aplikacji internetowej z innego komputera w sieci, musisz znać adres IP swojego urządzenia Raspberry Pi.

Adres IP swojego urządzenia Raspberry Pi można znaleźć za pomocą następującego polecenia:

$ hostName -i

Jak widać, adres IP mojego urządzenia Raspberry Pi to 192.168.0.107. To będzie inne dla Ciebie. Pamiętaj więc, aby odtąd zastąpić adres IP.

Gdy znasz adres IP swojego urządzenia Raspberry Pi, powinieneś mieć dostęp do aplikacji internetowej z dowolnego komputera w sieci za pomocą przeglądarki internetowej. Po prostu odwiedź http: // 192.168.0.107: 8080, a aplikacja internetowa powinna wyświetlać dane temperatury z modułu termometru cyfrowego DS18B20.

Wniosek

W tym artykule nauczyłeś się używać modułu termometru cyfrowego DS18B20 w Raspberry Pi do pomiaru temperatury. Nauczyłeś się również, jak tworzyć węzeł.JS API do wyświetlania danych temperaturowych w aplikacji internetowej, która uzyskuje dostęp do danych temperatury z interfejsu API i wyświetla je. Ten artykuł powinien pomóc Ci zacząć z monitorowaniem temperatury Raspberry PI z modułem termometru DS18B20 i IoT z Raspberry Pi.