Innehållsförteckning:

UCL - IIOT växthus: 11 steg
UCL - IIOT växthus: 11 steg

Video: UCL - IIOT växthus: 11 steg

Video: UCL - IIOT växthus: 11 steg
Video: UCL-IIoT-Datalogger 2024, Juli
Anonim
UCL - IIOT växthus
UCL - IIOT växthus

Detta projekt är en förlängning av vårt tidigare projekt med växthuset (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

I detta projekt lade vi till en databas, där vi loggar alla våra data och sedan visualiserar den med nod-röd för en större översikt.

Innehållet vi loggar in i vår databas är Jordens fuktighet, temperatur och fukt, som visas i olika diagram.

Förutom dataloggin kan vi också styra vilken profil som är aktiv i växthuset och fjärrstyra den.

Då kan vi också styra pumpen och fläkten manuellt.

Steg 1: Installationsguide

Installationsguide
Installationsguide

Första steget är att installera alla olika komponenter.

Inuti konsolerna () har vi listat var komponenten är ansluten till. Så till exempel är Arduino ansluten till Raspberry Pi via en USB -kabel.

Hårdvara som används:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Jordhygrometer (Arduino)
  • DHT11 -sensor (Arduino)
  • HG-320 nedsänkbar vattenpump (relä)
  • 5V relä (Arduino)
  • En datorfläkt (relä)
  • 230V strömförsörjning (pump)

Programvara som används:

  • Raspbian (OS för Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Dashboard
  • MySQL -server (freemysqlhosting.net)

Först måste du ansluta hårdvarukomponenterna, så följ den här guiden för att bygga växthuset: Installationsguide.

Då måste du installera Raspbian OS på din Raspberry Pi. Därefter måste du installera Python och sedan installera pythonbiblioteken.

Nästa steg är att installera Node-Red på Raspberry Pi och sedan navigera till palletthanteraren och installera de tidigare angivna modulerna.

Gå sedan till den här webbplatsen Gratis MySQL -server och skapa en gratis MySQL -server.

När allt detta är klart är du redo att överföra python-skriptet till din Raspberry Pi, importera Node-Red-skriptet och ladda upp koden för Arduino.

Steg 2: Showcase of Control

Image
Image

Steg 3: Lista över delar/programvara som används i projektet

Vi har använt följande teknik för att göra växthuset

  • Arduino
  • Raspberry Pi
  • Nod-röd
  • Pytonorm
  • PHPMyAdmin

Steg 4: I/0 -lista

Kopplingsschema
Kopplingsschema

Steg 5: Anslutningsdiagram

Steg 6: Arduino -koden

Arduino -koden fungerar genom att skriva ut data, mätt av sensorerna, till den seriella anslutningen där den läses av Raspberry Pi och överförs till databasen.

Arduino har också några digitala inmatningsnålar anslutna till Raspberry Pi som Arduino läser och om en av de tre blir HÖG kommer profilen att ändras på grund av ett IF -uttalande.

Vi har också uppgraderat koden för att använda Millis istället för fördröjning som gör att rumpan och resten av koden kan läsas hela tiden istället för ett intervall med den gamla fördröjningen.

Steg 7: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Vi använde en Raspberry Pi 3 B+ för att ansluta vår Arduino till internet och en MySQL -databas. Detta gjorde det möjligt för oss att lagra data från våra sensorer och skapa ett visuellt gränssnitt för slutanvändaren. För användargränssnittet använde vi Node-Red med instrumentpanelen.

Men innan vi kunde visa våra sensordata på Node-Red, behövde vi ett sätt att ladda upp data till en MySQL-databas, och för det skapade vi ett Python-skript som skulle köras på vår Raspberry Pi.

Steg 8: Python

Pytonorm
Pytonorm

Python-skriptet används för att ta emot data från seriekommunikationen som kommer från Arduino. Skriptet skickar sedan data till en MySQL -databas.

Vi använde två bibliotek, pyserial och mysqlclient.

Så första steget skulle vara att ladda ner dessa två bibliotek:

  1. PySerial
  2. MySQLclient

PySerial används för att samla in data från Arduino via seriell kommunikation.

enhet = '/dev/ttyUSB0'

arduino = serial. Serial (enhet, 9600)

Den första raden används för att definiera vår COM-port. På Raspberry Pi är det /dev /ttyUSB0, som vi använder för Arduino. Den andra raden är för att öppna serieporten till Arduino. Vi definierar bara vilken COM-port och med vilken hastighet anslutningen körs.

Resten av koden körs i en stundslinga.

Därefter använder vi flera Try and Except -block. Först försöker koden att köra inuti försöksblocket, om det misslyckas körs Except -blocket. Men om blocket Try körs bra kör det inte blocket Undantag, det kör bara resten av koden.

Så inuti Try-blocken har vi kod som kommer att läsa seriekommunikationen och sedan skicka den till vår MySQL-databas.

hygrolist = arduino.readlines (1)

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

Så ovanstående kod är för att läsa rader i seriekommunikationen. Siffran i slutet av koden definierar raden som har lästs i serien. Så dessa rader kategoriseras i olika variabler.

När data från Arduino tas emot använde vi mysqlclient -modulen för att skicka data till vår MySQL -server.

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

Denna rad är för anslutning till vår MySQL -databas. Den anger server, användarnamn, lösenord och vilken databas den ska ansluta till inuti servern. Här bör du ange anslutningen till din MySQL DB.

db.fråga ("INSERTINTO` TempHumid` (`temp`,` fuktig`, `hygro`) VÄRDEN (%s, %s, %s)" %(temp, fuktig, hygro))

Så här tar vi vår DB -anslutning och gör en SQL -fråga. Frågan säger att värden måste infogas i tabellen "TempHumid" och sedan i kolumnerna "temp", "fuktig" och "hygro". Den sista delen “(%s, %s, %s)” är strängformatering och används för att ge databasen ett format som den kan läsa.

Och all denna åtgärd läggs i en stundslinga, så att vi fortsätter att få data skickade till MySQL -servern.

Om du vill se all kod, ladda ner python -skriptet (TempHumid.py).

Steg 9: MySQL

MySQL
MySQL
MySQL
MySQL

För MySQL -servern använde vi en gratis tjänst på www.freemysqlhosting.net. Vi kunde ha gjort en server lokalt på Raspberry Pi, men vi gick med gratistjänsten för att göra den helt ansluten till molnet/internet.

För att komma åt din MySQL måste du gå till phpmyadmin.co och logga in med inloggningsuppgifterna från ditt freemysqlhosting -konto.

När du är inne måste du skapa en tabell som heter "TempHumid", inuti denna tabell måste du skapa 4 kolumner som heter "ID", "temp", "fuktig" och "hygro". Den första kolumnen (ID) måste du markera rutan A_I (Auto Increment). Detta är så att ID -kolumnen ger varje dataset ett ID. Alla följande kolumner måste ställas in som ett INT (heltal) och ställa in standardvärdet till NULL.

Steg 10: Node-Red

Nod-röd
Nod-röd
Nod-röd
Nod-röd
Nod-röd
Nod-röd

I vårt projekt använde vi Node-Red för att göra ett grafiskt gränssnitt. Node-Red körs på Raspberry Pi och samlar in data från vår MySQL-databas och visar dessa data med munkformade mätare och grafiska diagram, så att slutanvändaren kan övervaka data. Det smarta med Node-Red är att den kan visas på vilken enhet som helst, vilket innebär att webbplatsen kommer att ändras till den angivna enheten som tittar på innehållet.

För att installera vår Node-Red-programmering, se steg 1 och ladda ner dokumentet "Node-Red.docx". Kopiera sedan och klistra in texten i Node-Red via importfunktionen i det övre högra hörnet.

Ändra därefter DB -inställningarna för din MySQL DB.

Rekommenderad: