Kazalo:

UCL - IIOT rastlinjak: 11 korakov
UCL - IIOT rastlinjak: 11 korakov

Video: UCL - IIOT rastlinjak: 11 korakov

Video: UCL - IIOT rastlinjak: 11 korakov
Video: Бен Голдэйкр: Боремся с плохой наукой 2024, November
Anonim
UCL - IIOT rastlinjak
UCL - IIOT rastlinjak

Ta projekt je podaljšek našega prejšnjega projekta z rastlinjakom (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

V ta projekt smo dodali bazo podatkov, v kateri zabeležimo vse svoje podatke in jih nato vizualiziramo z rdečim vozliščem za večji pregled.

Vsebina, ki jo vpisujemo v našo bazo podatkov, je vlažnost, temperatura in vlaga tal, ki je prikazana na različnih diagramih.

Poleg podatkovnega vhoda lahko nadzorujemo tudi profil, ki je aktiven v rastlinjaku, in ga nadziramo na daljavo.

Potem lahko črpalko in ventilator upravljamo tudi ročno.

1. korak: Navodila za namestitev

Navodila za namestitev
Navodila za namestitev

Prvi korak je namestitev vseh različnih komponent.

Znotraj oklepajev () smo navedli, kje je komponenta priključena. Tako je na primer Arduino povezan z Raspberry Pi prek kabla USB.

Uporabljena strojna oprema:

  • Arduino (Raspberry Pi)
  • Malina Pi 3 B+
  • Higrometer tal (Arduino)
  • Senzor DHT11 (Arduino)
  • HG-320 potopna vodna črpalka (rele)
  • Rele 5V (Arduino)
  • Računalniški ventilator (rele)
  • 230V napajanje (črpalka)

Uporabljena programska oprema:

  • Raspbian (OS za Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Nadzorna plošča
  • Strežnik MySQL (freemysqlhosting.net)

Najprej boste morali priključiti komponente strojne opreme, zato za izgradnjo rastlinjaka upoštevajte ta priročnik: Vodič za namestitev.

Potem boste morali v svoj Raspberry Pi namestiti Raspbian OS. Po tem boste morali namestiti Python in nato namestiti knjižnice python.

Naslednji korak je, da na Raspberry Pi namestite Node-Red, nato pa se pomaknite do upravitelja palet in namestite prej navedene module.

Nato pojdite na to spletno mesto Brezplačni strežnik MySQL in ustvarite brezplačen strežnik MySQL.

Ko je vse to narejeno, ste pripravljeni prenesti skript python v svoj Raspberry Pi, uvoziti skript Node-Red in naložiti kodo za Arduino.

2. korak: Predstavitev nadzora

Image
Image

3. korak: Seznam delov/programske opreme, uporabljene v projektu

Za izdelavo rastlinjaka smo uporabili naslednjo tehnologijo

  • Arduino
  • Malina Pi
  • Node-Red
  • Python
  • PHPMyAdmin

4. korak: Seznam I/0

Žični diagram
Žični diagram

5. korak: Shema ožičenja

Korak 6: Koda Arduino

Koda Arduino deluje tako, da podatke, merjene s senzorji, natisne na serijsko povezavo, kjer jih prebere Raspberry Pi in prenese v bazo podatkov.

Arduino ima tudi nekaj digitalnih vhodov, povezanih z Raspberry Pi, ki jih Arduino bere, in če eden od treh postane HIGH, se profil spremeni zaradi stavka IF.

Prav tako smo nadgradili kodo tako, da uporabljamo Millis namesto zamika, kar omogoča, da se gumbi in preostala koda berejo ves čas namesto intervala po stari zamudi.

7. korak: Raspberry Pi 3 B+

Malina Pi 3 B+
Malina Pi 3 B+

Za povezavo našega Arduina z internetom in bazo podatkov MySQL smo uporabili Raspberry Pi 3 B+. To nam je omogočilo shranjevanje podatkov iz naših senzorjev in izdelavo vizualnega vmesnika za končnega uporabnika. Za uporabniški vmesnik smo uporabili Node-Red s paleto Dashboard.

Toda preden smo lahko prikazali podatke svojih senzorjev na Node-Redu, smo potrebovali način za nalaganje podatkov v bazo podatkov MySQL in za to smo izdelali skript Python, ki bi se izvajal na našem Raspberry Pi.

8. korak: Python

Python
Python

Skript Python se uporablja za sprejemanje podatkov iz serijske komunikacije, ki prihaja iz Arduina. Skript nato pošlje podatke v bazo podatkov MySQL.

Uporabili smo dve knjižnici, pyserial in mysqlclient.

Torej, prvi korak bi bil prenos teh dveh knjižnic:

  1. PySerial
  2. MySQLclient

PySerial se uporablja za zbiranje podatkov iz Arduina prek serijske komunikacije.

naprava = '/dev/ttyUSB0'

arduino = serijski. Serijski (naprava, 9600)

Prva vrstica se uporablja za opredelitev naših vrat COM. Na Raspberry Pi uporabljamo /dev /ttyUSB0 za Arduino. Druga vrstica je za odpiranje serijskih vrat za Arduino. Določimo le, katera vrata COM in s kakšno hitrostjo teče povezava.

Preostali del kode se izvaja v zanki while.

Nato uporabimo več blokov Try in Except. Najprej se koda poskuša zagnati v bloku Try, če to ne uspe, pa zažene blok Except. Če pa blok Try deluje brezhibno, ne zažene bloka Except, ampak zažene preostanek kode.

Torej v blokih Try imamo kodo, ki bo prebrala serijsko komunikacijo in jo nato poslala v našo bazo podatkov MySQL.

hygrolist = arduino.readlines (1)

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

Zgornja koda je torej za branje vrstic v serijski komunikaciji. Številka na koncu kode določa vrstico, ki je bila prebrana v zaporedju. Zato so te vrstice razvrščene v različne spremenljivke.

Ko smo prejeli podatke iz Arduina, smo za pošiljanje podatkov na strežnik MySQL uporabili modul mysqlclient.

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

Ta vrstica je za povezavo z našo bazo podatkov MySQL. Določa strežnik, uporabniško ime, geslo in bazo podatkov, s katero se mora povezati v strežniku. Tu morate določiti povezavo z bazo podatkov MySQL.

db.query ("INSERTINTO` TempHumid` (`temp`,` humid`, `hygro`) VREDNOSTI (%s, %s, %s)" %(temp, vlažno, higro))

Torej vzamemo našo povezavo z DB in izvedemo poizvedbo SQL. Poizvedba pravi, da je treba vrednosti vnesti v tabelo »TempHumid« in nato v stolpce »temp«, »vlažno« in »higro«. Zadnji del »(%s, %s, %s)« je oblikovanje nizov in se uporablja za podajanje oblike zapisa zbirki podatkov.

In vse to dejanje je postavljeno v zanko while, tako da še naprej pošiljamo podatke na strežnik MySQL.

Če želite videti vso kodo, prenesite skript python (TempHumid.py).

9. korak: MySQL

MySQL
MySQL
MySQL
MySQL

Za strežnik MySQL smo uporabili brezplačno storitev na www.freemysqlhosting.net. Lahko bi naredili strežnik lokalno na Raspberry Pi, vendar smo z brezplačno storitvijo poskrbeli, da je popolnoma povezan z oblakom/internetom.

Za dostop do MySQL morate iti na phpmyadmin.co in se prijaviti s poverilnicami iz svojega računa freemysqlhosting.

Ko ste notri, morate ustvariti tabelo z imenom "TempHumid", znotraj te tabele pa morate ustvariti 4 stolpce, imenovane "ID", "temp", "humid" in "hygro". V prvem stolpcu (ID) morate označiti polje A_I (Samodejno povečanje). To je zato, da stolpec ID vsakemu nizu podatkov dodeli ID. Vse naslednje stolpce je treba nastaviti kot INT (celo število) in standardno vrednost nastaviti na NULL.

10. korak: Node-Red

Node-Red
Node-Red
Node-Red
Node-Red
Node-Red
Node-Red

V našem projektu smo za izdelavo grafičnega vmesnika uporabili Node-Red. Node-Red deluje na Raspberry Pi in zbira podatke iz naše zbirke podatkov MySQL in prikazuje te podatke z merilniki v obliki krofa in grafičnimi grafikoni, tako da lahko končni uporabnik spremlja podatke. Najbolj pametno pri Node-Redu je, da si ga je mogoče ogledati na kateri koli napravi, kar pomeni, da se bo velikost strani spremenila za dano napravo, ki gleda vsebino.

Če želite namestiti naše programiranje Node-Red, si oglejte 1. korak in prenesite dokument z imenom "Node-Red.docx". Nato kopirajte in prilepite besedilo v Node-Red s funkcijo uvoza v zgornjem desnem kotu.

Po tem spremenite nastavitve baze podatkov za vašo bazo podatkov MySQL.

Priporočena: