Obsah:
Video: Skleník UCL - IIOT: 11 krokov
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Tento projekt je rozšírením nášho predchádzajúceho projektu so skleníkom (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).
V tomto projekte sme pridali databázu, kde zaznamenávame všetky naše údaje a potom ich vizualizujeme pomocou uzlovej červenej pre lepší prehľad.
Obsah, ktorý do našej databázy zaznamenávame, je vlhkosť, teplota a vlhkosť pôdy, ktorá je znázornená na rôznych diagramoch.
Okrem datalogginu dokážeme ovládať aj profil, ktorý je v skleníku aktívny, a diaľkovo ho ovládať.
Potom sme tiež schopní ovládať čerpadlo a ventilátor ručne.
Krok 1: Sprievodca inštaláciou
Prvým krokom je inštalácia všetkých rôznych komponentov.
Vnútri zátvoriek () sme uviedli, kde je komponent pripojený. Napríklad napríklad Arduino je k Raspberry Pi pripojené pomocou kábla USB.
Použitý hardvér:
- Arduino (Raspberry Pi)
- Raspberry Pi 3 B+
- Pôdny vlhkomer (Arduino)
- Snímač DHT11 (Arduino)
- Ponorné vodné čerpadlo HG-320 (relé)
- 5V relé (Arduino)
- Počítačový ventilátor (relé)
- Napájanie 230 V (čerpadlo)
Použitý softvér:
- Raspbian (OS pre Raspberry Pi)
- Arduino IDE
- Python (Raspberry Pi)- PySerial- MySQLclient
- Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Dashboard
- Server MySQL (freemysqlhosting.net)
Najprv budete musieť pripojiť hardvérové komponenty, takže pri stavbe skleníka postupujte podľa tejto príručky: Inštalačná príručka.
Potom budete musieť nainštalovať Raspbian OS na svoj Raspberry Pi. Potom budete musieť nainštalovať Python a potom nainštalovať knižnice pythonu.
Ďalším krokom je inštalácia Node-Red na Raspberry Pi a potom prejdite na správcu paliet a nainštalujte moduly uvedené vyššie.
Potom prejdite na tento server Bezplatný server MySQL a vytvorte si bezplatný server MySQL.
Keď je toto všetko hotové, ste pripravení preniesť skript python do svojho Raspberry Pi, importovať skript Node-Red a nahrať kód pre Arduino.
Krok 2: Ukážka ovládania
Krok 3: Zoznam častí/softvéru použitého v projekte
Na výrobu skleníka sme použili nasledujúcu technológiu
- Arduino
- Malinový koláč
- Uzol-červený
- Python
- PHPMyAdmin
Krok 4: Zoznam I/0
Krok 5: Schéma zapojenia
Krok 6: Kód Arduino
Kód Arduino funguje tak, že dáta namerané senzormi vytlačí na sériové pripojenie, kde ich Raspberry Pi načíta a prenesie do databázy.
Arduino má tiež niekoľko digitálnych vstupných pinov pripojených k Raspberry Pi, ktoré Arduino číta, a ak sa jeden z troch stane VYSOKÝ, profil sa zmení kvôli príkazu IF.
Tiež sme aktualizovali kód tak, aby používal Millis namiesto oneskorenia, čo umožňuje, aby boli zadky a zvyšok kódu neustále čítané namiesto intervalu podľa starého oneskorenia.
Krok 7: Raspberry Pi 3 B+
Na prepojenie nášho Arduina s internetom a databázou MySQL sme použili Raspberry Pi 3 B+. To nám umožnilo ukladať údaje z našich senzorov a vytvoriť vizuálne rozhranie pre koncového používateľa. Ako používateľské rozhranie sme použili Node-Red s paletou Dashboard.
Ale skôr, ako sme mohli ukázať naše údaje senzorov na Node-Red, potrebovali sme spôsob, ako nahrať údaje do databázy MySQL, a na to sme vytvorili skript Python, ktorý by bežal na našom Raspberry Pi.
Krok 8: Python
Skript Python sa používa na príjem údajov zo sériovej komunikácie pochádzajúcej z Arduina. Skript potom pošle údaje do databázy MySQL.
Použili sme dve knižnice, pyserial a mysqlclient.
Prvým krokom by bolo stiahnutie týchto dvoch knižníc:
- PySerial
- MySQLclient
PySerial sa používa na zber údajov z Arduina prostredníctvom sériovej komunikácie.
zariadenie = '/dev/ttyUSB0'
arduino = sériový. Sériový (zariadenie, 9600)
Prvý riadok sa používa na definovanie nášho COM portu. Na Raspberry Pi používame /dev /ttyUSB0, ktorý používame pre Arduino. Druhý riadok slúži na otvorenie sériového portu pre Arduino. Len definujeme, ktorý COM port a pri akej rýchlosti prebieha pripojenie.
Zvyšok kódu beží v slučke while.
Ďalej používame viacero blokov Try and Except. Kód sa najskôr pokúša spustiť v bloku Try, ak to zlyhá, spustí blok Okrem. Ak však blok Try beží dobre, nespustí sa blok Except, ale spustí sa iba zvyšok kódu.
Takže v blokoch Try máme kód, ktorý bude čítať sériovú komunikáciu a potom ju odošle do našej databázy MySQL.
hygrolist = arduino.readlines (1)
templist = arduino.readlines (2) humidlist = arduino.readlines (3)
Vyššie uvedený kód je teda na čítanie riadkov v sériovej komunikácii. Číslo na konci kódu definuje riadok, ktorý bol prečítaný v seriáli. Tieto riadky sú teda kategorizované do rôznych premenných.
Keď sú prijaté údaje z Arduina, na odoslanie údajov na náš server MySQL sme použili modul mysqlclient.
db = _mysql.connect (host = "sql7.freemysqlhosting.net", užívateľ = "sql7256552", passwd = "3ebtbP8FQ2", db = "sql7256552")
Tento riadok slúži na pripojenie k našej databáze MySQL. Špecifikuje server, používateľské meno, heslo a databázu, ku ktorej sa má pripojiť na server. Tu by ste mali špecifikovať pripojenie k MySQL DB.
db.query ("INSERTINTO` TempHumid` (`temp`,` humid`, `hygro`) VALUES (%s, %s, %s)" %(temp, humid, hygro))
Tu teda vezmeme naše pripojenie DB a urobíme dotaz SQL. Dotaz hovorí, že hodnoty je potrebné vložiť do tabuľky „TempHumid“a potom do stĺpcov „temp“, „humid“a „hygro“. Posledná časť „(%s, %s, %s)“je formátovanie reťazcov a slúži na poskytnutie databázy formátu, ktorý dokáže čítať.
A všetky tieto akcie sú vložené do cyklu while, aby sme stále odosielali údaje na server MySQL.
Ak chcete vidieť celý kód, stiahnite si skript python (TempHumid.py).
Krok 9: MySQL
Pre server MySQL sme použili bezplatnú službu na www.freemysqlhosting.net. Mohli sme vytvoriť server lokálne na Raspberry Pi, ale išli sme s bezplatnou službou, aby bolo plne prepojené s cloudom/internetom.
Ak chcete získať prístup k svojmu serveru MySQL, musíte prejsť na stránku phpmyadmin.co a prihlásiť sa pomocou poverení zo svojho účtu freemysqlhosting.
Keď ste vo vnútri, musíte vytvoriť tabuľku s názvom „TempHumid“, v tejto tabuľke musíte vytvoriť 4 stĺpce s názvom „ID“, „teplota“, „vlhkosť“a „hygro“. V prvom stĺpci (ID) musíte začiarknuť políčko A_I (Automatické zvýšenie). Je to tak preto, aby stĺpec ID poskytoval každej množine údajov identifikátor. Všetky nasledujúce stĺpce je potrebné nastaviť ako INT (celé číslo) a štandardnú hodnotu nastaviť na NULL.
Krok 10: Uzol červený
V našom projekte sme použili Node-Red na vytvorenie grafického rozhrania. Node-Red beží na Raspberry Pi a zbiera údaje z našej databázy MySQL a ukazuje tieto údaje pomocou meradiel v tvare šišky a grafických tabuliek, aby koncový používateľ mohol údaje sledovať. Inteligentné na Node-Red je, že je možné ho zobraziť na akomkoľvek zariadení, čo znamená, že sa zmení veľkosť stránky pre dané zariadenie, ktoré si prezerá obsah.
Ak chcete nainštalovať naše programovanie Node-Red, pozrite sa na krok 1 a stiahnite si dokument s názvom „Node-Red.docx“. Potom skopírujte a prilepte text do Node-Red pomocou funkcie importu v pravom hornom rohu.
Potom zmeňte nastavenia DB pre MySQL DB.