
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03

Ten projekt jest rozszerzeniem naszego wcześniejszego projektu z Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).
W tym projekcie dodaliśmy bazę danych, w której rejestrujemy wszystkie nasze dane, a następnie wizualizujemy je z czerwonym węzłem, aby uzyskać lepszy przegląd.
Zawartość, którą rejestrujemy w naszej bazie danych to Wilgotność, Temperatura i Wilgotność gleby, co jest pokazane na różnych wykresach.
Poza logowaniem danych mamy również możliwość kontrolowania, który profil jest aktywny w Szklarni i zdalnie nim sterować.
Wtedy też mamy możliwość ręcznego sterowania pompą i wentylatorem.
Krok 1: Instrukcja instalacji

Pierwszym krokiem jest zainstalowanie wszystkich różnych komponentów.
W nawiasach () wymieniliśmy, gdzie jest podłączony komponent. Na przykład Arduino jest połączone z Raspberry Pi za pomocą kabla USB.
Zastosowany sprzęt:
- Arduino (Malina Pi)
- Raspberry Pi 3B+
- Higrometr glebowy (Arduino)
- Czujnik DHT11 (Arduino)
- HG-320 Zatapialna pompa wodna (przekaźnik)
- Przekaźnik 5V (Arduino)
- Wentylator komputerowy (przekaźnik)
- Zasilanie 230V (pompa)
Użyte oprogramowanie:
- Raspbian (system operacyjny dla Raspberry Pi)
- IDE Arduino
- Python (Raspberry Pi)- PySerial- MySQLclient
- Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Dashboard
- Serwer MySQL (freemysqlhosting.net)
Najpierw będziesz musiał połączyć komponenty sprzętowe, więc postępuj zgodnie z tym przewodnikiem, aby zbudować szklarnię: Przewodnik instalacji.
Następnie będziesz musiał zainstalować Raspbian OS na swoim Raspberry Pi. Następnie będziesz musiał zainstalować Pythona, a następnie zainstalować biblioteki Pythona.
Następnym krokiem jest zainstalowanie Node-Red na Raspberry Pi, a następnie przejście do menedżera palet i zainstalowanie modułów wymienionych wcześniej.
Następnie przejdź do tej strony Free MySQL Server i utwórz darmowy serwer MySQL.
Gdy to wszystko zostanie zrobione, jesteś gotowy do przeniesienia skryptu Pythona na Raspberry Pi, zaimportowania skryptu Node-Red i przesłania kodu dla Arduino.
Krok 2: Prezentacja kontroli


Krok 3: Lista części/oprogramowania użytego w projekcie
Do wykonania szklarni użyliśmy następującej technologii
- Arduino
- Malina Pi
- Węzeł-czerwony
- Pyton
- PHPMyAdmin
Krok 4: Lista I/0

Krok 5: Schemat połączeń
Krok 6: Kod Arduino
Kod Arduino działa poprzez drukowanie danych zmierzonych przez czujniki na łącze szeregowe, gdzie są one odczytywane przez Raspberry Pi i przesyłane do bazy danych.
Arduino ma również kilka cyfrowych pinów wejściowych podłączonych do Raspberry Pi, które Arduino odczytuje, a jeśli jeden z trzech stanie się WYSOKI, profil zmieni się z powodu instrukcji IF.
Ponadto zaktualizowaliśmy kod, aby używał Millis zamiast opóźnienia, co umożliwia czytanie przycisków i reszty kodu przez cały czas zamiast interwału według starego opóźnienia.
Krok 7: Raspberry Pi 3 B+

Do połączenia naszego Arduino z internetem i bazą danych MySQL użyliśmy Raspberry Pi 3 B+. Umożliwiło nam to przechowywanie danych z naszych czujników i stworzenie wizualnego interfejsu dla użytkownika końcowego. Dla interfejsu użytkownika użyliśmy Node-Red z paletą Dashboard.
Ale zanim mogliśmy pokazać dane z naszych czujników na Node-Red, potrzebowaliśmy sposobu na przesłanie danych do bazy danych MySQL i do tego stworzyliśmy skrypt Pythona, który działałby na naszym Raspberry Pi.
Krok 8: Python

Skrypt Pythona służy do odbierania danych z komunikacji szeregowej pochodzącej z Arduino. Skrypt następnie wysyła dane do bazy danych MySQL.
Wykorzystaliśmy dwie biblioteki, pyserial i mysqlclient.
Więc pierwszym krokiem byłoby pobranie tych dwóch bibliotek:
- PySerial
- Klient MySQL
PySerial służy do zbierania danych z Arduino za pośrednictwem komunikacji szeregowej.
urządzenie = '/dev/ttyUSB0'
arduino = serial. Serial (urządzenie, 9600)
Pierwsza linia jest używana do definiowania naszego portu COM. Na Raspberry Pi jest to /dev/ttyUSB0, którego używamy dla Arduino. Druga linia służy do otwarcia portu szeregowego na Arduino. Po prostu definiujemy, który port COM i z jaką prędkością działa połączenie.
Reszta kodu działa w pętli while.
Następnie używamy wielu bloków Try i Wyjątek. Najpierw kod próbuje uruchomić się w bloku Try, jeśli to się nie powiedzie, uruchamia blok Wyjątek. Ale jeśli blok Try działa dobrze, nie uruchamia bloku Wyjątek, tylko uruchamia resztę kodu.
Tak więc wewnątrz bloków Try mamy kod, który odczyta komunikację szeregową, a następnie wyśle ją do naszej bazy danych MySQL.
higrolist = arduino.readlines(1)
templist = arduino.readlines(2)wilgotna lista = arduino.readlines(3)
Więc powyższy kod służy do odczytywania linii w komunikacji szeregowej. Liczba na końcu kodu określa linię, która została odczytana w serialu. Więc te linie są klasyfikowane w różnych zmiennych.
Po otrzymaniu danych z Arduino wykorzystaliśmy moduł mysqlclient do wysłania danych do naszego serwera MySQL.
db = _mysql.connect(host="sql7.freemysqlhosting.net", użytkownik="sql7256552", passwd="3ebtbP8FQ2", db="sql7256552")
Ta linia służy do łączenia się z naszą bazą danych MySQL. Określa serwer, nazwę użytkownika, hasło i bazę danych, z którą powinien się połączyć wewnątrz serwera. Tutaj należy określić połączenie z bazą danych MySQL.
db.query("INSERTINTO `TempHumid`(`temp`, `wilgotność`, `higro`) WARTOŚCI (%s, %s, %s)" % (temp, wilgotno, higro))
Więc tutaj bierzemy nasze połączenie z bazą danych i tworzymy zapytanie SQL. Zapytanie mówi, że wartości należy wstawić do tabeli „TempHumid”, a następnie do kolumn „temp”, „humid” i „hygro”. Ostatnia część „(%s, %s, %s)” to formatowanie ciągu i służy do nadania bazie danych formatu, który może odczytać.
Cała ta akcja jest umieszczona w pętli while, dzięki czemu wciąż otrzymujemy dane wysyłane na serwer MySQL.
Jeśli chcesz zobaczyć cały kod, pobierz skrypt Pythona (TempHumid.py).
Krok 9: MySQL


W przypadku serwera MySQL skorzystaliśmy z bezpłatnej usługi na www.freemysqlhosting.net. Mogliśmy stworzyć serwer lokalnie na Raspberry Pi, ale skorzystaliśmy z bezpłatnej usługi, aby w pełni połączyć się z chmurą/internetem.
Aby uzyskać dostęp do MySQL, musisz wejść na phpmyadmin.co i zalogować się przy użyciu danych logowania z konta freemysqlhosting.
Kiedy jesteś w środku, musisz utworzyć tabelę o nazwie "TempHumid", wewnątrz tej tabeli musisz utworzyć 4 kolumny o nazwie "ID", "temp", "wilgotność" i "higro". W pierwszej kolumnie (ID) musisz zaznaczyć pole A_I (Auto Increment). Dzieje się tak, aby kolumna ID nadała każdemu zestawowi danych identyfikator. Wszystkie poniższe kolumny muszą być ustawione jako INT (liczba całkowita) i ustawić wartość standardową na NULL.
Krok 10: Węzeł-czerwony



W naszym projekcie wykorzystaliśmy Node-Red do stworzenia interfejsu graficznego. Node-Red działa na Raspberry Pi i zbiera dane z naszej bazy danych MySQL i pokazuje te dane za pomocą wskaźników w kształcie pierścienia i wykresów graficznych, dzięki czemu użytkownik końcowy może monitorować dane. Inteligentną cechą Node-Red jest to, że można ją wyświetlić na dowolnym urządzeniu, co oznacza, że rozmiar witryny zostanie zmieniony dla danego urządzenia, które wyświetla zawartość.
Aby zainstalować nasze oprogramowanie Node-Red, spójrz na krok 1 i pobierz dokument o nazwie „Node-Red.docx”. Następnie skopiuj i wklej tekst do Node-Red za pomocą funkcji importu w prawym górnym rogu.
Następnie zmień ustawienia bazy danych dla bazy danych MySQL.
Zalecana:
UCL Embedded - B0B the Linefollower: 9 kroków

UCL Embedded - B0B the Linefollower: To jest B0B.*B0B to ogólny samochód sterowany radiowo, tymczasowo służący jako podstawa robota podążającego za linią. Podobnie jak wiele robotów podążających za linią przed nim, zrobi wszystko, co w jego mocy, aby pozostać na aa linia spowodowana przejściem między podłogą a klimatyzacją
UCL - Wbudowany // dwuosiowy czujnik światła do paneli słonecznych: 7 kroków

UCL - Embedded // Dual Axis Light Tracker dla paneli słonecznych: Zmontowany projekt i poszczególne pliki 3D
UCL - Podłączanie węzła czerwonego do sterownika PLC firmy Siemens za pomocą serwera KEPserver: 7 kroków

UCL - Podłączanie węzła Node-red do sterownika Siemens PLC przy użyciu serwera KEPserver: WymaganiaNode-red: https://nodered.org/docs/getting-started/installationKEPserver: https://www.kepware.com/en-us/kepserverex-6 -6-wydanie
UCL - Przemysł 4.0: Mikser cukierków 4.000: 9 kroków

UCL - Industry 4.0: Candy Mixer 4.000: Dla naszego projektu w Industry 4.0 postanowiliśmy zrobić mikser do cukierków. Ideą jest to, że mamy panel użytkownika, wykonany w Node-Red, gdzie klienci mogą zamówić swoje cukierki, a następnie arduino zrealizuje zamówienie i wymiesza cukierki do miski. Wtedy my
UCL-lloT-Światło zewnętrzne wyzwalane przez wschód/zachód słońca.: 6 kroków

UCL-lloT-Outdoor-light Triggered by Sunrise/Sundown.: Witam wszystkich! Przy odrobinie pracy, niektórych częściach i kodach stworzyłem tę instrukcję, która pokaże od początku do końca, jak dokładnie wyprodukować to światło zewnętrzne. Pomysł wyszedł od mojego ojca, który latem musiał ręcznie wychodzić