Cuprins:

Seră UCL - IIOT: 11 pași
Seră UCL - IIOT: 11 pași

Video: Seră UCL - IIOT: 11 pași

Video: Seră UCL - IIOT: 11 pași
Video: Бен Голдэйкр: Боремся с плохой наукой 2024, Iulie
Anonim
Seră UCL - IIOT
Seră UCL - IIOT

Acest proiect este o extensie a proiectului nostru anterior cu sera (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

În acest proiect am adăugat o bază de date, unde ne înregistrăm toate datele și apoi le vizualizăm cu nod roșu pentru o prezentare mai bună.

Conținutul pe care îl conectăm în baza noastră de date este Umiditatea, Temperatura și umiditatea solului, care este prezentat în diferite diagrame.

Pe lângă dataloggin, putem controla și ce profil este activ în seră și îl putem controla de la distanță.

Apoi, putem controla manual pompa și ventilatorul.

Pasul 1: Ghid de instalare

Ghid de instalare
Ghid de instalare

Primul pas este instalarea tuturor componentelor.

În interiorul parantezelor (), am enumerat unde este conectată componenta. De exemplu, Arduino este conectat la Raspberry Pi printr-un cablu USB.

Hardware folosit:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B +
  • Higrometru pentru sol (Arduino)
  • Senzor DHT11 (Arduino)
  • HG-320 Pompa submersibilă de apă (releu)
  • Releu 5V (Arduino)
  • Un ventilator de computer (releu)
  • Alimentare 230V (pompa)

Software folosit:

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

Mai întâi va trebui să conectați componentele hardware, deci urmați acest ghid pentru a construi sera: Ghid de instalare.

Apoi va trebui să instalați Raspbian OS pe Raspberry Pi. După aceea, va trebui să instalați Python, apoi să instalați bibliotecile Python.

Următorul pas este instalarea Node-Red pe Raspberry Pi, apoi navigați la managerul de palete și instalați modulele menționate anterior.

Apoi accesați acest site Server MySQL gratuit și creați un server MySQL gratuit.

Când toate acestea sunt terminate, sunteți gata să transferați scriptul python pe Raspberry Pi, să importați scriptul Node-Red și să încărcați codul pentru Arduino.

Pasul 2: Vitrina de control

Image
Image

Pasul 3: Lista pieselor / software-urilor utilizate în proiect

Am folosit următoarea tehnologie pentru a crea sera

  • Arduino
  • Raspberry Pi
  • Nod-roșu
  • Piton
  • PHPMyAdmin

Pasul 4: Lista I / 0

Schema de conexiuni
Schema de conexiuni

Pasul 5: Diagrama de cablare

Pasul 6: Codul Arduino

Codul Arduino funcționează prin imprimarea datelor, măsurate de senzori, la conexiunea serială unde este citită de Raspberry Pi și transferată în baza de date.

Arduino are, de asemenea, câteva pinuri de intrare digitale conectate la Raspberry Pi pe care le citește Arduino și dacă unul dintre cele trei devine HIGH, profilul se va schimba din cauza unei instrucțiuni IF.

De asemenea, am actualizat codul pentru a utiliza Millis în loc de întârziere, care permite citirea continuă a fundului și a restului codului în loc de un interval de întârziere veche.

Pasul 7: Raspberry Pi 3 B +

Raspberry Pi 3 B +
Raspberry Pi 3 B +

Am folosit un Raspberry Pi 3 B + pentru conectarea Arduino-ului nostru la internet și la o bază de date MySQL. Acest lucru ne-a făcut posibil să stocăm date de la senzorii noștri și să creăm o interfață vizuală pentru utilizatorul final. Pentru interfața cu utilizatorul am folosit Node-Red cu paleta Dashboard.

Dar, înainte de a putea arăta datele senzorilor pe Node-Red, aveam nevoie de o modalitate de a încărca datele pe o bază de date MySQL și, pentru aceasta, am creat un script Python care să ruleze pe Raspberry Pi.

Pasul 8: Python

Piton
Piton

Scriptul Python este utilizat pentru primirea datelor de la comunicarea în serie provenind de la Arduino. Scriptul trimite apoi datele către o bază de date MySQL.

Am folosit două biblioteci, pyserial și mysqlclient.

Deci, primul pas ar fi descărcarea acestor două biblioteci:

  1. PySerial
  2. MySQLclient

PySerial este utilizat pentru colectarea datelor de pe Arduino prin comunicare în serie.

device = '/ dev / ttyUSB0'

arduino = serial. Serial (dispozitiv, 9600)

Prima linie este utilizată pentru definirea portului nostru COM. Pe Raspberry Pi este / dev / ttyUSB0, pe care îl folosim pentru Arduino. A doua linie este pentru deschiderea portului serial către Arduino. Tocmai definim la ce port COM și la ce viteză rulează conexiunea.

Restul codului rulează într-o buclă while.

Apoi vom folosi mai multe blocuri Try and Except. Mai întâi, codul încearcă să ruleze în interiorul blocului Try, dacă nu reușește, atunci rulează blocul Except. Dar dacă blocul Încercați funcționează bine, nu rulează blocul Except, ci doar restul codului.

Deci, în interiorul blocurilor Încercați avem un cod care va citi comunicarea în serie și apoi îl va trimite la baza noastră de date MySQL.

hygrolist = arduino.readlines (1)

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

Deci, codul de mai sus este pentru citirea liniilor în comunicarea în serie. Numărul de la sfârșitul codului definește linia care a fost citită în serial. Deci, aceste linii sunt clasificate în diferite variabile.

Când sunt primite date de la Arduino, am folosit modulul mysqlclient pentru trimiterea datelor către serverul nostru MySQL.

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

Această linie este pentru conectarea la baza noastră de date MySQL. Specifică serverul, numele de utilizator, parola și baza de date la care ar trebui să se conecteze. Aici trebuie să specificați conexiunea la baza de date MySQL.

db.query ( INSERTINTO` TempHumid` (`temp`,` umid`, `hygro`) VALORI (% s,% s,% s)„% (temp, umed, higro))

Deci, aici luăm conexiunea noastră DB și facem o interogare SQL. Interogarea spune că valorile trebuie inserate în tabelul „TempHumid” și apoi în coloanele „temp”, „umed” și „hygro”. Ultima parte „(% s,% s,% s)” este formatarea șirurilor și este utilizată pentru a da bazei de date un format pe care îl poate citi.

Și toată această acțiune este pusă într-o buclă de timp, astfel încât să continuăm să primim date trimise către serverul MySQL.

Dacă doriți să vedeți tot codul, descărcați scriptul python (TempHumid.py).

Pasul 9: MySQL

MySQL
MySQL
MySQL
MySQL

Pentru serverul MySQL, am folosit un serviciu gratuit pe www.freemysqlhosting.net. Am fi putut crea un server local pe Raspberry Pi, dar am mers cu serviciul gratuit pentru a-l conecta complet la cloud / internet.

Pentru a vă accesa MySQL, trebuie să accesați phpmyadmin.co și să vă conectați cu acreditările din contul dvs. freemysqlhosting.

Când vă aflați în interior, trebuie să creați un tabel numit "TempHumid", în interiorul acestui tabel trebuie să creați 4 coloane numite, "ID", "temp", "umed" și "hygro". Prima coloană (ID) trebuie să bifați caseta A_I (Auto Increment). Aceasta este astfel încât coloana ID să ofere fiecărui set de date un ID. Toate coloanele următoare trebuie să fie setate ca INT (număr întreg) și să seteze valoarea standard la NULL.

Pasul 10: Nod-Roșu

Nod-roșu
Nod-roșu
Nod-roșu
Nod-roșu
Nod-roșu
Nod-roșu

În proiectul nostru am folosit Node-Red pentru realizarea unei interfețe grafice. Node-Red rulează pe Raspberry Pi și colectează date din baza noastră de date MySQL și afișează aceste date cu indicatoare în formă de gogoși și diagrame grafice, astfel încât utilizatorul final să poată monitoriza datele. Lucrul inteligent despre Node-Red este că este vizibil pe orice dispozitiv, ceea ce înseamnă că site-ul va fi redimensionat pentru dispozitivul dat care vizualizează conținutul.

Pentru a instala programarea noastră Node-Red, consultați pasul 1 și descărcați documentul numit „Node-Red.docx”. Apoi copiați și lipiți textul în Node-Red prin intermediul funcției de import din colțul din dreapta sus.

După aceea modificați setările DB pentru MySQL DB.

Recomandat: