Obsah:

Skleník UCL - IIOT: 11 kroků
Skleník UCL - IIOT: 11 kroků

Video: Skleník UCL - IIOT: 11 kroků

Video: Skleník UCL - IIOT: 11 kroků
Video: Tunnel a soffietto 2024, Červenec
Anonim
Skleník UCL - IIOT
Skleník UCL - IIOT

Tento projekt je rozšířením našeho dřívějšího projektu se skleníkem (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

V tomto projektu jsme přidali databázi, kde zaznamenáváme všechna naše data a poté je vizualizujeme pomocí uzlu-červené pro větší přehled.

Obsah, který do naší databáze zaznamenáváme, je Vlhkost, Teplota a vlhkost půdy, která je znázorněna v různých diagramech.

Kromě datalogginu můžeme také ovládat, který profil je ve skleníku aktivní, a dálkově jej ovládat.

Pak jsme také schopni ovládat čerpadlo a ventilátor ručně.

Krok 1: Průvodce instalací

Průvodce instalací
Průvodce instalací

Prvním krokem je instalace všech různých komponent.

Uvnitř závorek () jsme uvedli, kde je komponenta připojena. Například například Arduino je připojeno k Raspberry Pi pomocí kabelu USB.

Použitý hardware:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Půdní vlhkoměr (Arduino)
  • Čidlo DHT11 (Arduino)
  • HG-320 Ponorné vodní čerpadlo (relé)
  • 5V relé (Arduino)
  • Počítačový ventilátor (relé)
  • Napájení 230 V (čerpadlo)

Použitý software:

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

Nejprve budete muset připojit hardwarové komponenty, takže při stavbě skleníku postupujte podle této příručky: Instalační příručka.

Poté budete muset na svůj Raspberry Pi nainstalovat Raspbian OS. Poté budete muset nainstalovat Python a poté nainstalovat knihovny pythonu.

Dalším krokem je instalace Node-Red na Raspberry Pi a poté přejděte do správce palet a nainstalujte moduly uvedené výše.

Poté přejděte na tento server Free MySQL Server a vytvořte si bezplatný server MySQL.

Když je toto vše hotovo, jste připraveni přenést skript pythonu na váš Raspberry Pi, importovat skript Node-Red a nahrát kód pro Arduino.

Krok 2: Přehlídka ovládání

Image
Image

Krok 3: Seznam součástí/softwaru použitých v projektu

K výrobě skleníku jsme použili následující technologii

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

Krok 4: Seznam I/0

Elektrické schéma
Elektrické schéma

Krok 5: Schéma zapojení

Krok 6: Kód Arduino

Kód Arduino funguje tak, že data naměřená senzory vytiskne na sériové připojení, kde je načte Raspberry Pi a přenese do databáze.

Arduino má také několik digitálních vstupních pinů připojených k Raspberry Pi, které Arduino čte, a pokud se jeden ze tří stane VYSOKÝ, profil se změní kvůli příkazu IF.

Také jsme upgradovali kód tak, aby používal Millis místo zpoždění, které umožňuje, aby byly buttomy a zbytek kódu neustále čteny místo intervalu podle starého zpoždění.

Krok 7: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

Pro připojení našeho Arduina k internetu a databázi MySQL jsme použili Raspberry Pi 3 B+. To nám umožnilo ukládat data z našich senzorů a vytvořit vizuální rozhraní pro koncového uživatele. Pro uživatelské rozhraní jsme použili Node-Red s paletou Dashboard.

Než jsme ale mohli ukázat naše data ze senzorů na Node-Red, potřebovali jsme způsob, jak data nahrát do databáze MySQL, a za tím účelem jsme vytvořili skript Pythonu, který poběží na našem Raspberry Pi.

Krok 8: Python

Krajta
Krajta

Skript Python se používá pro příjem dat ze sériové komunikace pocházející z Arduina. Skript poté odešle data do databáze MySQL.

Použili jsme dvě knihovny, pyserial a mysqlclient.

Prvním krokem by tedy bylo stažení těchto dvou knihoven:

  1. PySerial
  2. MySQLclient

PySerial se používá pro sběr dat z Arduina prostřednictvím sériové komunikace.

zařízení = '/dev/ttyUSB0'

arduino = serial. Serial (zařízení, 9600)

První řádek se používá k definování našeho COM portu. Na Raspberry Pi je to /dev /ttyUSB0, který používáme pro Arduino. Druhý řádek je pro otevření sériového portu pro Arduino. Jen definujeme, který COM port a jakou rychlostí připojení běží.

Zbytek kódu běží ve smyčce while.

Dále používáme několik bloků Try and Except. Nejprve se kód pokouší spustit uvnitř bloku Try, pokud selže, pak spustí blok Except. Pokud ale blok Try běží dobře, nespustí blok Except, ale spustí pouze zbytek kódu.

Takže uvnitř bloků Try máme kód, který přečte sériovou komunikaci a poté ji odešle do naší databáze MySQL.

hygrolist = arduino.readlines (1)

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

Výše uvedený kód je tedy pro čtení řádků v sériové komunikaci. Číslo na konci kódu definuje řádek, který byl načten v seriálu. Tyto řádky jsou tedy kategorizovány do různých proměnných.

Když jsou přijata data z Arduina, použili jsme modul mysqlclient pro odeslání dat na náš server MySQL.

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

Tento řádek je pro připojení k naší databázi MySQL. Uvádí server, uživatelské jméno, heslo a databázi, ke které se má na serveru připojit. Zde byste měli určit připojení k MySQL DB.

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

Zde tedy vezmeme naše připojení DB a vytvoříme dotaz SQL. Dotaz říká, že hodnoty musí být vloženy do tabulky „TempHumid“a poté do sloupců „temp“, „humid“a „hygro“. Poslední část „(%s, %s, %s)“je formátování řetězců a slouží k tomu, aby databáze získala formát, který dokáže číst.

A všechny tyto akce jsou vloženy do cyklu while, abychom stále odesílali data na server MySQL.

Pokud chcete vidět celý kód, stáhněte si skript python (TempHumid.py).

Krok 9: MySQL

MySQL
MySQL
MySQL
MySQL

Pro server MySQL jsme použili bezplatnou službu na www.freemysqlhosting.net. Mohli jsme vytvořit server lokálně na Raspberry Pi, ale šli jsme s bezplatnou službou, aby byl plně připojen ke cloudu/internetu.

Chcete -li získat přístup k MySQL, musíte jít na phpmyadmin.co a přihlásit se pomocí přihlašovacích údajů ze svého účtu freemysqlhosting.

Když jste uvnitř, musíte vytvořit tabulku s názvem „TempHumid“, uvnitř této tabulky musíte vytvořit 4 sloupce s názvem „ID“, „teplota“, „vlhko“a „hygro“. V prvním sloupci (ID) musíte zaškrtnout políčko A_I (Auto Increment). Je tomu tak proto, že sloupec ID dává každé datové sadě ID. Všechny následující sloupce je třeba nastavit jako INT (celé číslo) a standardní hodnotu nastavit na NULL.

Krok 10: Node-Red

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

V našem projektu jsme použili Node-Red pro vytvoření grafického rozhraní. Node-Red běží na Raspberry Pi a sbírá data z naší databáze MySQL a ukazuje tato data pomocí měřidel ve tvaru koblihy a grafických grafů, takže koncový uživatel může data sledovat. Chytrá věc na Node-Red je, že je viditelná na jakémkoli zařízení, což znamená, že u daného zařízení, které si prohlíží obsah, dojde ke změně velikosti webu.

Chcete-li nainstalovat naše programování Node-Red, podívejte se na krok 1 a stáhněte si dokument s názvem „Node-Red.docx“. Poté zkopírujte a vložte text do Node-Red pomocí funkce importu v pravém horním rohu.

Poté změňte nastavení DB pro MySQL DB.

Doporučuje: