INHOUDSOPGAWE:

UCL - IIOT Kweekhuis: 11 stappe
UCL - IIOT Kweekhuis: 11 stappe

Video: UCL - IIOT Kweekhuis: 11 stappe

Video: UCL - IIOT Kweekhuis: 11 stappe
Video: UCL-IIoT-Datalogger 2024, Julie
Anonim
UCL - IIOT Kweekhuis
UCL - IIOT Kweekhuis

Hierdie projek is 'n uitbreiding van ons vorige projek met die kweekhuis (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

In hierdie projek het ons 'n databasis bygevoeg, waar ons al ons data aanteken en dit dan met knooprooi visualiseer vir 'n groter oorsig.

Die inhoud wat ons in ons databasis aanmeld, is humiditeit, temperatuur en vogtigheid van die grond, wat in verskillende diagramme getoon word.

Behalwe dataloggin kan ons ook bepaal watter profiel in die kweekhuis aktief is en dit op afstand beheer.

Dan kan ons ook die pomp en waaier handmatig beheer.

Stap 1: Installasiegids

Installasie gids
Installasie gids

Die eerste stap is om al die verskillende komponente te installeer.

Binne die hakies () het ons gelys waar die komponent aan gekoppel is. Arduino is byvoorbeeld via 'n USB -kabel aan Raspberry Pi gekoppel.

Hardeware wat gebruik word:

  • Arduino (Framboos Pi)
  • Framboos Pi 3 B+
  • Grondhigrometer (Arduino)
  • DHT11 -sensor (Arduino)
  • HG-320 dompelpomp (aflos)
  • 5V -aflos (Arduino)
  • 'N Rekenaarwaaier (Relay)
  • 230V kragtoevoer (pomp)

Sagteware wat gebruik word:

  • Raspbian (bedryfstelsel vir Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Dashboard
  • MySQL -bediener (freemysqlhosting.net)

Eerstens moet u die hardeware -komponente verbind, dus volg hierdie gids om die kweekhuis te bou: installeringsgids.

Dan moet u Raspbian OS op u Raspberry Pi installeer. Daarna moet u Python installeer en dan die python -biblioteke installeer.

Die volgende stap is om Node-Red op die Raspberry Pi te installeer, en dan na die pallettebestuurder te gaan en die modules wat vroeër genoem is, te installeer.

Gaan dan na hierdie webwerf Free MySQL Server en skep 'n gratis MySQL -bediener.

As dit alles gedoen is, is u gereed om die python-script na u Raspberry Pi oor te dra, die Node-Red-script in te voer en die kode vir die Arduino op te laai.

Stap 2: Uitstalling van beheer

Image
Image

Stap 3: Lys van onderdele/sagteware wat in die projek gebruik word

Ons het die volgende tegnologie gebruik om die kweekhuis te maak

  • Arduino
  • Framboos Pi
  • Node-rooi
  • Python
  • PHPMyAdmin

Stap 4: I/0 lys

Bedradingsdiagram
Bedradingsdiagram

Stap 5: Bedradingsdiagram

Stap 6: Die Arduino -kode

Die Arduino -kode werk deur die data, gemeet deur die sensors, na die seriële verbinding te druk, waar dit deur die Raspberry Pi gelees en na die databasis oorgedra word.

Die Arduino het ook 'n paar digitale invoerpenne wat aan die Raspberry Pi gekoppel is wat die Arduino lees en as een van die drie HOOG word, sal die profiel verander as gevolg van 'n IF -verklaring.

Ons het ook die kode opgegradeer om Millis te gebruik in plaas van vertraging, waardeur die onderkant en die res van die kode deurgaans gelees kan word in plaas van 'n interval deur die ou vertraging.

Stap 7: Framboos Pi 3 B+

Framboos Pi 3 B+
Framboos Pi 3 B+

Ons het 'n Raspberry Pi 3 B+ gebruik om ons Arduino met die internet en 'n MySQL -databasis te verbind. Dit het ons in staat gestel om data van ons sensors te stoor en 'n visuele koppelvlak vir die eindgebruiker te maak. Vir die gebruikerskoppelvlak gebruik ons Node-Red met die Dashboard-palet.

Maar voordat ons ons sensordata op Node-Red kon wys, het ons 'n manier nodig gehad om die data op 'n MySQL-databasis op te laai, en daarvoor het ons 'n Python-script gemaak wat op ons Raspberry Pi sou werk.

Stap 8: Python

Python
Python

Die Python-script word gebruik om data te ontvang van die seriële kommunikasie wat van die Arduino afkomstig is. Die skrif stuur die data dan na 'n MySQL -databasis.

Ons gebruik twee biblioteke, pyserial en mysqlclient.

Die eerste stap is dus om hierdie twee biblioteke af te laai:

  1. PySerial
  2. MySQLclient

PySerial word gebruik vir die versameling van data van die Arduino via seriële kommunikasie.

toestel = '/dev/ttyUSB0'

arduino = serial. Serial (toestel, 9600)

Die eerste reël word gebruik om ons COM-poort te definieer. Op die Raspberry Pi is dit /dev /ttyUSB0 wat ons vir die Arduino gebruik. Die tweede reël is om die seriële poort na die Arduino oop te maak. Ons definieer net watter COM-poort en teen watter snelheid die verbinding loop.

Die res van die kode loop in 'n while lus.

Vervolgens gebruik ons verskeie blokke Try and Except. Eerstens probeer die kode binne die Try -blok loop, as dit misluk, word die Except -blok uitgevoer. Maar as die Try -blok goed werk, loop dit nie die Except -blok nie, maar voer die res van die kode net uit.

So binne die Try-blokke het ons kode wat die seriële kommunikasie sal lees en dit dan na ons MySQL-databasis kan stuur.

hygrolis = arduino.readlines (1)

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

Bogenoemde kode is dus vir die lees van reëls in die seriële kommunikasie. Die nommer aan die einde van die kode definieer die reël wat in die reeks gelees is. Hierdie lyne word dus in verskillende veranderlikes ingedeel.

As data van die Arduino ontvang word, het ons die mysqlclient -module gebruik om die data na ons MySQL -bediener te stuur.

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

Hierdie lyn is vir die verbinding met ons MySQL -databasis. Dit spesifiseer die bediener, gebruikersnaam, wagwoord en watter databasis dit binne -in die bediener moet koppel. Hier moet u die verbinding met u MySQL DB spesifiseer.

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

So hier neem ons ons DB -verbinding en maak 'n SQL -navraag. Die navraag sê dat waardes in die tabel "TempHumid" en dan in die kolomme "temp", "humid" en "hygro" ingevoeg moet word. Die laaste deel “(%s, %s, %s)” is stringopmaak en word gebruik om die databasis die formaat te gee wat dit kan lees.

En al hierdie aksies word in 'n tyd -lus geplaas, sodat ons steeds data na die MySQL -bediener stuur.

Laai die python -script (TempHumid.py) af as u al die kode wil sien.

Stap 9: MySQL

MySQL
MySQL
MySQL
MySQL

Vir die MySQL -bediener het ons 'n gratis diens op www.freemysqlhosting.net gebruik. Ons kon plaaslik 'n bediener op die Raspberry Pi gemaak het, maar ons het die gratis diens gebruik om dit volledig aan die wolk/internet te koppel.

Om toegang tot u MySQL te verkry, moet u na phpmyadmin.co gaan en met die geloofsbriewe van u freemysqlhosting -rekening aanmeld.

As u binne is, moet u 'n tabel genaamd "TempHumid" skep, in hierdie tabel moet u 4 kolomme skep met die naam "ID", "temp", "humid" en "hygro". In die eerste kolom (ID) moet u die blokkie A_I (outomatiese toename) merk. Dit is sodat die ID -kolom aan elke dataset 'n ID gee. Al die volgende kolomme moet as 'n INT (heelgetal) gestel word en die standaardwaarde op NULL stel.

Stap 10: Node-rooi

Node-rooi
Node-rooi
Node-rooi
Node-rooi
Node-rooi
Node-rooi

In ons projek het ons Node-Red gebruik om 'n grafiese koppelvlak te maak. Node-Red loop op die Raspberry Pi en versamel data uit ons MySQL-databasis en toon hierdie data met donutvormige meters en grafiese kaarte, sodat die eindgebruiker die data kan monitor. Die slim ding van Node-Red is dat dit op enige toestel sigbaar is, wat beteken dat die grootte van die webwerf verander sal word vir die gegewe toestel wat die inhoud bekyk.

Om ons Node-Red-programmering te installeer, kyk na stap 1 en laai die dokument met die naam "Node-Red.docx" af. Kopieer en plak dan die teks in Node-Red via die invoerfunksie in die regter boonste hoek.

Verander daarna die DB -instellings vir u MySQL DB.

Aanbeveel: