Turinys:

UCL - IIOT šiltnamis: 11 žingsnių
UCL - IIOT šiltnamis: 11 žingsnių

Video: UCL - IIOT šiltnamis: 11 žingsnių

Video: UCL - IIOT šiltnamis: 11 žingsnių
Video: UCL-IIoT-Datalogger 2024, Liepa
Anonim
UCL - IIOT šiltnamis
UCL - IIOT šiltnamis

Šis projektas yra mūsų ankstesnio projekto su šiltnamiu pratęsimas (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Šiame projekte mes pridėjome duomenų bazę, kurioje registruojame visus savo duomenis ir vizualizuojame juos naudodami mazgą raudona, kad gautumėte geresnę apžvalgą.

Turinys, kurį registruojame savo duomenų bazėje, yra dirvožemio drėgnumas, temperatūra ir drėgmė, kuris parodytas skirtingose diagramose.

Be duomenų katalogo, mes taip pat galime valdyti, kuris profilis yra aktyvus šiltnamyje, ir nuotoliniu būdu jį valdyti.

Tada mes taip pat galime rankiniu būdu valdyti siurblį ir ventiliatorių.

1 žingsnis: diegimo vadovas

Diegimo vadovas
Diegimo vadovas

Pirmasis žingsnis yra įdiegti visus skirtingus komponentus.

Skliausteliuose () mes nurodėme, kur komponentas yra prijungtas. Pavyzdžiui, „Arduino“yra prijungtas prie „Raspberry Pi“per USB kabelį.

Naudota aparatinė įranga:

  • „Arduino“(„Raspberry Pi“)
  • Raspberry Pi 3 B+
  • Dirvožemio higrometras (Arduino)
  • DHT11 jutiklis („Arduino“)
  • HG-320 povandeninis vandens siurblys (relė)
  • 5 V relė („Arduino“)
  • Kompiuterio ventiliatorius (relė)
  • 230 V maitinimo šaltinis (siurblys)

Naudojama programinė įranga:

  • „Raspbian“(„Raspberry Pi“OS)
  • „Arduino IDE“
  • „Python“(„Raspberry Pi“)- „PySerial“- „MySQLclient“
  • Raudonas mazgas (Raspberry Pi)- Pythonshell- Santrauka- MySQL- Prietaisų skydelis
  • „MySQL“serveris (freemysqlhosting.net)

Pirmiausia turėsite prijungti aparatūros komponentus, todėl, norėdami pastatyti šiltnamį, vadovaukitės šiuo vadovu: Įdiegimo vadovas.

Tada turėsite įdiegti Raspbian OS savo Raspberry Pi. Po to turėsite įdiegti „Python“ir įdiegti „python“bibliotekas.

Kitas žingsnis yra įdiegti „Node-Red“į „Raspberry Pi“, tada pereiti prie paletės tvarkyklės ir įdiegti anksčiau nurodytus modulius.

Tada eikite į šią svetainę „Free MySQL Server“ir sukurkite nemokamą „MySQL“serverį.

Kai visa tai bus padaryta, būsite pasiruošę perkelti „python“scenarijų į „Raspberry Pi“, importuoti „Node-Red“scenarijų ir įkelti „Arduino“kodą.

2 žingsnis: Valdymo demonstravimas

Image
Image

3 žingsnis: Projekte naudojamų dalių/programinės įrangos sąrašas

Šiltnamiui gaminti panaudojome šią technologiją

  • Arduino
  • Raspberry Pi
  • Mazgas-raudonas
  • Python
  • PHPMyAdmin

4 žingsnis: I/0 sąrašas

Elektros schema
Elektros schema

5 žingsnis: laidų schema

6 žingsnis: „Arduino“kodas

„Arduino“kodas spausdina jutiklių išmatuotus duomenis prie nuoseklaus ryšio, kur juos skaito „Raspberry Pi“ir perkelia į duomenų bazę.

„Arduino“taip pat turi keletą skaitmeninių įėjimų, prijungtų prie „Raspberry Pi“, kuriuos skaito „Arduino“ir jei vienas iš trijų tampa HIGH, profilis pasikeis dėl IF teiginio.

Taip pat atnaujinome kodą, kad vietoj delsos būtų naudojamas „Millis“, o tai leidžia visą laiką skaityti užpakalį ir likusią kodo dalį, o ne intervalą pagal seną vėlavimą.

7 žingsnis: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Norėdami prijungti „Arduino“prie interneto ir „MySQL“duomenų bazės, naudojome „Raspberry Pi 3 B+“. Tai leido mums saugoti jutiklių duomenis ir sukurti vizualią sąsają galutiniam vartotojui. Naudotojo sąsajai naudojome „Node-Red“su prietaisų skydelio palete.

Tačiau prieš parodydami jutiklių duomenis „Node-Red“, mums reikėjo būdų, kaip įkelti duomenis į „MySQL“duomenų bazę, ir tam sukūrėme „Python“scenarijų, kuris veiktų mūsų „Raspberry Pi“.

8 žingsnis: „Python“

Python
Python

„Python“scenarijus naudojamas duomenims iš serijinio ryšio gauti iš „Arduino“. Tada scenarijus siunčia duomenis į „MySQL“duomenų bazę.

Mes naudojome dvi bibliotekas - pyserial ir mysqlclient.

Taigi pirmas žingsnis būtų atsisiųsti šias dvi bibliotekas:

  1. PySerial
  2. „MySQLclient“

„PySerial“naudojamas duomenims iš „Arduino“rinkti naudojant serijinį ryšį.

device = '/dev/ttyUSB0'

arduino = serijinis. Serijinis (prietaisas, 9600)

Pirmoji eilutė naudojama mūsų COM prievadui apibrėžti. „Raspberry Pi“yra /dev /ttyUSB0, kurį naudojame „Arduino“. Antroji eilutė skirta atidaryti nuoseklųjį prievadą „Arduino“. Mes tiesiog apibrėžiame, kuris COM prievadas ir kokiu greičiu veikia ryšys.

Likusi kodo dalis vykdoma ciklo ciklu.

Toliau naudojame kelis „Try and Except“blokus. Pirmiausia kodas bando paleisti „Try“bloko viduje, jei nepavyksta, jis paleidžia „Except“bloką. Bet jei „Try“blokas veikia gerai, jis nepaleidžia „Except“bloko, jis tiesiog paleidžia likusį kodą.

Taigi „Try“blokų viduje turime kodą, kuris nuskaitys nuoseklųjį ryšį ir išsiųs jį į mūsų „MySQL“duomenų bazę.

hygrolist = arduino.readlines (1)

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

Taigi aukščiau pateiktas kodas skirtas eilutinio ryšio eilučių skaitymui. Skaičius kodo pabaigoje apibrėžia eilutę, kuri buvo perskaityta serijoje. Taigi šios eilutės yra suskirstytos į skirtingus kintamuosius.

Kai gaunami duomenys iš „Arduino“, mes naudojome „mysqlclient“modulį duomenims siųsti į „MySQL“serverį.

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

Ši linija skirta prisijungti prie mūsų „MySQL“duomenų bazės. Jis nurodo serverį, vartotojo vardą, slaptažodį ir prie kurios duomenų bazės jis turėtų prisijungti prie serverio. Čia turėtumėte nurodyti ryšį su „MySQL DB“.

db.query ("INSERTINTO` TempHumid` (`temp`,` drėgnas`, `hygro`) VERTĖS (%s, %s, %s)" %(temp, drėgna, hygro))

Taigi čia mes paimame DB ryšį ir sukuriame SQL užklausą. Užklausoje teigiama, kad vertės turi būti įterptos į lentelę „TempHumid“, o tada į stulpelius „temp“, „drėgnas“ir „hygro“. Paskutinė dalis „(%s, %s, %s)“yra eilutės formatavimas ir naudojama duomenų bazei suteikti formatą, kurį ji gali skaityti.

Ir visas šis veiksmas yra įtrauktas į tam tikrą ciklą, kad duomenys būtų siunčiami į „MySQL“serverį.

Jei norite pamatyti visą kodą, atsisiųskite „python“scenarijų (TempHumid.py).

9 veiksmas: „MySQL“

MySQL
MySQL
MySQL
MySQL

„MySQL“serveriui naudojome nemokamą paslaugą svetainėje www.freemysqlhosting.net. Mes galėjome sukurti serverį vietoje „Raspberry Pi“, tačiau pasirinkome nemokamą paslaugą, kad ji būtų visiškai prijungta prie debesies/interneto.

Norėdami pasiekti „MySQL“, turite eiti į phpmyadmin.co ir prisijungti naudodami kredencialus iš savo „freemysqlhosting“paskyros.

Kai esate viduje, turite sukurti lentelę, pavadintą „TempHumid“, šios lentelės viduje turite sukurti 4 stulpelius, pavadintus „ID“, „temp“, „drėgnas“ir „hygro“. Pirmame stulpelyje (ID) turite pažymėti langelį A_I (automatinis padidinimas). Taip stulpelyje ID kiekvienam duomenų rinkiniui suteikiamas ID. Visi šie stulpeliai turi būti nustatyti kaip INT (sveikasis skaičius), o standartinė vertė - NULL.

10 žingsnis: mazgas raudonas

Mazgas-raudonas
Mazgas-raudonas
Mazgas-raudonas
Mazgas-raudonas
Mazgas-raudonas
Mazgas-raudonas

Mūsų projekte grafinei sąsajai sukurti naudojome „Node-Red“. „Node-Red“veikia „Raspberry Pi“ir renka duomenis iš mūsų „MySQL“duomenų bazės ir rodo šiuos duomenis su spurgos formos matuokliais ir grafinėmis diagramomis, kad galutinis vartotojas galėtų stebėti duomenis. Išmanusis „Node-Red“dalykas yra tas, kad jį galima peržiūrėti bet kuriame įrenginyje, o tai reiškia, kad svetainės dydis bus pakeistas tam tikram įrenginiui, kuris peržiūri turinį.

Norėdami įdiegti „Node-Red“programavimą, peržiūrėkite 1 veiksmą ir atsisiųskite dokumentą „Node-Red.docx“. Tada nukopijuokite ir įklijuokite tekstą į „Node-Red“naudodami importavimo funkciją viršutiniame dešiniajame kampe.

Po to pakeiskite „MySQL DB“DB nustatymus.

Rekomenduojamas: