Inhoudsopgave:
- Stap 1: Installatiehandleiding
- Stap 2: Showcase van controle
- Stap 3: Lijst met onderdelen/software gebruikt in het project
- Stap 4: I/0-lijst
- Stap 5: Bedradingsschema
- Stap 6: De Arduino-code
- Stap 7: Raspberry Pi 3 B+
- Stap 8: Python
- Stap 9: MySQL
- Stap 10: Knooppunt-Rood
Video: UCL - IIOT Kas - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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
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
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
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+
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
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:
- PySerial
- 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
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
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:
MAG (Miniatuur Automatische Kas): 9 Stappen
MAG (Miniature Automatic Greenhouse): Mijn moeder heeft het meestal behoorlijk druk. Dus ik wilde haar helpen door haar kassen te automatiseren. Op deze manier kan ze wat tijd besparen omdat ze de planten geen water hoeft te geven. Dit kan ik bereiken met MAG (Miniature Automatic Garden). Als in de
Een kas automatiseren met LoRa! (Deel 1) -- Sensoren (temperatuur, vochtigheid, bodemvocht): 5 stappen
Een kas automatiseren met LoRa! (Deel 1) || Sensoren (Temperatuur, Vochtigheid, Bodemvocht): In dit project laat ik zien hoe ik een kas heb geautomatiseerd. Dat betekent dat ik je laat zien hoe ik de kas heb gebouwd en hoe ik de stroom- en automatiseringselektronica heb aangesloten. Ik zal je ook laten zien hoe je een Arduino-bord programmeert dat L
Slimme kas: 12 stappen
Smart Greenhouse: Heeft u wel eens het probleem gehad dat het te warm was in uw kas, waardoor al uw planten dood gingen, omdat u vergeten bent de ventilatieroosters te openen? Zoek dan niet verder, de slimme kas is de oplossing voor dit probleem. De volgende stap leidt u door hoe bouw je
UCL - Embedded - Pick and Place: 4 stappen
UCL - Embedded - Pick and Place: deze instructable gaat over hoe een 2D pick-and-place-eenheid wordt gemaakt en hoe deze te coderen
Smart-kas: 9 stappen
Smart-Greenhouse: Hallo markers, Wij zijn een groep van drie studenten en dit project maakt deel uit van het vak genaamd Creative Electronics, een Beng Electronic Engineering 4e jaars module aan de Universiteit van Malaga, School of Telecomunication (http://etsit.uma .es/).Deze pro