Spisu treści:

UCL - IIOT cieplarnianych: 11 kroków
UCL - IIOT cieplarnianych: 11 kroków

Wideo: UCL - IIOT cieplarnianych: 11 kroków

Wideo: UCL - IIOT cieplarnianych: 11 kroków
Wideo: UCL-IIoT-Datalogger 2024, Lipiec
Anonim
UCL - IIOT szklarnia
UCL - IIOT szklarnia

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

Instrukcja instalacji
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

Image
Image

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

Schemat połączeń
Schemat połączeń

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+

Raspberry Pi 3B+
Raspberry Pi 3B+

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

Pyton
Pyton

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:

  1. PySerial
  2. 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

MySQL
MySQL
MySQL
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ęzeł-czerwony
Węzeł-czerwony
Węzeł-czerwony
Węzeł-czerwony
Węzeł-czerwony
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: