Inhoudsopgave:
- Stap 1: Benodigdheden
- Stap 2: Fritzing-schema
- Stap 3: Bereid de Raspberry Pi voor
- Stap 4: Databasemodel - MySQL
- Stap 5: Frontend: de webserver instellen
- Stap 6: Backend
- Stap 7: De LED Strip plaatsen
- Stap 8: De buizen plaatsen
- Stap 9: Het LCD plaatsen
- Stap 10: De sensoren plaatsen en de LED-strip aansluiten
- Stap 11: Bedrading van de Pi
- Stap 12: Een container voor water maken
- Stap 13: Eindresultaat
Video: Geautomatiseerde plantenpot - Little Garden - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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
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
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:
- sudo apt-get update
- 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
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
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
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
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
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
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
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
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
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:
Geautomatiseerde ECG-BME 305 Final Project Extra Credit: 7 stappen
Geautomatiseerd ECG-BME 305 Final Project Extra tegoed: een elektrocardiogram (ECG of ECG) wordt gebruikt om de elektrische signalen te meten die door een kloppend hart worden geproduceerd en het speelt een grote rol bij de diagnose en prognose van hart- en vaatziekten. Een deel van de informatie die uit een ECG wordt verkregen, omvat het ritme
Geautomatiseerde ECG: Amplificatie- en filtersimulaties met LTspice: 5 stappen
Geautomatiseerde ECG: amplificatie en filtersimulaties met LTspice: dit is de afbeelding van het uiteindelijke apparaat dat u gaat bouwen en een zeer diepgaande discussie over elk onderdeel. Beschrijft ook de berekeningen voor elke fase. Afbeelding toont blokschema voor dit apparaatMethoden en materialen: Het doel van dit pro
Geautomatiseerde ECG-circuitsimulator: 4 stappen
Geautomatiseerde ECG Circuit Simulator: Een elektrocardiogram (ECG) is een krachtige techniek die wordt gebruikt om de elektrische activiteit van het hart van een patiënt te meten. De unieke vorm van deze elektrische potentialen verschilt afhankelijk van de locatie van de opname-elektroden en is gebruikt om veel
Geautomatiseerde modelspoorbaan met twee treinen (V2.0) - Arduino gebaseerd: 15 stappen (met afbeeldingen)
Geautomatiseerde modelspoorbaan met twee treinen (V2.0) | Gebaseerd op Arduino: het automatiseren van modelbaanlay-outs met behulp van Arduino-microcontrollers is een geweldige manier om microcontrollers, programmeren en modelspoorbanen samen te voegen tot één hobby. Er zijn een heleboel projecten beschikbaar over het autonoom laten rijden van een trein op een modelspoorbaan
Geautomatiseerde modeltreinlay-out (versie 1.0): 12 stappen
Geautomatiseerde modeltreinlay-out (versie 1.0): modeltreinen zijn altijd leuk om te hebben en te rijden. Maar om ze handmatig te bedienen lijkt soms een beetje saai. Dus in deze instructable laat ik je zien hoe je je modelspoorbaan kunt automatiseren, zodat je achterover kunt leunen en ontspannen terwijl je naar je