Spisu treści:

Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi: 6 kroków (ze zdjęciami)
Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi: 6 kroków (ze zdjęciami)

Wideo: Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi: 6 kroków (ze zdjęciami)

Wideo: Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi: 6 kroków (ze zdjęciami)
Wideo: Raspberry Pi Zero 2 - wszystko co musisz wiedzieć ZANIM kupisz nowe Zero2W 2024, Listopad
Anonim
Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi
Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi
Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi
Monitorowanie temperatury i wilgotności za pomocą Raspberry Pi

Zbliża się lato, a osoby bez klimatyzacji powinny być przygotowane na ręczne kontrolowanie atmosfery w pomieszczeniu. W tym poście opisuję nowoczesny sposób pomiaru najważniejszych parametrów komfortu człowieka: temperatury i wilgotności. Zebrane dane są przesyłane do chmury i tam przetwarzane.

Używam płytki Raspberry Pi 1 i czujnika DHT22. Możesz zrobić to samo na dowolnym komputerze, który ma Internet, GPIO i Python. Tańszy czujnik DHT11 również działa dobrze.

Krok 1: Przygotowanie sprzętu

Przygotowanie sprzętu
Przygotowanie sprzętu
Przygotowanie sprzętu
Przygotowanie sprzętu

Zacznijmy od samego początku, ponieważ dość długo nie korzystałem z Raspberry Pi.

Będziemy potrzebować:

  • Płyta Raspberry Pi (lub inna platforma zorientowana na IoT).
  • Karta SD lub microSD (w zależności od platformy).
  • 5V/1A przez micro-USB.
  • Kabel LAN, który zapewnia połączenie z Internetem.
  • Wyświetlacz HDMI, wyświetlacz RCA lub port UART (w celu włączenia SSH).

Pierwszym krokiem jest pobranie Raspbian. Wybrałem wersję Lite, ponieważ zamierzam używać SSH zamiast wyświetlania. Rzeczy się zmieniły od ostatniego razu: teraz jest świetne oprogramowanie do nagrywania o nazwie Etcher, które działa doskonale i ma oszałamiający wygląd.

Po zakończeniu nagrywania obrazu włożyłem kartę SD do mojego Pi, podłączyłem kabel LAN i zasilający, a po chwili router zarejestrował nowe urządzenie.

Krok 2: Włączanie SSH

Włączanie SSH
Włączanie SSH
Włączanie SSH
Włączanie SSH
Włączanie SSH
Włączanie SSH

SSH jest domyślnie wyłączone. Mogę użyć konwertera UART-USB lub po prostu podłączyć wyświetlacz, aby uzyskać dostęp do powłoki i włączyć SSH.

Po ponownym uruchomieniu w końcu jestem gotowy. Najpierw zaktualizujmy:

aktualizacja sudo apt && aktualizacja sudo apt -y

Teraz połączmy to nowe urządzenie z chmurą.

Krok 3: Instalacja Cloud4RPi

Instalacja Cloud4RPi
Instalacja Cloud4RPi

Postanowiłem wypróbować platformę chmurową o nazwie Cloud4RPi, która jest przeznaczona dla IoT.

Zgodnie z dokumentacją do uruchomienia potrzebujemy następujących pakietów:

sudo apt zainstaluj git python python-pip -y

Bibliotekę klienta można zainstalować jednym poleceniem:

sudo pip zainstaluj cloud4rpi

Teraz potrzebujemy przykładowego kodu, aby upewnić się, że działa.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git clone https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv minimal./pyminimal. && rmdir -re

Postanowiłem uruchomić minimal.py, ale nie podobają mi się fałszywe dane. Na szczęście w tym przykładzie zauważyłem prosty sposób na urzeczywistnienie danych diagnostycznych. Dodaj jeszcze jeden import do sekcji importów:

z importu rpi *

Następnie usuń te funkcje, które dostarczają fałszywe dane (rpi.py definiuje je teraz):

def cpu_temp():

return 70 def ip_address(): return '8.8.8.8' def host_name(): return 'hostname' def os_name(): return 'osx'

Teraz potrzebujemy tokena, który pozwoli Cloud4RPi połączyć urządzenia z kontami. Aby je zdobyć, utwórz konto na cloud4rpi.io i naciśnij przycisk Nowe urządzenie na tej stronie. Zastąp ciąg _YOUR_DEVICE_TOKEN_ w pliku minimal.py tokenem urządzenia i zapisz plik. Teraz jesteśmy gotowi do pierwszego uruchomienia.

python minimal.py

Otwórz stronę urządzenia i sprawdź, czy są tam dane.

Przejdźmy teraz do danych ze świata rzeczywistego.

Krok 4: Podłączanie czujnika

Podłączanie czujnika
Podłączanie czujnika

Będziemy potrzebować:

  • Czujnik wilgotności DHT22 lub DHT11
  • Rezystor podciągający (5-10 KΩ)
  • Przewody

Czujnik DHT22 mierzy jednocześnie temperaturę i wilgotność. Protokół komunikacyjny nie jest ustandaryzowany, więc nie musimy go włączać w raspi-config - wystarczy prosty pin GPIO.

