Inhoudsopgave:

UCL - IIOT Kas - Ajarnpa
UCL - IIOT Kas - Ajarnpa

Video: UCL - IIOT Kas - Ajarnpa

Video: UCL - IIOT Kas - Ajarnpa
Video: Нелогичная жизнь_Рассказ_Слушать 2024, Juli-
Anonim
UCL - IIOT Kas
UCL - IIOT Kas

Dit project is een uitbreiding van ons eerdere project met de Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

In dit project hebben we een database toegevoegd, waar we al onze gegevens loggen en deze vervolgens visualiseren met node-red voor een groter overzicht.

De inhoud die we in onze database loggen is Vochtigheid, Temperatuur en vochtigheid van de bodem, die in verschillende diagrammen wordt weergegeven.

Naast dataloggin zijn we ook in staat om op afstand te controleren welk profiel in de Kas actief is.

Dan kunnen we de pomp en ventilator ook handmatig aansturen.

Stap 1: Installatiehandleiding

Installatie gids
Installatie gids

De eerste stap is om alle verschillende componenten te installeren.

Binnen de haakjes () hebben we vermeld waar het onderdeel op is aangesloten. Zo is Arduino bijvoorbeeld via een USB-kabel verbonden met Raspberry Pi.

Gebruikte hardware:

  • Arduino (Raspberry Pi)
  • Raspberry Pi 3 B+
  • Bodemhygrometer (Arduino)
  • DHT11-sensor (Arduino)
  • HG-320 Dompelpomp (Relais)
  • 5V relais (Arduino)
  • Een computerventilator (relais)
  • 230V voeding (Pomp)

Gebruikte software:

  • Raspbian (OS voor Raspberry Pi)
  • Arduino IDE
  • Python (Raspberry Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Samenvatting- MySQL- Dashboard
  • MySQL-server (freemysqlhosting.net)

Eerst moet je de hardwarecomponenten aansluiten, dus volg deze handleiding om de kas te bouwen: Installatiehandleiding.

Dan moet je Raspbian OS op je Raspberry Pi installeren. Daarna moet u Python installeren en vervolgens de python-bibliotheken installeren.

De volgende stap is om Node-Red op de Raspberry Pi te installeren en vervolgens naar de palletmanager te gaan en de eerder genoemde modules te installeren.

Ga dan naar deze site Free MySQL Server en maak een gratis MySQL server aan.

Als dit allemaal is gebeurd, ben je klaar om het python-script over te zetten naar je Raspberry Pi, het Node-Red-script te importeren en de code voor de Arduino te uploaden.

Stap 2: Showcase van controle

Image
Image

Stap 3: Lijst met onderdelen/software gebruikt in het project

We hebben de volgende technologie gebruikt om de kas te maken:

  • Arduino
  • Raspberry Pi
  • Knooppunt-Rood
  • Python
  • PHPMijnAdmin

Stap 4: I/0-lijst

Schakelschema
Schakelschema

Stap 5: Bedradingsschema

Stap 6: De Arduino-code

De Arduino-code werkt door de gegevens, gemeten door de sensoren, af te drukken naar de seriële verbinding waar ze door de Raspberry Pi worden gelezen en naar de database worden overgebracht.

De Arduino heeft ook enkele digitale ingangspinnen die zijn aangesloten op de Raspberry Pi die de Arduino leest en als een van de drie HOOG wordt, verandert het profiel vanwege een IF-statement.

We hebben ook de code geüpgraded om Millis te gebruiken in plaats van vertraging, waardoor de knoppen en de rest van de code de hele tijd kunnen worden gelezen in plaats van een interval van de oude vertraging.

Stap 7: Raspberry Pi 3 B+

Raspberry Pi 3 B+
Raspberry Pi 3 B+

We gebruikten een Raspberry Pi 3 B+ om onze Arduino te verbinden met internet en een MySQL-database. Dit maakte het voor ons mogelijk om data van onze sensoren op te slaan en een visuele interface te maken voor de eindgebruiker. Voor de gebruikersinterface hebben we Node-Red gebruikt met het Dashboard-palet.

Maar voordat we onze sensorgegevens op Node-Red konden laten zien, hadden we een manier nodig om de gegevens te uploaden naar een MySQL-database, en daarvoor maakten we een Python-script dat op onze Raspberry Pi zou draaien.

Stap 8: Python

Python
Python

Het Python-script wordt gebruikt voor het ontvangen van gegevens van de seriële communicatie die van de Arduino komt. Het script stuurt de gegevens vervolgens naar een MySQL-database.

We gebruikten twee bibliotheken, pyserial en mysqlclient.

Dus de eerste stap zou zijn om deze twee bibliotheken te downloaden:

  1. PySerial
  2. MijnSQL-client

PySerial wordt gebruikt voor het verzamelen van gegevens van de Arduino via seriële communicatie.

apparaat = '/dev/ttyUSB0'

arduino = serieel. Serial(apparaat, 9600)

De eerste regel wordt gebruikt voor het definiëren van onze COM-poort. Op de Raspberry Pi is het /dev/ttyUSB0, dat we gebruiken voor de Arduino. De tweede regel is voor het openen van de seriële poort naar de Arduino. We definiëren alleen welke COM-poort en met welke snelheid de verbinding draait.

De rest van de code wordt uitgevoerd in een while-lus.

Vervolgens gebruiken we meerdere Try and Except-blokken. Eerst probeert de code binnen het Try-blok uit te voeren, als dat niet lukt, wordt het Except-blok uitgevoerd. Maar als het Try-blok goed werkt, wordt het Except-blok niet uitgevoerd, maar alleen de rest van de code.

Dus binnen de Try-blokken hebben we code die de seriële communicatie leest en vervolgens naar onze MySQL-database stuurt.

hygrolist = arduino.readlines(1)

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

De bovenstaande code is dus voor het lezen van lijnen in de seriële communicatie. Het nummer aan het einde van de code definieert de regel die in het serienummer is gelezen. Dus deze lijnen worden gecategoriseerd in verschillende variabelen.

Wanneer gegevens van de Arduino worden ontvangen, hebben we de mysqlclient-module gebruikt om de gegevens naar onze MySQL-server te sturen.

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

Deze regel is om verbinding te maken met onze MySQL-database. Het specificeert de server, gebruikersnaam, wachtwoord en met welke database het verbinding moet maken binnen de server. Hier moet u de verbinding met uw MySQL DB specificeren.

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

Dus hier nemen we onze DB-verbinding en maken een SQL-query. De query zegt dat waarden moeten worden ingevoegd in de tabel "TempHumid" en vervolgens in de kolommen "temp", "humid" en "hygro". Het laatste deel "(%s, %s, %s)" is tekenreeksopmaak en wordt gebruikt om de database een formaat te geven dat het kan lezen.

En al deze actie wordt in een while-lus geplaatst, zodat we steeds data naar de MySQL-server sturen.

Als je alle code wilt zien, download dan het python-script (TempHumid.py).

Stap 9: MySQL

MySQL
MySQL
MySQL
MySQL

Voor de MySQL-server hebben we gebruik gemaakt van een gratis service op www.freemysqlhosting.net. We hadden lokaal een server op de Raspberry Pi kunnen maken, maar we gingen met de gratis service om het volledig verbonden te maken met de cloud/internet.

Om toegang te krijgen tot uw MySQL, moet u naar phpmyadmin.co gaan en inloggen met de inloggegevens van uw freemysqlhosting-account.

Als je binnen bent, moet je een tabel maken met de naam "TempHumid", binnen deze tabel moet je 4 kolommen maken met de naam "ID", "temp", "humid" en "hygro". In de eerste kolom (ID) moet u het vakje A_I (Auto Increment) aanvinken. Dit is zo dat de ID-kolom elke dataset een ID geeft. Alle volgende kolommen moeten worden ingesteld als een INT (integer) en de standaardwaarde instellen op NULL.

Stap 10: Knooppunt-Rood

Knooppunt-Rood
Knooppunt-Rood
Knooppunt-Rood
Knooppunt-Rood
Knooppunt-Rood
Knooppunt-Rood

In ons project hebben we Node-Red gebruikt voor het maken van een grafische interface. Node-Red draait op de Raspberry Pi en verzamelt gegevens uit onze MySQL-database en toont deze gegevens met donutvormige meters en grafische grafieken, zodat de eindgebruiker de gegevens kan controleren. Het slimme van Node-Red is dat het op elk apparaat kan worden bekeken, wat betekent dat de site wordt aangepast aan het apparaat dat de inhoud bekijkt.

Om onze Node-Red programmering te installeren, kijk naar Stap 1 en download het document genaamd "Node-Red.docx". Kopieer en plak vervolgens de tekst in Node-Red via de importfunctie in de rechterbovenhoek.

Wijzig daarna de DB-instellingen voor uw MySQL DB.

Aanbevolen: