Inhaltsverzeichnis:

UCL - IIOT-Gewächshaus - Gunook
UCL - IIOT-Gewächshaus - Gunook

Video: UCL - IIOT-Gewächshaus - Gunook

Video: UCL - IIOT-Gewächshaus - Gunook
Video: CRISTIANO RONALDO: ALL #UCL GOALS! 2024, Juli
Anonim
UCL - IIOT Gewächshaus
UCL - IIOT Gewächshaus

Dieses Projekt ist eine Erweiterung unseres früheren Projekts mit dem Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

In diesem Projekt haben wir eine Datenbank hinzugefügt, in der wir alle unsere Daten protokollieren und diese dann zur besseren Übersicht mit node-red visualisieren.

Die Inhalte, die wir in unserer Datenbank protokollieren, sind Feuchtigkeit, Temperatur und Feuchtigkeit des Bodens, die in verschiedenen Diagrammen dargestellt werden.

Neben der Datenerfassung können wir auch kontrollieren, welches Profil im Gewächshaus aktiv ist und es fernsteuern.

Dann sind wir auch in der Lage, Pumpe und Lüfter manuell zu steuern.

Schritt 1: Installationsanleitung

Installationsanleitung
Installationsanleitung

Der erste Schritt besteht darin, alle verschiedenen Komponenten zu installieren.

Innerhalb der Klammern () haben wir aufgelistet, wo die Komponente angeschlossen ist. So ist beispielsweise Arduino über ein USB-Kabel mit dem Raspberry Pi verbunden.

Verwendete Hardware:

  • Arduino (Himbeer-Pi)
  • Raspberry Pi 3 B+
  • Bodenhygrometer (Arduino)
  • DHT11-Sensor (Arduino)
  • HG-320 Tauchwasserpumpe (Relais)
  • 5V Relais (Arduino)
  • Ein Computerlüfter (Relais)
  • 230V Stromversorgung (Pumpe)

Verwendete Software:

  • Raspbian (Betriebssystem für Raspberry Pi)
  • Arduino-IDE
  • Python (Raspberry Pi) - PySerial - MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Dashboard
  • MySQL-Server (freemysqlhosting.net)

Zuerst müssen Sie die Hardwarekomponenten anschließen, also folgen Sie dieser Anleitung, um das Gewächshaus zu bauen: Installationsanleitung.

Dann müssen Sie Raspbian OS auf Ihrem Raspberry Pi installieren. Danach müssen Sie Python installieren und dann die Python-Bibliotheken installieren.

Der nächste Schritt besteht darin, Node-Red auf dem Raspberry Pi zu installieren, dann zum Palettenmanager zu navigieren und die zuvor genannten Module zu installieren.

Dann gehen Sie zu dieser Site Free MySQL Server und erstellen Sie einen kostenlosen MySQL-Server.

Wenn dies alles erledigt ist, können Sie das Python-Skript auf Ihren Raspberry Pi übertragen, das Node-Red-Skript importieren und den Code für das Arduino hochladen.

Schritt 2: Schaufenster der Kontrolle

Image
Image

Schritt 3: Liste der im Projekt verwendeten Teile/Software

Wir haben die folgende Technologie verwendet, um das Gewächshaus zu machen

  • Arduino
  • Himbeer-Pi
  • Knoten-Rot
  • Python
  • PHPMyAdmin

Schritt 4: I/0-Liste

Schaltplan
Schaltplan

Schritt 5: Schaltplan

Schritt 6: Der Arduino-Code

Der Arduino-Code funktioniert, indem er die von den Sensoren gemessenen Daten an die serielle Verbindung druckt, wo sie vom Raspberry Pi gelesen und an die Datenbank übertragen werden.

Der Arduino hat auch einige digitale Eingangspins, die mit dem Raspberry Pi verbunden sind, die der Arduino liest, und wenn einer der drei HIGH wird, ändert sich das Profil aufgrund einer IF-Anweisung.

Außerdem haben wir den Code aktualisiert, um Millis anstelle von Verzögerung zu verwenden, wodurch die Tasten und der Rest des Codes die ganze Zeit anstelle eines Intervalls durch die alte Verzögerung gelesen werden können.

Schritt 7: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Wir haben einen Raspberry Pi 3 B+ verwendet, um unseren Arduino mit dem Internet und einer MySQL-Datenbank zu verbinden. Dies ermöglichte es uns, Daten von unseren Sensoren zu speichern und eine visuelle Schnittstelle für den Endbenutzer zu schaffen. Für die Benutzeroberfläche haben wir Node-Red mit der Dashboard-Palette verwendet.

Aber bevor wir unsere Sensordaten auf Node-Red anzeigen konnten, brauchten wir eine Möglichkeit, die Daten in eine MySQL-Datenbank hochzuladen, und dafür haben wir ein Python-Skript erstellt, das auf unserem Raspberry Pi läuft.

Schritt 8: Python

Python
Python

Das Python-Skript wird verwendet, um Daten von der seriellen Kommunikation vom Arduino zu empfangen. Das Skript sendet die Daten dann an eine MySQL-Datenbank.

Wir haben zwei Bibliotheken verwendet, pyserial und mysqlclient.

Der erste Schritt wäre also, diese beiden Bibliotheken herunterzuladen:

  1. PySerial
  2. MySQL-Client

PySerial wird zum Sammeln von Daten vom Arduino über serielle Kommunikation verwendet.

Gerät = '/dev/ttyUSB0'

arduino = serial. Serial (Gerät, 9600)

Die erste Zeile wird zur Definition unseres COM-Ports verwendet. Auf dem Raspberry Pi ist es /dev/ttyUSB0, das wir für das Arduino verwenden. Die zweite Zeile dient zum Öffnen der seriellen Schnittstelle zum Arduino. Wir definieren nur, welcher COM-Port und mit welcher Geschwindigkeit die Verbindung läuft.

Der Rest des Codes läuft in einer while-Schleife.

Als nächstes verwenden wir mehrere Try- und Except-Blöcke. Zuerst versucht der Code, innerhalb des Try-Blocks ausgeführt zu werden. Wenn dies fehlschlägt, wird der Except-Block ausgeführt. Aber wenn der Try-Block gut läuft, führt er den Except-Block nicht aus, sondern nur den Rest des Codes.

Innerhalb der Try-Blöcke haben wir also Code, der die serielle Kommunikation liest und dann an unsere MySQL-Datenbank sendet.

Hygrolist = arduino.readlines(1)

templist = arduino.readlines(2)humidlist = arduino.readlines(3)

Der obige Code dient also zum Lesen von Zeilen in der seriellen Kommunikation. Die Zahl am Ende des Codes definiert die Zeile, die in der Seriennummer gelesen wurde. Diese Zeilen werden also in verschiedene Variablen eingeteilt.

Wenn Daten vom Arduino empfangen werden, haben wir das mysqlclient-Modul verwendet, um die Daten an unseren MySQL-Server zu senden.

db = _mysql.connect(host="sql7.freemysqlhosting.net", user="sql7256552", passwd="3ebtbP8FQ2", db="sql7256552")

Diese Zeile dient zur Verbindung mit unserer MySQL-Datenbank. Es gibt den Server, den Benutzernamen, das Passwort und die Datenbank an, mit der es sich innerhalb des Servers verbinden soll. Hier sollten Sie die Verbindung zu Ihrer MySQL DB angeben.

db.query("INSERTINTO `TempHumid`(`temp`, `humid`, `hygro`) VALUES (%s, %s, %s)" % (temp, feucht, hygro))

Hier nehmen wir also unsere DB-Verbindung und machen eine SQL-Abfrage. Die Abfrage sagt, dass Werte in die Tabelle „TempHumid“und dann in die Spalten „temp“, „humid“und „hygro“eingefügt werden müssen. Der letzte Teil „(%s, %s, %s)“ist die String-Formatierung und wird verwendet, um der Datenbank ein lesbares Format zu geben.

Und all diese Aktionen werden in eine while-Schleife gesetzt, damit wir weiterhin Daten an den MySQL-Server senden.

Wenn Sie den gesamten Code sehen möchten, laden Sie das Python-Skript (TempHumid.py) herunter.

Schritt 9: MySQL

MySQL
MySQL
MySQL
MySQL

Für den MySQL-Server haben wir einen kostenlosen Dienst auf www.freemysqlhosting.net verwendet. Wir hätten einen Server lokal auf dem Raspberry Pi erstellen können, aber wir haben uns für den kostenlosen Dienst entschieden, um ihn vollständig mit der Cloud / dem Internet zu verbinden.

Um auf Ihr MySQL zuzugreifen, müssen Sie zu phpmyadmin.co gehen und sich mit den Zugangsdaten Ihres freemysqlhosting-Kontos anmelden.

Wenn Sie drinnen sind, müssen Sie eine Tabelle namens "TempHumid" erstellen, in dieser Tabelle müssen Sie 4 Spalten namens "ID", "temp", "humid" und "hygro" erstellen. In der ersten Spalte (ID) müssen Sie das Kästchen A_I (Auto Increment) ankreuzen. Dies ist so, dass die ID-Spalte jedem Datensatz eine ID gibt. Alle folgenden Spalten müssen als INT (Integer) gesetzt werden und den Standardwert auf NULL setzen.

Schritt 10: Knoten-Rot

Knoten-Rot
Knoten-Rot
Knoten-Rot
Knoten-Rot
Knoten-Rot
Knoten-Rot

In unserem Projekt haben wir Node-Red verwendet, um eine grafische Oberfläche zu erstellen. Node-Red läuft auf dem Raspberry Pi und sammelt Daten aus unserer MySQL-Datenbank und zeigt diese Daten mit Donut-förmigen Messgeräten und grafischen Diagrammen an, damit der Endbenutzer die Daten überwachen kann. Das Smarte an Node-Red ist, dass es auf jedem Gerät angezeigt werden kann, was bedeutet, dass die Größe der Site für das jeweilige Gerät, auf dem der Inhalt angezeigt wird, angepasst wird.

Um unsere Node-Red-Programmierung zu installieren, sehen Sie sich Schritt 1 an und laden Sie das Dokument "Node-Red.docx" herunter. Kopieren Sie dann den Text und fügen Sie ihn über die Importfunktion in der oberen rechten Ecke in Node-Red ein.

Ändern Sie danach die DB-Einstellungen für Ihre MySQL-DB.

Empfohlen: