Indholdsfortegnelse:

UCL - IIOT drivhus: 11 trin
UCL - IIOT drivhus: 11 trin

Video: UCL - IIOT drivhus: 11 trin

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

Dette projekt er en forlængelse af vores tidligere projekt med drivhuset (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

I dette projekt tilføjede vi en database, hvor vi logger alle vores data og derefter visualiserer dem med node-rød for et større overblik.

Det indhold, vi logger ind i vores database, er fugtighed, temperatur og fugtighed i jorden, som er vist i forskellige diagrammer.

Udover dataloggin er vi også i stand til at kontrollere, hvilken profil der er aktiv i drivhuset og fjernstyre den.

Så er vi også i stand til at styre pumpe og blæser manuelt.

Trin 1: Installationsvejledning

Installationsguide
Installationsguide

Første trin er at installere alle de forskellige komponenter.

Inde i beslagene () har vi angivet, hvor komponenten er tilsluttet. Så for eksempel er Arduino forbundet til Raspberry Pi via et USB -kabel.

Brugt hardware:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Jordhygrometer (Arduino)
  • DHT11 sensor (Arduino)
  • HG-320 nedsænket vandpumpe (relæ)
  • 5V relæ (Arduino)
  • En computerventilator (relæ)
  • 230V strømforsyning (pumpe)

Brugt software:

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

Først skal du forbinde hardwarekomponenterne, så følg denne vejledning for at bygge drivhuset: Installationsvejledning.

Derefter bliver du nødt til at installere Raspbian OS på din Raspberry Pi. Derefter skal du installere Python og derefter installere python -bibliotekerne.

Næste trin er at installere Node-Red på Raspberry Pi og derefter navigere til pallettehåndteringen og installere de tidligere angivne moduler.

Gå derefter til dette websted Gratis MySQL Server og opret en gratis MySQL server.

Når alt dette er gjort, er du klar til at overføre python-scriptet til din Raspberry Pi, importere Node-Red scriptet og uploade koden til Arduino.

Trin 2: Fremvisning af kontrol

Image
Image

Trin 3: Liste over dele/software, der bruges i projektet

Vi har brugt følgende teknologi til at lave drivhuset

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

Trin 4: I/0 -liste

Ledningsdiagram
Ledningsdiagram

Trin 5: Ledningsdiagram

Trin 6: Arduino -koden

Arduino -koden virker ved at udskrive dataene, målt af sensorerne, til den serielle forbindelse, hvor de læses af Raspberry Pi og overføres til databasen.

Arduino har også nogle digitale inputpins forbundet til Raspberry Pi, som Arduino læser, og hvis en af de tre bliver HØJ, vil profilen ændre sig på grund af en IF -erklæring.

Vi har også opgraderet koden til at bruge Millis i stedet for forsinkelse, der gør det muligt at læse bunden og resten af koden hele tiden i stedet for et interval med den gamle forsinkelse.

Trin 7: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Vi brugte en Raspberry Pi 3 B+ til at forbinde vores Arduino med internettet og en MySQL -database. Dette gjorde det muligt for os at gemme data fra vores sensorer og lave en visuel grænseflade til slutbrugeren. Til brugergrænsefladen brugte vi Node-Red med Dashboard-paletten.

Men før vi kunne vise vores sensordata på Node-Red, havde vi brug for en måde at uploade dataene på en MySQL-database, og til det lavede vi et Python-script, der ville køre på vores Raspberry Pi.

Trin 8: Python

Python
Python

Python-scriptet bruges til at modtage data fra den serielle kommunikation, der kommer fra Arduino. Scriptet sender derefter dataene til en MySQL -database.

Vi brugte to biblioteker, pyserial og mysqlclient.

Så første skridt ville være at downloade disse to biblioteker:

  1. PySerial
  2. MySQLclient

PySerial bruges til at indsamle data fra Arduino via seriel kommunikation.

device = '/dev/ttyUSB0'

arduino = serial. Serial (enhed, 9600)

Den første linje bruges til at definere vores COM-port. På Raspberry Pi er det /dev /ttyUSB0, som vi bruger til Arduino. Den anden linje er til åbning af den serielle port til Arduino. Vi definerer bare hvilken COM-port og med hvilken hastighed forbindelsen kører med.

Resten af koden kører i et stykke loop.

Dernæst bruger vi flere Try and Except -blokke. Først forsøger koden at køre inde i blokken Prøv, hvis det mislykkes, kører den Undtagelsesblokken. Men hvis Try -blokken kører fint, kører den ikke Except -blokken, den kører bare resten af koden.

Så inde i Try-blokkene har vi kode, der vil læse seriel kommunikation og derefter sende den til vores MySQL-database.

hygrolist = arduino.readlines (1)

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

Så ovenstående kode er til læsning af linjer i seriel kommunikation. Tallet i slutningen af koden definerer den linje, der er blevet læst i serien. Så disse linjer bliver kategoriseret i forskellige variabler.

Når data fra Arduino modtages, brugte vi mysqlclient -modulet til at sende dataene til vores MySQL -server.

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

Denne linje er til tilslutning til vores MySQL -database. Den angiver serveren, brugernavnet, adgangskoden og hvilken database den skal oprette forbindelse til inde i serveren. Her skal du angive forbindelsen til din MySQL DB.

db.forespørgsel ("INSERTINTO` TempHumid` (`temp`,` fugtig`, `hygro`) VÆRDIER (%s, %s, %s)" %(temp, fugtig, hygro))

Så her tager vi vores DB -forbindelse og laver en SQL -forespørgsel. Forespørgslen siger, at værdier skal indsættes i tabellen "TempHumid" og derefter i kolonnerne "temp", "fugtig" og "hygro". Den sidste del "(%s, %s, %s)" er strengformatering og bruges til at give databasen et format, som den kan læse.

Og al denne handling sættes i et stykke loop, så vi bliver ved med at få data sendt til MySQL -serveren.

Hvis du vil se hele koden, skal du downloade python -scriptet (TempHumid.py).

Trin 9: MySQL

MySQL
MySQL
MySQL
MySQL

Til MySQL -serveren brugte vi en gratis service på www.freemysqlhosting.net. Vi kunne have lavet en server lokalt på Raspberry Pi, men vi gik med gratis service for at få den fuldt forbundet til skyen/internettet.

For at få adgang til din MySQL skal du gå til phpmyadmin.co og logge ind med legitimationsoplysninger fra din freemysqlhosting -konto.

Når du er inde, skal du oprette et bord kaldet "TempHumid", inde i denne tabel skal du oprette 4 kolonner kaldet "ID", "temp", "fugtig" og "hygro". Den første kolonne (ID) skal du markere feltet A_I (Auto Increment). Dette er, så ID -kolonnen giver hvert datasæt et ID. Alle de følgende kolonner skal indstilles som et INT (heltal) og indstille standardværdien til NULL.

Trin 10: Knude-rød

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

I vores projekt brugte vi Node-Red til at lave en grafisk grænseflade. Node-Red kører på Raspberry Pi og indsamler data fra vores MySQL-database og viser disse data med donutformede målere og grafiske diagrammer, så slutbrugeren kan overvåge dataene. Det smarte ved Node-Red er, at det kan ses på enhver enhed, hvilket betyder, at stedet vil blive ændret til den givne enhed, der ser indholdet.

For at installere vores Node-Red programmering skal du se trin 1 og downloade dokumentet kaldet "Node-Red.docx". Kopier og indsæt derefter teksten i Node-Red via importfunktionen i øverste højre hjørne.

Derefter skal du ændre DB -indstillingerne for din MySQL DB.

Anbefalede: