Tartalomjegyzék:

UCL - IIOT Üvegház: 11 lépés
UCL - IIOT Üvegház: 11 lépés

Videó: UCL - IIOT Üvegház: 11 lépés

Videó: UCL - IIOT Üvegház: 11 lépés
Videó: Inno Instrument V11 2024, November
Anonim
UCL - IIOT üvegház
UCL - IIOT üvegház

Ez a projekt kiterjeszti a Greenhouse-szal korábbi projektünket (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Ebben a projektben hozzáadtunk egy adatbázist, ahol naplózzuk az összes adatunkat, majd vizualizáljuk őket a csomópont vörössel a jobb áttekintés érdekében.

Az adatbázisunkba bejegyzett tartalom a talaj páratartalma, hőmérséklete és nedvessége, amelyet különböző diagramok mutatnak be.

A dataloggin mellett szabályozhatjuk, hogy melyik profil aktív az üvegházban, és távolról is irányíthatjuk azt.

Ezután manuálisan is vezérelhetjük a szivattyút és a ventilátort.

1. lépés: Telepítési útmutató

Telepítési útmutató
Telepítési útmutató

Az első lépés az összes különböző összetevő telepítése.

A zárójelben () felsoroltuk, hogy az alkatrész hova van csatlakoztatva. Így például az Arduino USB -kábellel csatlakozik a Raspberry Pi -hez.

Használt hardver:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Talaj higrométer (Arduino)
  • DHT11 érzékelő (Arduino)
  • HG-320 merülő vízpumpa (relé)
  • 5V relé (Arduino)
  • Számítógép ventilátor (relé)
  • 230V -os tápegység (szivattyú)

Használt szoftver:

  • Raspbian (Raspberry Pi operációs rendszer)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Összefoglaló- MySQL- Irányítópult
  • MySQL szerver (freemysqlhosting.net)

Először csatlakoztatnia kell a hardver összetevőit, ezért kövesse ezt az útmutatót az üvegház építéséhez: Telepítési útmutató.

Ezután telepítenie kell a Raspbian OS -t a Raspberry Pi -re. Ezt követően telepítenie kell a Python -ot, majd telepítenie kell a python -könyvtárakat.

A következő lépés a Node-Red telepítése a Raspberry Pi-re, majd navigáljon a palettakezelőhöz, és telepítse a korábban megadott modulokat.

Ezután lépjen a Free MySQL Server webhelyre, és hozzon létre egy ingyenes MySQL szervert.

Ha mindez megtörtént, készen áll a python-szkript átvitelére a Raspberry Pi-re, importálni a Node-Red parancsfájlt, és feltölteni az Arduino kódját.

2. lépés: A vezérlés bemutatása

Image
Image

3. lépés: A projektben használt alkatrészek/szoftverek listája

Az alábbi technológiát használtuk az üvegház előállításához

  • Arduino
  • Raspberry Pi
  • Node-Red
  • Piton
  • PHPMyAdmin

4. lépés: I/0 lista

Bekötési rajz
Bekötési rajz

5. lépés: bekötési rajz

6. lépés: Az Arduino kód

Az Arduino kód úgy működik, hogy az érzékelők által mért adatokat kinyomtatja a soros kapcsolathoz, ahol a Raspberry Pi elolvassa és továbbítja az adatbázisba.

Az Arduino rendelkezik néhány digitális bemeneti tűvel is a Raspberry Pi -hez csatlakoztatva, amelyeket az Arduino olvas, és ha a három közül az egyik MAGAS lesz, a profil megváltozik egy IF utasítás miatt.

Továbbá frissítettük a kódot, hogy késleltetés helyett Millis -t használjon, amely lehetővé teszi a kód és a többi rész folyamatos olvasását a régi késleltetés intervalluma helyett.

7. lépés: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

A Raspberry Pi 3 B+ -ot használtuk az Arduino internethez és a MySQL adatbázishoz való csatlakoztatásához. Ez lehetővé tette számunkra érzékelőink adatainak tárolását és vizuális felület létrehozását a végfelhasználó számára. A felhasználói felülethez a Node-Red-t használtuk a Dashboard palettával.

Mielőtt azonban megmutathatnánk érzékelőink adatait a Node-Red-en, szükségünk volt egy módra, hogy feltölthessük az adatokat egy MySQL adatbázisba, és ehhez készítettünk egy Python-szkriptet, amely a Raspberry Pi-n fut.

8. lépés: Python

Piton
Piton

A Python szkript az adatok fogadására szolgál az Arduino-ból érkező soros kommunikációból. A szkript ezután elküldi az adatokat a MySQL adatbázisba.

Két könyvtárat használtunk, a pyserial és a mysqlclient.

Tehát az első lépés a két könyvtár letöltése lenne:

  1. PySerial
  2. MySQLclient

A PySerial az adatok Arduino-ból történő gyűjtésére szolgál soros kommunikáción keresztül.

device = '/dev/ttyUSB0'

arduino = soros. Soros (eszköz, 9600)

Az első sort a COM-portunk meghatározására használjuk. A Raspberry Pi -n a /dev /ttyUSB0 az Arduino. A második sor a soros port megnyitására szolgál az Arduino számára. Csak meghatározzuk, hogy melyik COM-port és milyen sebességgel fut a kapcsolat.

A kód többi része egy while ciklusban fut.

Ezután több Try and Except blokkot használunk. Először a kód a Try blokkon belül próbál futni, ha ez nem sikerül, akkor a Kivétel blokkot futtatja. De ha a Try blokk jól fut, akkor nem az Except blokkot futtatja, csak a kód többi részét.

Tehát a Try blokkok belsejében van egy kód, amely beolvassa a soros kommunikációt, majd elküldi azt a MySQL adatbázisunkba.

hygrolist = arduino.readlines (1)

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

Tehát a fenti kód a soros kommunikáció sorainak olvasására szolgál. A kód végén található szám határozza meg a sorozatban olvasott sort. Tehát ezeket a sorokat különböző változókba sorolják.

Amikor az Arduino adatai érkeznek, a mysqlclient modult használtuk az adatok MySQL szerverünkre történő elküldésére.

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

Ez a vonal a MySQL adatbázisunkhoz való kapcsolódáshoz szolgál. Megadja a szervert, a felhasználónevet, a jelszót és azt, hogy melyik adatbázishoz kell csatlakoznia a szerveren belül. Itt kell megadni a kapcsolatot a MySQL DB -vel.

db.query ("INSERTINTO` TempHumid` (`temp", `nedves`,` hygro`) ÉRTÉKEK (%s, %s, %s) " %(hőmérséklet, nedves, hygro))

Tehát itt fogjuk a DB -kapcsolatot, és SQL -lekérdezést készítünk. A lekérdezés szerint az értékeket be kell illeszteni a „TempHumid” táblázatba, majd a „temp”, „nedves” és „hygro” oszlopokba. Az utolsó rész („(%s, %s, %s)” a karakterláncok formázása, és arra szolgál, hogy az adatbázis számára formátumot biztosítson.

Mindezeket a műveleteket egy idő ciklusba helyezzük, így folyamatosan kapunk adatokat a MySQL szerverre.

Ha látni szeretné az összes kódot, töltse le a python parancsfájlt (TempHumid.py).

9. lépés: MySQL

MySQL
MySQL
MySQL
MySQL

A MySQL szerverhez ingyenes szolgáltatást használtunk a www.freemysqlhosting.net webhelyen. Létrehozhattunk volna szervert helyben a Raspberry Pi -n, de az ingyenes szolgáltatással együtt teljes mértékben csatlakoztattunk a felhőhöz/internethez.

A MySQL eléréséhez lépjen a phpmyadmin.co weboldalra, és jelentkezzen be a freemysqlhosting fiók hitelesítő adataival.

Amikor bent van, létre kell hoznia egy "TempHumid" nevű táblázatot, ezen belül pedig 4 oszlopot, "ID", "temp", "nedves" és "hygro". Az első oszlopban (azonosító) be kell jelölnie az A_I (Automatikus növelés) négyzetet. Ez azért van így, mert az ID oszlop minden adatkészlethez azonosítót ad. A következő oszlopokat INT (egész szám) értékre kell állítani, és a standard értéket NULL értékre kell állítani.

10. lépés: Node-Red

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

Projektünkben Node-Red-t használtunk grafikus felület létrehozásához. A Node-Red a Raspberry Pi-n fut, és adatokat gyűjt a MySQL adatbázisunkból, és ezeket az adatokat fánk alakú mérőeszközökkel és grafikus diagramokkal jeleníti meg, hogy a végfelhasználó figyelemmel kísérhesse az adatokat. Az okos dolog a Node-Red-ben az, hogy bármilyen eszközön megtekinthető, ami azt jelenti, hogy a webhely átméreteződik a tartalmat megtekintő adott eszközre.

Node-Red programozásunk telepítéséhez nézze meg az 1. lépést, és töltse le a "Node-Red.docx" nevű dokumentumot. Ezután másolja és illessze be a szöveget a Node-Red-be a jobb felső sarokban található importálás funkció segítségével.

Ezt követően módosítsa a MySQL DB DB beállításait.

Ajánlott: