Innholdsfortegnelse:

UCL - IIOT drivhus: 11 trinn
UCL - IIOT drivhus: 11 trinn

Video: UCL - IIOT drivhus: 11 trinn

Video: UCL - IIOT drivhus: 11 trinn
Video: UCL-IIoT-Datalogger 2024, November
Anonim
UCL - IIOT drivhus
UCL - IIOT drivhus

Dette prosjektet er en forlengelse av vårt tidligere prosjekt med drivhuset (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

I dette prosjektet la vi til en database, der vi logger alle dataene våre og deretter visualiserer dem med node-rød for en større oversikt.

Innholdet vi logger inn i databasen vår er Fuktighet, temperatur og fuktighet i jorda, som er vist i forskjellige diagrammer.

I tillegg til dataloggin kan vi også kontrollere hvilken profil som er aktiv i drivhuset og fjernkontrollere den.

Da kan vi også styre pumpen og viften manuelt.

Trinn 1: Installasjonsveiledning

Installasjonsveiledning
Installasjonsveiledning

Første trinn er å installere alle de forskjellige komponentene.

Inne i brakettene () har vi listet opp hvor komponenten er koblet til. Så for eksempel er Arduino koblet til Raspberry Pi via en USB -kabel.

Maskinvare som brukes:

  • Arduino (bringebær Pi)
  • Bringebær Pi 3 B+
  • Jordhygrometer (Arduino)
  • DHT11 -sensor (Arduino)
  • HG-320 nedsenkbar vannpumpe (relé)
  • 5V relé (Arduino)
  • En datamaskinvifte (relé)
  • 230V strømforsyning (pumpe)

Programvare som brukes:

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

Først må du koble til maskinvarekomponentene, så følg denne veiledningen for å bygge drivhuset: Installasjonsveiledning.

Da må du installere Raspbian OS på Raspberry Pi. Etter det må du installere Python, og deretter installere python -bibliotekene.

Neste trinn er å installere Node-Red på Raspberry Pi, og deretter navigere til pallettbehandling og installere modulene som er nevnt tidligere.

Gå deretter til dette nettstedet Free MySQL Server og lag en gratis MySQL server.

Når alt dette er gjort, er du klar til å overføre python-skriptet til Raspberry Pi, importere Node-Red-skriptet og laste opp koden for Arduino.

Trinn 2: Showcase of Control

Image
Image

Trinn 3: Liste over deler/programvare som brukes i prosjektet

Vi har brukt følgende teknologi for å lage drivhuset

  • Arduino
  • Bringebær Pi
  • Node-rød
  • Python
  • PHPMyAdmin

Trinn 4: I/0 -liste

Koblingsskjema
Koblingsskjema

Trinn 5: Koblingsskjema

Trinn 6: Arduino -koden

Arduino -koden fungerer ved å skrive ut dataene, målt av sensorene, til den serielle tilkoblingen der den leses av Raspberry Pi og overføres til databasen.

Arduinoen har også noen digitale inngangspinner koblet til Raspberry Pi som Arduino leser, og hvis en av de tre blir HØY, vil profilen endres på grunn av en IF -setning.

Vi har også oppgradert koden til å bruke Millis i stedet for forsinkelse som gjør at rumpa og resten av koden kan leses hele tiden i stedet for et intervall med den gamle forsinkelsen.

Trinn 7: Raspberry Pi 3 B+

Bringebær Pi 3 B+
Bringebær Pi 3 B+

Vi brukte en Raspberry Pi 3 B+ for å koble vår Arduino til internett og en MySQL -database. Dette gjorde det mulig for oss å lagre data fra sensorene våre og lage et visuelt grensesnitt for sluttbrukeren. For brukergrensesnittet brukte vi Node-Red med Dashboard-paletten.

Men før vi kunne vise sensordataene våre på Node-Red, trengte vi en måte å laste opp dataene på en MySQL-database, og for det laget vi et Python-script som ville kjøre på vår Raspberry Pi.

Trinn 8: Python

Python
Python

Python-skriptet brukes til å motta data fra seriekommunikasjonen som kommer fra Arduino. Skriptet sender deretter dataene til en MySQL -database.

Vi brukte to biblioteker, pyserial og mysqlclient.

Så det første trinnet ville være å laste ned disse to bibliotekene:

  1. PySerial
  2. MySQLclient

PySerial brukes til å samle inn data fra Arduino via seriell kommunikasjon.

device = '/dev/ttyUSB0'

arduino = serial. Serial (enhet, 9600)

Den første linjen brukes til å definere vår COM-port. På Raspberry Pi er det /dev /ttyUSB0, som vi bruker til Arduino. Den andre linjen er for å åpne den serielle porten til Arduino. Vi definerer bare hvilken COM-port og med hvilken hastighet tilkoblingen kjører.

Resten av koden kjører i en stund -sløyfe.

Deretter bruker vi flere Try and Except -blokker. Først prøver koden å kjøre inne i Try -blokken, hvis det mislykkes, kjører den Except -blokken. Men hvis Try -blokken går bra, kjører den ikke Except -blokken, den kjører bare resten av koden.

Så inne i Try-blokkene har vi kode som vil lese seriekommunikasjonen og deretter sende den til vår MySQL-database.

hygrolist = arduino.readlines (1)

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

Så koden ovenfor er for å lese linjer i seriekommunikasjonen. Tallet på slutten av koden definerer linjen som er lest i serien. Så disse linjene blir kategorisert i forskjellige variabler.

Når data fra Arduino er mottatt, brukte vi mysqlclient -modulen for å sende dataene til vår MySQL -server.

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

Denne linjen er for tilkobling til vår MySQL -database. Den spesifiserer serveren, brukernavnet, passordet og hvilken database den skal koble seg til på serveren. Her bør du spesifisere tilkoblingen til MySQL DB.

db.query ("INSERTINTO` TempHumid` (`temp`,` fuktig`, `hygro`) VERDIER (%s, %s, %s)" %(temp, fuktig, hygro))

Så her tar vi vår DB -tilkobling og lager en SQL -spørring. Spørringen sier at verdier må settes inn i tabellen "TempHumid" og deretter i kolonnene "temp", "fuktig" og "hygro". Den siste delen "(%s, %s, %s)" er strengformatering og brukes til å gi databasen et format som den kan lese.

Og all denne handlingen legges inn i en stund -sløyfe, slik at vi fortsetter å få data sendt til MySQL -serveren.

Last ned python -skriptet (TempHumid.py) hvis du vil se all koden.

Trinn 9: MySQL

MySQL
MySQL
MySQL
MySQL

For MySQL -serveren brukte vi en gratis tjeneste på www.freemysqlhosting.net. Vi kunne ha laget en server lokalt på Raspberry Pi, men vi gikk med gratis -tjenesten for å gjøre den fullstendig koblet til skyen/internett.

For å få tilgang til MySQL, må du gå til phpmyadmin.co og logge inn med legitimasjonen fra freemysqlhosting -kontoen din.

Når du er inne, må du lage et bord som heter "TempHumid", inne i denne tabellen må du lage 4 kolonner kalt "ID", "temp", "fuktig" og "hygro". Den første kolonnen (ID) må du merke av i boksen A_I (Auto Increment). Dette er slik at ID -kolonnen gir hvert datasett en ID. Alle de følgende kolonnene må angis som et INT (heltall), og sett standardverdien til NULL.

Trinn 10: Node-rød

Node-rød
Node-rød
Node-rød
Node-rød
Node-rød
Node-rød

I vårt prosjekt brukte vi Node-Red for å lage et grafisk grensesnitt. Node-Red kjører på Raspberry Pi og samler inn data fra vår MySQL-database og viser disse dataene med donutformede målere og grafiske diagrammer, slik at sluttbrukeren kan overvåke dataene. Det smarte med Node-Red er at det kan sees på hvilken som helst enhet, noe som betyr at nettstedet vil bli endret størrelsen på den gitte enheten som ser på innholdet.

For å installere vår Node-Red-programmering, se på trinn 1 og last ned dokumentet "Node-Red.docx". Kopier og lim inn teksten i Node-Red via importfunksjonen i øvre høyre hjørne.

Etter det endrer du DB -innstillingene for MySQL DB.

Anbefalt: