Inhoudsopgave:

Geautomatiseerde plantenpot - Little Garden - Ajarnpa
Geautomatiseerde plantenpot - Little Garden - Ajarnpa

Video: Geautomatiseerde plantenpot - Little Garden - Ajarnpa

Video: Geautomatiseerde plantenpot - Little Garden - Ajarnpa
Video: Удивительные идеи по переработке пластиковых бутылок 2024, Juli-
Anonim
Geautomatiseerde plantenpot - Little Garden
Geautomatiseerde plantenpot - Little Garden

Ik ben een student Multimedia en Communicatietechnologie aan Howest Kortrijk. Voor onze eindopdracht moesten we een IoT-project naar eigen keuze ontwikkelen.

Toen ik rondkeek naar ideeën, besloot ik iets nuttigs te maken voor mijn moeder die dol is op het kweken van planten en begon te werken aan een geautomatiseerde plantenpot.

De belangrijkste taken voor deze geautomatiseerde plantenpot, Little Garden, zijn:

  • Meet de

    • Temperatuur
    • Lichtsterkte
    • Vochtigheid
    • Bodemvocht

Sla de metingen op in een database

Verbeter de omstandigheden voor de plantengroei als een bepaalde waarde te laag is

Laat het apparaat via een website monitoren en beheren

Niet elke stap hoeft tot het einde te worden gevolgd. Veel van wat er gebeurt, kan uw persoonlijke voorkeur zijn of kan worden verbeterd. Deze build is zo gemaakt dat onderdelen achteraf kunnen worden gerecupereerd, dus misschien wil je je iteratie anders benaderen om het permanenter te maken

Stap 1: Benodigdheden

Benodigdheden
Benodigdheden
Benodigdheden
Benodigdheden
Benodigdheden
Benodigdheden

De meeste benodigdheden voor dit project zijn niet erg moeilijk te verkrijgen, hoewel ik in mijn geval met veel gerecyclede materialen heb gewerkt. Ik moest er ook voor zorgen dat ik achteraf wat materiaal kon recupereren.

Kerncomponenten:

  • Raspberry Pi 4 model B
  • Raspberry Pi-voeding
  • Raspberry Pi T-schoenmaker
  • 16 GB micro SD-kaart
  • Breadboard voeding met 3.3V en 5V
  • Breadboard
  • 12V voeding

Sensoren:

  • DHT11: Vochtigheids- en temperatuursensor
  • BH1750: Lichtintensiteitssensor
  • Bodemvochtsensor
  • MCP3008

Actor componenten:

  • 220V Waterpomp
  • 12V ledstrip
  • Relaismodule Velleman
  • TIP 50: NPN-transistor
  • 16X2 LCD-module display
  • PCF8574a

Weerstanden:

  • 3 x 330 Ohm weerstanden
  • 1 x 5k Ohm weerstand
  • 2 x 10k Ohm weerstanden
  • 1 x 1k Ohm weerstand
  • 1 x 10k Potentio-weerstand

Materialen:

  • Geprefabriceerde kas/plantenpot
  • Aansluitdoos
  • Plastic waterfles
  • Wartels
  • Jumperdraden + gewone draad
  • Skrews
  • Soldeertin + krimpkous
  • Dubbelzijdig ducktape
  • Verf

Gereedschap:

  • Lijmpistool
  • Oefening
  • Zaagblad
  • Soldeerbout
  • Stanleymes
  • kwast

Het leuke van dit project is dat het kan worden uitgebreid of vereenvoudigd door componenten toe te voegen/te verwijderen en de code iets aan te passen. Door bijvoorbeeld de 220V-pomp te vervangen door een 12V-pomp, kunt u een voedingsadapter uit het apparaat verwijderen.

Stap 2: Fritzing-schema

Fritsing schema
Fritsing schema
Fritsing schema
Fritsing schema

Het breadboard en elektrische schema's voor het apparaat worden hierboven weergegeven. Hier kunt u zien hoe alle componenten met elkaar zijn verbonden.

Een algemene uitleg over hoe de componenten werken:

  • De DHT11 meet de luchtvochtigheid in % en de temperatuur in °C. De communicatie ermee wordt afgehandeld door een I2C bu.
  • De BH1750 meet de lichtintensiteit in lux. De communicatie wordt afgehandeld door een I2C-bus
  • De bodemvochtsensor creëert een digitaal signaal dat door de MCP3008 wordt omgezet naar een leesbaar digitaal signaal voor de Raspberry Pi
  • De 16x2 LCD-module geeft achter elkaar de IP-adressen van de Pi weer. Het is verbonden met een PCF8574a die een signaal ontvangt van de Raspberry Pi die het zal omzetten in een aantal signalen voor de bitpinnen van het display. De E- en RS-pinnen van het LCD-scherm zijn rechtstreeks verbonden met de Pi. De potentioweerstand bepaalt de helderheid van het scherm.
  • De waterpomp is aangesloten op een relais dat ertussen zit en zijn 220V voeding/stopcontact. De Raspberry Pi kan een signaal naar het relais sturen om het elektrische circuit te sluiten en de pomp aan te zetten.
  • De ledstrip wordt aangesloten op de 12V-voeding en de TIP 50 (NPN-transistor) die de elektrische stroom omschakelt. De weerstand van 1k Ohm wordt gebruikt om het opgenomen vermogen van de Raspberry Pi te beperken, anders zou hij extra krokant gebakken worden.

Stap 3: Bereid de Raspberry Pi voor

Bereid de Raspberry Pi voor
Bereid de Raspberry Pi voor

Als je er nog geen hebt, moet je een van de Raspberry Pi OS-afbeeldingen op de SD-kaart plaatsen. Ik raad het gebruik van Lite niet aan, omdat dit in het begin problemen veroorzaakte. Daarna moet je ervoor zorgen dat je Pi up-to-date is door de volgende commando's te gebruiken terwijl de Pi is verbonden met internet:

  1. sudo apt-get update
  2. sudo apt-get upgrade

Waarna u de pakketten kunt inschakelen of installeren om het project te laten werken, hetzij via raspi-config of via opdrachten.

  • SPI
  • I2C
  • MySQL: volgende stap
  • SocketIO: pip install flask-socketio

Na de installatie kunt u de benodigde bestanden toevoegen die zijn geschreven in html, CSS, Javascript en Python. Al mijn code is te vinden op mijn github-repository.

Stap 4: Databasemodel - MySQL

Databasemodel - MySQL
Databasemodel - MySQL

Hierboven ziet u het ERD-diagram dat wordt gehost via MariaDB. Ik raad aan om deze MariaDB-installatiegids te volgen, niet alleen om MariaDB te installeren, maar ook om ervoor te zorgen dat je Pi wordt beschermd.

Voor mensen die het willen begrijpen, werkt de database als volgt:

De metingen en actuatorschakelaars worden als rijen opgeslagen in de Metingen-tabel.

  • metingId = ID van de meting/toggle-rij
  • deviceId = ID van het apparaat dat verantwoordelijk is voor deze rij in de tabel
  • waarde = waarde van de sensormeting of actuator toggle

    • sensor: waarde van de meting in de overeenkomstige eenheden
    • aandrijvingen: 0 = UIT en 1 = AAN
  • commentaar = opmerkingen die worden gebruikt om extra informatie toe te voegen, zoals fouten
  • datum = de datum en tijd waarop de meting/wissel heeft plaatsgevonden

De instellingen voor het apparaat worden opgeslagen in Instellingen.

  • settingId = ID van deze rij en de instellingswaarde
  • deviceID = ID van het corresponderende apparaat/sensor
  • waarde = waarde van de instelling
  • type = type van de instelling, is dit maximum of minimum?

Last but not least bevat de tabel Apparaten informatie over de sensoren en actuatoren.

  • deviceId = ID van het apparaat in deze tabel
  • naam = naam van het apparaat/component
  • merk = merk
  • prijs = prijs van het onderdeel
  • beschrijving = samenvatting van het onderdeel
  • eenheid = eenheid voor de gemeten waarden
  • typeDevice = geeft aan of het onderdeel een sensor of actuator is

Stap 5: Frontend: de webserver instellen

Frontend: de webserver instellen
Frontend: de webserver instellen

De Pi vereist dat je de Apache-webserver installeert om de webserver voor dit apparaat te laten draaien. Dit kan met het volgende commando:

sudo apt-get install apache2.

Zodra dit is gebeurd, kunt u naar de map navigeren: /var/www/html. Hier moet je alle code van de frontend plaatsen. Daarna kunt u toegang krijgen tot de website door naar het IP-adres te bladeren.

Stap 6: Backend

Om de backend uit te voeren, moet u het app.py-bestand handmatig uitvoeren of door er een service voor te maken op de Pi, zodat het automatisch opstart.

Zoals je misschien opmerkt, zijn er nogal wat bestanden. Ik heb de code zoveel mogelijk gescheiden om een duidelijk overzicht en organisatie van de code te hebben.

Een korte uitleg:

app.py: Het hoofdbestand waarin de database, hardwarecode en backend-code worden samengevoegd

config.py: Het configuratiebestand voor de databaseRepositories

Repositories: voor toegang tot de data repository

  • Helper

    • devices_id: klassen om de apparaatinformatie in de database te helpen identificeren
    • lcd: om de PCF en LCD uit te voeren
    • Actuatoren: klassen voor het aansturen van de actuatoren
    • Sensoren: klassen voor het uitvoeren van de sensoren

Stap 7: De LED Strip plaatsen

De LED Strip plaatsen
De LED Strip plaatsen

Ik heb een stuk van de ledstrip afgeknipt en op de bovenzijde van de kaskast geplakt. De strip die ik gebruikte kon op meerdere posities worden doorgeknipt en opnieuw worden aangesloten, zodat je meerdere strips kon plaatsen en ze daarna weer met draden kon verbinden, waardoor er meer ruimte verlicht kon worden.

Stap 8: De buizen plaatsen

Het plaatsen van de buizen
Het plaatsen van de buizen

De buizen konden op verschillende manieren worden geplaatst, maar in mijn geval heb ik ze aan de zijkant van de bodem bevestigd, zo ver mogelijk van de andere elektronica verwijderd en het water gewoon in het vuil laten stromen.

Stap 9: Het LCD plaatsen

Het LCD-scherm plaatsen
Het LCD-scherm plaatsen

Ik sneed met een zaagblad een geheel in het deksel van de aansluitdoos, waardoor een opening ontstond die groot genoeg was voor het scherm om er doorheen te komen, maar klein genoeg zodat de print er achter zou blijven. Daarna werd het met scheefjes op het deksel bevestigd.

Op het LCD-scherm worden de IP-adressen van de Raspberry Pi weergegeven, zodat u weet met welk adres u naar de website kunt surfen.

Stap 10: De sensoren plaatsen en de LED-strip aansluiten

Sensoren plaatsen en LED Strip aansluiten
Sensoren plaatsen en LED Strip aansluiten
Sensoren plaatsen en LED Strip aansluiten
Sensoren plaatsen en LED Strip aansluiten

Met behulp van de fritzing-schema's heb ik verbindingen tussen de draden gesoldeerd en de weerstanden in de draden geplaatst, met behulp van krimpkousen om ze te isoleren.

In de zijkanten van het deksel en de bodem van de kas werden gaten gesneden om de wartels te bevestigen, waar ik de draden voor de sensoren en led-strip doorheen trok.

Ik heb de draden gegroepeerd op functie. De spanning van de draden en krimpkousen zelf hield de sensoren overeind. Voor de DHT11 hoefde ik alleen maar lijm op de draden te gebruiken omdat dit verder uitbreidde.

Stap 11: Bedrading van de Pi

De bedrading aansluiten
De bedrading aansluiten
De bedrading aansluiten
De bedrading aansluiten
De bedrading aansluiten
De bedrading aansluiten

Ik heb gaten in de zijkant van de aansluitdoos gesneden zodat de draden er later doorheen kunnen.

Daarna heb ik het breadboard (met de T-cobbler, PCF8574a, MCP3008, instelbare weerstand en TIP50), relais en Raspberry Pi op de bodem van de aansluitdoos geplaatst, die met dubbelzijdig ducktape was afgeplakt. De voeding paste niet op het breadboard, dus ik moest het aan de kant leggen en jumperdraden gebruiken om het op het breadboard aan te sluiten.

Ten slotte trok ik de adapter-, sensor- en actuatordraden door de gaten die de draden met het breadboard, Raspberry Pi en andere componenten verbond. De draad van de pomp was opengesneden zodat ik de uiteinden in het relais kon plaatsen zodat het als schakelaar kon worden gebruikt.

Stap 12: Een container voor water maken

Een container voor water maken
Een container voor water maken

Ik heb een waterreservoir gemaakt van een plastic waterfles van 1 liter door de bovenkant met een stanleymes af te snijden en te schilderen voor een beter uiterlijk. De waterpomp werd toen binnen geplaatst. Vanwege de regel van communicerende vaten, kan het water mogelijk vanzelf door de leidingen stromen, maar door de buis omhoog te houden, wordt het probleem opgelost.

Stap 13: Eindresultaat

Eindresultaat
Eindresultaat
Eindresultaat
Eindresultaat

Het moment waarop je hebt gewacht. Nu kunt u het vuil en de zaden in de kasdoos plaatsen en het apparaat het over laten nemen. U kunt de status van het apparaat vanaf de website volgen en de optimale waarden instellen voor de verlichting en bodemgesteldheid.

Ik raad aan om de grond eerst handmatig water te geven, omdat wat vuil in het begin behoorlijk droog kan zijn. Sommige pompen lijken ook vrij langzaam water te geven, maar je moet wel heel voorzichtig zijn omdat het sneller vol raakt dan je zou verwachten. Een verzadiging van meer dan 80% kan de grond erg drassig maken. En zorg ervoor dat de bodemvochtsensor diep genoeg zit.

Aanbevolen: