De Aandacht-vraag-inator
by MaxAndreKuilman in Circuits > Arduino
165 Views, 0 Favorites, 0 Comments
De Aandacht-vraag-inator
Het probleem wat ik met mijn Arduino op wilde lossen is het probleem dat ik mijn plant steeds vergeet water te geven en in de schaduw te zetten als de zon te fel schijnt. Ik heb eerder nog nooit met een Arduino (of überhaupt technische machines) gewerkt, dus het is heel veel uitproberen en experimenteren.
Voor mijn uiteindelijke ontwerp heb ik gebruikt:
Arduino Uno Rev3, Draden (male-male en male-female), Watersensor, Micro Servo SG90, LED lights, Weerstandjes en een LDR lichtgevoelige sensor
Concept
Mijn idee is om een apparaatje te maken dat mij er aan helpt herinneren om mijn plant te verplaatsen als de zon te hard gaat schijnen, en om het water bij te vullen zodra dat te laag wordt. De plant waar ik dit voor ga gebruiken is tijdens het ontwerpproces van de Arduino helaas overleden (2 minuten stilte). Daarom heb ik een sperzieboonplant als vervanging gebruikt :). Deze plant is niet geschikt om in direct zonlicht te staan en heeft veel water nodig. Wat ik dus nodig heb is een soort "zonnescherm" en een reminder om het water bij te vullen. (De sperzieboonplant heeft alleen een stuk minder water nodig dan de originele moerasplant waar ik dit ontwerp voor wilde maken, dus de watersensor is gekalibreerd op de moerasplant en zou mijn sperzieboonplant verdrinken als ik deze machine echt daar voor zou gebruiken).
Iteraties
In mijn eerste ontwerp wilde ik mijn plant op wieltjes zetten om deze naar een schaduw en een waterplek te kunnen rijden. Het was een grappig idee maar het zou te lastig worden om precieze afstanden af te leggen en te zorgen dat de water-schaduw- en plant allemaal met elkaar verbonden zijn (dat zou draadloos moeten of met hele lange onhandige draden). Om preciezer de locatie te kunnen bepalen dacht ik om misschien een kabelbaan of loopband te maken. Ik kon helaas geen goed bruikbare onderdelen vinden online die precies werkten zoals ik wilde. Daarnaast wilde ik ook wel zelf voor mijn planten blijven zorgen in plaats van de verzorging helemaal automatiseren. Daarom heb ik er voor gekozen om te werken met indicatoren voor het water level; lampjes die mij helpen herinneren om mijn plant water te geven als het water level te laag dreigt te staan.
Elektronisch Schema
Dit is het uiteindelijke schema dat ik gebruikt heb. Aangezien de website die ik gebruikte geen watersensor had (of ik kon die gewoon niet vinden) heb ik een temperatuursensor gebruikt; die heeft namelijk even veel aansluitingen. De temperatuursensor moet dus een watersensor voorstellen.
Code
#include <Servo.h> #define LED_PIN1 12 //groen #define LED_PIN2 3 //geel #define LED_PIN3 11 //rood #define POWER_PIN 7 #define SIGNAL_PIN A5 #define THRESHOLD 300 #define SENSOR_MIN 0 #define SENSOR_MAX 521 int water_value = 0; int water_level = 0; int level = 0; Servo servo; void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); digitalWrite(POWER_PIN, LOW); digitalWrite(LED_PIN1, LOW); pinMode(LED_PIN1, OUTPUT); digitalWrite(LED_PIN2, LOW); pinMode(LED_PIN2, OUTPUT); digitalWrite(LED_PIN3, LOW); pinMode(LED_PIN3, OUTPUT); servo.attach(9); pinMode(A0, INPUT); } void loop() { int light_value = analogRead(A0); Serial.println("Analog reading = "); Serial.print(light_value); if (light_value > 500) { Serial.println ("Shaduw"); servo.write(0); } if (light_value <=500) { Serial.println ("Zonlicht :)"); servo.write(90); } digitalWrite(POWER_PIN, HIGH); delay(10); water_value = analogRead(SIGNAL_PIN); digitalWrite(POWER_PIN, LOW); water_level = map(water_value, SENSOR_MIN, SENSOR_MAX, 0, 4); Serial.println("Water level: "); Serial.print(water_level); if (water_value >= 130) { digitalWrite(LED_PIN1, HIGH); digitalWrite(LED_PIN2, LOW); digitalWrite(LED_PIN3, LOW); } else if (water_value < 130 && water_value >= 118) { digitalWrite(LED_PIN1, LOW); digitalWrite(LED_PIN2, HIGH); digitalWrite(LED_PIN3, LOW); } else if (water_value < 118) { digitalWrite(LED_PIN1, LOW); digitalWrite(LED_PIN2, LOW); digitalWrite(LED_PIN3, HIGH); } }<br>
Reflectie
Ik ben uiteindelijk redelijk tevreden met mijn project. Het werkt precies zo als het moet en ziet er ook wel grappig uit. Voor de volgende keer kan ik proberen de draadjes strakker te solderen en de afwerking wat mooier te maken. Ondanks de relatief simpele uitvoering heb ik toch enorm veel geleerd. Ik had voor dit project nog nooit iets met een Arduino gedaan en code had ik alleen maar geschreven voor een ander vak, ik had het dus nog nooit iets fysieks zien beïnvloeden. Het resultaat van mijn code in het echt kunnen zien werkte voor mij heel motiverend.
Wat ik ook voor het eerst heb gedaan tijdens dit project is solderen. Dit vond ik een stuk leuker dan ik verwacht had ondanks dat het niet in een keer goed ging.
Herkansing!
Voor de herkansing heb ik het hele uiterlijk van mijn project veranderd zodat het er strakker en georganiseerder uitziet. Daarbij heb ik er ook voor gezorgd dat de draadjes goed beschermd zijn tegen het water i.p.v. dat ze er gewoon overheen hangen.