Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Sprzęt
- Krok 2: Konfiguracja oprogramowania Raspberry Pi OS
- Krok 3: Skonfiguruj Dataplicity, aby umożliwić zdalny dostęp
- Krok 4: Sprawdź czujniki
- Krok 5: Zapora sieciowa UFW
- Krok 6: Wysyłanie danych temperatury w formacie JSON
- Krok 7: Wyślij dane z obu czujników
- Krok 8: Automatyczne uruchamianie
- Krok 9: Wyświetl dane na Freeboard.io (1)
- Krok 10: Wyświetl dane na Freeboard.io (2)
- Krok 11: Zbuduj projekt w pudełku
- Krok 12: Zakończono
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02
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
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
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
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
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
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
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
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)
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)
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
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
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:
Opaska ostrzegawcza o temperaturze: 10 kroków
Opaska ostrzegawcza przed temperaturą: Mieszkając na Florydzie, interesowałam się stworzeniem ubrania, które mogłoby mnie ostrzegać, gdy na zewnątrz robi się zbyt gorąco. Korzystając z Arduino i kilku prostych komponentów, udało mi się stworzyć płytkę drukowaną, którą można wbudować w opaskę, która ostrzega mnie, gdy
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD - Symulacja rejestratora danych DHT11 w Proteus: 5 kroków
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD | Symulacja rejestratora danych DHT11 w Proteus: Wstęp: cześć, tu Liono Maker, tutaj link do YouTube. Tworzymy kreatywne projekty z Arduino i pracujemy na systemach wbudowanych.Data-Logger: Rejestrator danych (również rejestrator danych lub rejestrator danych) to urządzenie elektroniczne, które rejestruje dane w czasie w
Opóźnienie podwójnej kasety + oscylator: 8 kroków
Dual Cassette Delay + Oscillator: Zainspirowany projektem dmark2: Microcassette tape delay
Wysyłanie danych o bezprzewodowych wibracjach i temperaturze do Arkuszy Google za pomocą Node-RED: 37 kroków
Wysyłanie danych o bezprzewodowych wibracjach i temperaturze do Arkuszy Google za pomocą Node-RED: Przedstawiamy przemysłowy bezprzewodowy czujnik wibracji i temperatury Long Range IoT firmy NCD, który może pochwalić się zasięgiem do 2 mil przy użyciu bezprzewodowej struktury sieci kratowej. Wyposażony w precyzyjny 16-bitowy czujnik wibracji i temperatury, to urządzenie przek
Kontroler lutownicy o zmiennej temperaturze DIY o wartości 10 USD: 3 kroki (ze zdjęciami)
Kontroler lutownicy DIY o zmiennej temperaturze za 10 USD: Ta instrukcja pokaże Ci, jak przekształcić lutownicę Radioshack „podpalającą” w wersję o zmiennej temperaturze, zużywając około 10 USD na części. Ten pomysł przyszedł mi do głowy po tym, jak zacząłem podnosić ślady na płytce drukowanej, ponieważ używałem 30w