Aby zebrać dane, użyję świetnej biblioteki Adafruit dla czujników DHT, ale może nie działać tak, jak jest. Kiedyś znalazłem dziwne ciągłe opóźnienie w kodzie, które nie działało na moim sprzęcie, a po dwóch latach moje żądanie ściągnięcia wciąż jest w toku. Zmieniłem również stałe wykrywania płytki, ponieważ mój Raspberry Pi 1 z BCM2835 został niespodziewanie wykryty jako Raspberry Pi 3. Chciałbym, żeby to była prawda… Dlatego polecam używać mojego widelca. Jeśli masz z tym jakieś problemy, wypróbuj oryginalne repozytorium, może działa dla kogoś, ale ja do nich nie należę.

git klon https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Ponieważ biblioteka jest napisana w C, wymaga kompilacji, więc potrzebujesz pakietów build-essential i python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Podczas instalacji pakietów podłącz DHT22, jak pokazano na rysunku.

I przetestuj to:

cd ~python -c "importuj Adafruit_DHT jako d; print d.read_retry(d. DHT22, 4)"

Jeśli widzisz coś takiego (39.2000076293945, 22.60000381469727), powinieneś wiedzieć, że jest to wilgotność w procentach i temperatura w stopniach Celsjusza.

Teraz zbierzmy wszystko razem!

Krok 5: Wysyłanie odczytów czujnika do chmury

Wysyłanie odczytów czujnika do chmury
Wysyłanie odczytów czujnika do chmury

Użyję minimal.py jako bazy i dodam do niej interakcję DHT22.

cd cloud4rpi-raspberrypi-python

cp minimal.py ~/cloud_dht22.py cp rpi.py ~/rpi.py cd vi cloud_dht22.py

Ponieważ DHT22 zwraca zarówno temperaturę, jak i wilgotność w jednym wywołaniu, przechowuję je globalnie i aktualizuję tylko raz w żądaniu, zakładając, że opóźnienie między nimi wynosi ponad 10 sekund. Rozważmy następujący kod, który pozyskuje dane DHT22:

importuj Adafruit_DHT

temp, hum = Brak, Brak last_update = time.time() - 20 def update_data(): globalne last_update, hum, temp if time.time() - last_update > 10: hum, temp = Adafruit_DHT.read_retry(Adafruit_DHT. DHT22, 4) last_update = time.time() def get_t(): update_data() return round(temp, 2) jeśli temp nie jest Żadne inne Brak def get_h(): update_data() return round(hum, 2) jeśli hum nie jest Nikt inny Brak

Wstaw ten kod po istniejących importach i edytuj sekcję zmiennych tak, aby korzystała z nowych funkcji:

zmienne = {

'DHT22 Temp': { 'type': 'numeric', 'bind': get_t }, 'DHT22 Humidity': { 'type': 'numeric', 'bind': get_h }, 'CPU Temp': { 'type ': 'numeric', 'bind': cpu_temp } }

Naciśnij czerwony przycisk, aby rozpocząć transfer danych:

python cloud_dht22.py

Następnie możesz sprawdzić stronę urządzenia.

Możesz zostawić to tak, jak jest, ale wolę mieć usługę na wszystko. Gwarantuje to, że skrypt jest zawsze uruchomiony. Tworzenie usługi z w pełni zautomatyzowanym skryptem:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Uruchomienie usługi:

usługa sudo cloud4rpi start

I sprawdzając to:

pi@raspberrypi:~ $ status usługi sudo cloud4rpi -l

● cloud4rpi.service - demon Cloud4RPi Załadowany: załadowany (/lib/systemd/system/cloud4rpi.service; włączony) Aktywny: aktywny (uruchomiony) od środy 2017-05-17 20:22:48 UTC; 1min temu Główny PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.py 17 maja 20:22:51 raspberrypi python[560]: Publikowanie iot -hub/messages: {'type': 'config', 'ts': '2017-05-17T20…y'}]} 17 maja 20:22:53 raspberrypi python [560]: Publikowanie iot-hub/wiadomości: {'type': 'data', 'ts': '2017-05-17T20:2…40'}} 17 maja 20:22:53 raspberrypi python [560]: Publikowanie iot-hub/wiadomości: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Jeśli wszystko działa zgodnie z oczekiwaniami, możemy kontynuować i wykorzystać możliwości platformy Cloud4RPi do manipulowania danymi.

Krok 6: Wykresy i alarmy

Wykresy i alarmy
Wykresy i alarmy
Wykresy i alarmy
Wykresy i alarmy
Wykresy i alarmy
Wykresy i alarmy

Przede wszystkim wykreślmy zmienne, aby zobaczyć, jak się zmieniają. Można to zrobić, dodając nowy Panel sterowania i umieszczając w nim wymagane wykresy.

Kolejną rzeczą, którą możemy tutaj zrobić, jest ustawienie Alertu. Ta funkcja umożliwia skonfigurowanie bezpiecznego zakresu dla zmiennej. Gdy tylko zakres zostanie przekroczony, wysyła powiadomienie e-mail. Na stronie edycji Panelu sterowania możesz przełączyć się na Alerty i skonfigurować je.

Zaraz potem wilgotność w moim pokoju zaczęła gwałtownie spadać bez zauważalnego powodu i wkrótce nastąpił alarm.

Możesz używać Cloud4RPi za darmo z dowolnym sprzętem, który jest w stanie uruchomić Pythona. Jeśli chodzi o mnie, teraz zawsze wiem, kiedy włączyć nawilżacz powietrza, a nawet mogę podłączyć go do przekaźnika w celu zdalnego sterowania przez Cloud4RPi. Jestem przygotowany na upały! Witamy lato!

Zalecana: