Spisu treści:

Serwer danych o podwójnej temperaturze IoT: 12 kroków (ze zdjęciami)
Serwer danych o podwójnej temperaturze IoT: 12 kroków (ze zdjęciami)

Wideo: Serwer danych o podwójnej temperaturze IoT: 12 kroków (ze zdjęciami)

Wideo: Serwer danych o podwójnej temperaturze IoT: 12 kroków (ze zdjęciami)
Wideo: Obejrzyj ten odcinek, zanim skończy Ci się miejsce - Domowy serwer NAS 2024, Czerwiec
Anonim
Serwer danych o podwójnej temperaturze IoT
Serwer danych o podwójnej temperaturze IoT

To moja pierwsza próba napisania Instructable, więc proszę, nie przejmuj się! Jeśli uważasz, że nie jest tak źle, to proszę zagłosuj na mnie w Konkursie Autorskim Pierwszy raz.

To jest mój projekt Lock-Down do zdalnego monitorowania 2 temperatur w szklarni, jednej na poziomie podłogi i jednej tuż pod dachem. Chociaż wcześniej korzystałem z Raspberry Pi (RPi), ten projekt obejmował kilka elementów, których nie używałem, a po drodze znalazłem kilka samouczków, które były nieaktualne lub po prostu błędne. To jest mój zbiór wiedzy, aby stworzyć działający podwójny zdalny monitor temperatury z cyfrowych czujników temperatury Pi Zero i 2 DS18B20+ One Wire, który został nabyty po drodze.

Rzeczy, o których się dowiedziałem:

  • Udostępnianie danych z urządzenia w ramach Internetu Rzeczy (IoT)
  • Interfejs 1-Wire z 2 urządzeniami
  • Zgodność danych
  • Dane JSON
  • Konfigurowanie zapory UFW
  • Używanie Freeboard.io do wyświetlania danych
  • Konfigurowanie RPi do automatycznego uruchamiania programu

Istnieje ogromna ilość danych, które można znaleźć za pomocą prostego wyszukiwania we wszystkich tych tematach, ale nie jest tak jasne, jak połączyć wszystkie te oddzielne elementy.

Kieszonkowe dzieci

  • Będziesz potrzebował Raspberry Pi (z monitorem, myszą i klawiaturą do konfiguracji, ale nie podczas uruchamiania gotowego projektu)
  • Działające połączenie internetowe.
  • Zasilacz ze złączem Micro USB
  • 2 jednoprzewodowych cyfrowych czujników temperatury DS18B20+. Okazało się, że Amazon był najtańszy
  • Rezystor 4K7 omów lub użyłem 2 oporników 10K omów.
  • Mała płytka stykowa i kilka przewodów męskich/żeńskich do testowania na stole
  • Mały kawałek stripboardu do końcowego montażu
  • Proste narzędzia do lutowania i ściągania izolacji.
  • Małe plastikowe pudełko do przechowywania gotowego projektu

Krok 1: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

Miałem już Raspberry Pi Zero W (z łącznością bezprzewodową), ale jestem pewien, że ten prosty projekt będzie działał dobrze na każdym z RPI. Pudełko z dziwnymi elektronicznymi bitami w moim warsztacie miało wszystko inne (płytka stykowa, przewód, zasilacz itp.), więc wszystko, co musiałem kupić, to dwa czujniki 2 x DS18B20 od Amazona. Są to normalne chipy DS18B20, po prostu wygodnie zamontowane w wodoodpornej obudowie i 3m kablu. Z kabla są 3 przewody:

  • Czerwony – zasilanie – podłącz do pinu 3.3v 1
  • Czarny – powrót – podłącz do masy pin 6
  • Żółty – dane – podłącz do GPIO4 pin 7

Czujniki wykorzystują interfejs 1-Wire i są bardzo łatwe w podłączaniu i pobieraniu danych. Istnieje kilka stron w sieci Web ze szczegółami dotyczącymi podłączania 1 urządzeń, ale bardzo niewiele na temat podłączania 2 (lub więcej).

Do testowania na stole obwód został zmontowany za pomocą płytki stykowej. W samouczkach, które znalazłem, stwierdzono, że używam rezystora 4K7 do polaryzacji linii danych, ale nie mogłem go znaleźć, więc użyłem 2 * 10K równolegle i działało dobrze. W sieci jest mnóstwo zasobów dotyczących używania płytki prototypowej do montażu obwodów RPi, więc nie będę ich tutaj powtarzał.

Schemat utworzony za pomocą schematu obwodu

Krok 2: Konfiguracja oprogramowania Raspberry Pi OS

Konfiguracja oprogramowania Raspberry Pi OS
Konfiguracja oprogramowania Raspberry Pi OS
Konfiguracja oprogramowania Raspberry Pi OS
Konfiguracja oprogramowania Raspberry Pi OS
Konfiguracja oprogramowania Raspberry Pi OS
Konfiguracja oprogramowania Raspberry Pi OS

Ponieważ wcześniej używałem tego RPi, postanowiłem rozpocząć od czystej instalacji systemu operacyjnego, sformatowałem kartę SD i zainstalowałem czystą wersję NOOBS. Następnie zainstalowałem pełną wersję Raspiana na komputery stacjonarne (najlepsza opcja), ponieważ zainstalowałoby to również PIP i GIT, których nie ma wersja Lite. Mimo że nie potrzebowałem graficznego interfejsu użytkownika (GUI) do projektu, jest to łatwy sposób na ustawienie wszystkich opcji, a z kartą SD 16 GB nie brakowało miejsca.

Skonfigurowałem dostęp do WI-FI, a następnie uruchomiłem pełną instalację, a następnie kreatora z aktualizacjami i uaktualnieniami itp. Korzystając z GUI, konfiguruję RPI zgodnie z potrzebami tylko dlatego, że korzystanie z GUI jest prostsze niż interfejs wiersza poleceń (CLI). Wszedłem do okna konfiguracji z menu a następnie:

  • W zakładce system zmieniłem hasło, ustawiłem bootowanie na CLI i odznaczyłem Auto Login
  • W zakładce interfejsy włączyłem 1-wire
  • Kliknął ok i ponownie uruchomił

Jeśli chcesz wrócić do GUI w dowolnym momencie, po prostu wpisz startx w CLI

startx

Krok 3: Skonfiguruj Dataplicity, aby umożliwić zdalny dostęp

Skonfiguruj zgodność danych, aby umożliwić zdalny dostęp
Skonfiguruj zgodność danych, aby umożliwić zdalny dostęp
Skonfiguruj zgodność danych, aby umożliwić zdalny dostęp
Skonfiguruj zgodność danych, aby umożliwić zdalny dostęp
Skonfiguruj zgodność danych, aby umożliwić zdalny dostęp
Skonfiguruj zgodność danych, aby umożliwić zdalny dostęp

Znalazłem naprawdę pomocny wpis na blogu na stronie Dataplicity pod adresem https://blog.dataplicity.com/how-to-build-a-raspb… i wykorzystałem kilka jego części. Sekcja 3 bloga opisuje konfigurację Dataplicity dla zdalnego dostępu do RPi. Nigdy wcześniej nie korzystałem z Dataplicity, ale muszę przyznać, że zdecydowanie polecam go jako bardzo proste narzędzie zdalnego dostępu. Chociaż zrzuty ekranu (na powyższym blogu) są trochę nieaktualne, zasada jest w porządku.

Na komputerze wejdź na Dataplicity.com i utwórz konto (możesz używać przeglądarki w GUI, ale raczej wolno na RPi Zero). Następnie kliknij przycisk „dodaj nowe urządzenie”, a w wyskakującym okienku pojawi się wiersz kodu. Następnie przejdź do CLI na RPi i wpisz wiersz tekstu. Jeśli wszystko jest w porządku, wyświetli się logo Dataplicity i uruchomi się program instalacyjny.

Z powrotem na komputerze nowe urządzenie powinno teraz pojawić się na stronie Dataplicity. Kliknij urządzenie i powinieneś zobaczyć ekran terminala dla twojego RPi.

Należy tutaj zwrócić uwagę na kilka rzeczy:

  • Aby się zalogować, wpisz „su pi” (aby uzyskać dostęp superużytkownika) i zostaniesz poproszony o podanie hasła (jak ustawione wcześniej)
  • Musisz włączyć tunel czasoprzestrzenny (do wykorzystania później)
  • Adres tunelu czasoprzestrzennego będzie potrzebny do późniejszego wyświetlania danych (kliknij prawym przyciskiem myszy, aby skopiować w razie potrzeby)

Możesz użyć tego zdalnego dostępu do wszystkich poniższych kroków i jest znacznie łatwiejszy do kopiowania danych, programów itp. niż bezpośrednio na RPi.

Krok 4: Sprawdź czujniki

Możesz teraz używać Dataplicity zdalnego dostępu do RPI dla wszystkich następnych sekcji.

Jeśli wszystko jest teraz w porządku, powinieneś być w stanie zobaczyć temperatury zwracane z DS18B20. Przepracowałem samouczek Pi Hut, ale większość z nich nie była wymagana. Jeśli chcesz uzyskać pełne informacje, możesz je znaleźć tutaj:

Ważne bity to przejście do katalogu urządzeń i upewnienie się, że wyświetlane są 2 różne czujniki.

cd /sys/bus/w1/urządzenia/

Powinno to pokazać 2 urządzenia zaczynające się od 28- i master magistrali. Kopalnia pokazuje:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Te 2 numery identyfikacyjne są ważne i będą potrzebne później! Następnie przejdź do jednego z katalogów czujników:

cd 28-011453ebfdaa

(na przykład) a następnie odczytać wartość z czujnika

kot w1_niewolnik

Powinny być pokazane 2 wiersze tekstu:

53 01 4b 46 7f ff 0c 10 2d: crc=2d TAK

53 01 4b 46 7f ff 0c 10 2d t=21187

TAK oznacza, że czujnik odczytuje prawidłowo, a 21187 pokazuje temperaturę w stopniach Celsjusza 21,187 (podziel przez 1000). Powtórz to, aby sprawdzić drugi czujnik. Jeśli oba czytają dobrze, możemy przejść do czytania danych za pomocą Python3.

Skopiowałem i zaadaptowałem poniższy kod, który znalazłem w sieci, ale nie pamiętam skąd. Jeśli to wygląda na twój kod, przepraszam, ponieważ nie było zamierzonego plagiatu; proszę daj mi znać, a ja docenię twoją pracę.

Utwórz katalog o nazwie projekty i przejdź do tego katalogu.

mkdir ~/projekty

cd ~/projekty

W tym katalogu użyj edytora tekstu (nano), aby utworzyć i edytować plik o nazwie thermo-test.py

sudo nano thermo-test.py

Powinno to otworzyć edytor, a ponieważ używasz Dataplicity, możesz po prostu skopiować poniższy kod (thermo-test.py) i wkleić do edytora. Będziesz musiał zmienić 2 nazwy urządzeń (począwszy od 28-…) na te wymienione powyżej. Gdy wszystko wygląda poprawnie, naciśnij ctrl+X, aby zakończyć, Y, aby zapisać i wrócić, aby użyć istniejącej nazwy. Jeśli wolisz używać GUI, Thonny zrobi to samo.

Aby uruchomić program testowy:

sudo python3 thermo-test.py

Wszystko w porządku, powinno to wykonać plik za pomocą Pythona 3 i wydrukować na ekranie 2 temperatury co 10 sekund. Możesz sprawdzić, czy wszystko jest w porządku, umieszczając 1 czujnik w lodowatej wodzie lub delikatnie ogrzewając suszarką do włosów. Jeśli wszystko wydaje się w porządku, możemy iść dalej!

Krok 5: Zapora sieciowa UFW

Zapora sieciowa UFW
Zapora sieciowa UFW

Ponieważ ten RPi miał być na stałe podłączony do Internetu, zdecydowałem, że zapora ogniowa będzie dobrym pomysłem, a prostym w użyciu jest nieskomplikowana zapora ogniowa (ufw). Tutaj jest bardzo prosty samouczek

Nie zagłębiam się w szczegóły, ponieważ nie jest to celem tego Instruktażu, ale w skrócie:

Zainstaluj zaporę za pomocą:

sudo apt-get zainstaluj ufw

Ustaw domyślne reguły:

sudo ufw domyślnie zezwalaj na wychodzące

sudo ufw domyślne odrzucanie przychodzących

Otwórz port 80 dla Dataplicity

sudo ufw zezwól na 80

Włącz zaporę

włączanie sudo ufw

Sprawdź status i upewnij się, że wszystko działa

status sudo ufw

Krok 6: Wysyłanie danych temperatury w formacie JSON

Wysyłanie danych o temperaturze w formacie JSON
Wysyłanie danych o temperaturze w formacie JSON

Wróć do bloga Tima Fernando i sekcji 5.

Postępuj zgodnie z instrukcjami (z wyjątkiem tego, że już stworzyliśmy katalog projektów) i wszystko powinno działać poprawnie. Korzystając z GIT, pobierzesz pliki aplikacji Tima, a PIP upewni się, że wszystkie wymagane programy są zainstalowane na twoim RPi. Następnie stwierdziłem, że muszę ponownie uruchomić komputer, aby upewnić się, że wszystkie pakiety zostały poprawnie skonfigurowane.

Następnie uruchom program Tima, a twoje RPi powinno dostarczyć dane JSON dla pierwszego czujnika.

cd home/pi/projekty/ temperatura-serwe-pi

temperatura sudo gunicorn: app -b 0.0.0.0: 80

Możesz przejść przez blog do sekcji 6, w której znajdziesz dane dotyczące jednego z czujników.

Możesz również użyć przeglądarki JSON Viewer, aby zobaczyć dane https://codebeautify.org/jsonviewer Kliknij przycisk „załaduj URL” i wklej adres Wormhole odnotowany wcześniej. W lewym okienku powinieneś zobaczyć dwa wpisy, jeden dla Celsjusza i jeden dla Fahrenheita.

Krok 7: Wyślij dane z obu czujników

Wyślij dane z obu czujników
Wyślij dane z obu czujników

Na podstawie kodu w temperature.py i thermo-test.py stworzyłem 2temps.py Edytowany jak poprzednio w katalogu /projects/temperature-serve-pi, wklejony do kodu i zapisany. wtedy pobiegłem

sudo gunicorn 2temps:app -b 0.0.0.0:80

Teraz, gdy ponownie uruchomiłem przeglądarkę JSON, otrzymałem wartości dla temp1 i temp2

Powodzenie:)

Krok 8: Automatyczne uruchamianie

Automatyczny start
Automatyczny start

Ponieważ zasilanie szklarni jest od czasu do czasu wyłączane, chciałem, aby RPi automatycznie ładował program i zaczął sprawdzać dane. Najprostszym sposobem wydaje się być edycja pliku rc.local i dodanie wymaganego kodu na dole tuż nad linią wyjścia 0.

cd itp

sudo nan rc.local

następnie dodatek

spać 10

cd home/pi/projekty/temperatura-serwe-pi sudo gunicorn temp04:app -b 0.0.0.0:80 &

  • Znak & na końcu mówi komputerowi, aby uruchomił skrypt w powłoce podrzędnej, aby komputer nie czekał na zakończenie funkcji i kontynuował rozruch
  • Sleep 10 [sekundy] upewnia się, że wszystkie poprzednie operacje zostały zakończone przed uruchomieniem usługi.

Wyjdź i zapisz jak poprzednio. Następnie uruchom ponownie i ponownie uruchom przeglądarkę JSON, aby sprawdzić, czy wszystko jest w porządku.

Jeśli chcesz uzyskać więcej informacji na temat automatycznie uruchamianych programów, znajdziesz tutaj świetny samouczek

Krok 9: Wyświetl dane na Freeboard.io (1)

Wyświetl dane na Freeboard.io (1)
Wyświetl dane na Freeboard.io (1)

Podsumowując, kroki na blogu Tima działają dobrze; załóż konto na www.freeboard.io, a następnie utwórz nowy Freeboard, nazwałem moje SHEDTEMPERATURES.

Najpierw dodaj źródło danych, kliknij DODAJ w prawym górnym rogu iz wyskakującego okienka wybierz JSON jako typ, nadaj źródłu danych NAZWĘ, dodaj wcześniejszy adres tunelu jako adres URL i kliknij NIE dla WYPRÓBUJ PROXY. Temperatury zmieniają się bardzo powoli, więc ODŚWIEŻANIE CO 15 SEKUND jest w porządku. Kliknij ZAPISZ.

Krok 10: Wyświetl dane na Freeboard.io (2)

Wyświetl dane na Freeboard.io (2)
Wyświetl dane na Freeboard.io (2)
Wyświetl dane na Freeboard.io (2)
Wyświetl dane na Freeboard.io (2)
Wyświetl dane na Freeboard.io (2)
Wyświetl dane na Freeboard.io (2)
Wyświetl dane na Freeboard.io (2)
Wyświetl dane na Freeboard.io (2)

Kliknij DODAJ OKIENKO, a następnie +, aby dodać pierwszy widżet. Możesz wybierać i bawić się różnymi TYPAMI, ale stwierdziłem, że Gauge jest w porządku. Podaj odpowiedni TYTUŁ, JEDNOSTKI (C), MINIMUM i MAKSIMUM, aby pasowały do Twojego zastosowania. W przypadku ŹRÓDŁA DANYCH kliknij +, a pojawi się utworzone powyżej źródło.

Lista rozwijana powinna teraz pokazywać 2 źródła danych JSON (temp2 i temp2) utworzone wcześniej. Wybierz odpowiednie źródło i kliknij Zapisz.

Powtórz to dla drugiego miernika i wszystko gotowe.

Dane powinny być teraz wyświetlane na 2 wskaźnikach, a jeśli nadal masz podłączony PRi do monitora, powinieneś zobaczyć żądania z Freeboard.io, gdy nadejdą.

Krok 11: Zbuduj projekt w pudełku

Zbuduj projekt w pudełku
Zbuduj projekt w pudełku
Zbuduj projekt w pudełku
Zbuduj projekt w pudełku
Zbuduj projekt w pudełku
Zbuduj projekt w pudełku
Zbuduj projekt w pudełku
Zbuduj projekt w pudełku

Do tego momentu RPi i inne komponenty były montowane na stole za pomocą płytki stykowej. Mały kawałek stripboardu został następnie użyty do zastąpienia płytki stykowej, a wszystkie przewody zostały przylutowane na miejscu.

Znaleziono jasnoróżowe małe pudełko do przechowywania Lego, które miało dużo miejsca i w którym RPI nie nagrzewało się zbytnio. otwory zostały wywiercone w bokach pudełka, a do mocowania RPi i stripboardu użyto 3mm nylonowych słupków montażowych.

Wymagane są tylko 3 połączenia z GPIO, 3.3v, GND i danych.

  • 3,3 VDC pin 1
  • GND pin 6
  • Dane (GPIO4) pin 7

W pudełku dodano również otwory na zasilanie USB i kable do czujników temperatury. Gdy wszystko było już zamontowane na miejscu, dodano niewielką ilość uszczelniacza silikonowego, aby pająki nie uznały, że jest to przyjemne, ciepłe miejsce na spędzenie zimy!

Krok 12: Zakończono

Skończone
Skończone
Skończone
Skończone

Pudełko zostało umieszczone w szklarni i zasilane z ładowarki USB. Dwa czujniki umieszczono jeden w pobliżu szczytu szklarni, a drugi na doniczce, aby sprawdzić, jak zimno robi się nocą sadzonkom.

To jest mój pierwszy Instruktaż i mam nadzieję, że uważasz, że jest w porządku. Jeśli znajdziesz jakieś błędy, daj mi znać, a w razie potrzeby poprawię. Następnym krokiem może być rejestrowanie danych co (powiedzmy) 60 sekund, ale nastąpi to później.

Zalecana: