-Overview
This is a device that helps me taking care of my plant especially when I’m not at home.
-Process
Earlier in the process I had several ideas like detecting the pressure on my feet so it could help me walking more ‘correctly’ or have something reminding me for not look at the computer screen for too long and later I realized assistive device is to help me but not necessary involving with my body. After ‘observe’ my daily life, one thing I realize I’m doing bad is taking care of my plant.
I have idea that build a automatic watering machine initially, but many people have done similiar thing and I’ll need something that suits my need particularly. My plant is always sitting on my window sill, it’s getting some sunlight through window but not water, so I had the idea that possibly could help it get some rain water without me watering it.
-Discussion
I get many helpful feedbacks from crit.
“Why not have 2 moisture sensors, one to sense soil moisture and one to sense rain which could automate the machine?”
I really like this idea and this would free me from checking the weather and push the keypad. Sensitiveness of moisture sensor to rain drops need to be tested. And also there might be some restrictions applied to it such as, shut down during night because it might make noise etc. The other general concern about this device is how practical it is in reality since windows are usually closed during winter.
“I think the machanic design can be modified to tailor the behind window need so that you can still close the window and e.t.c”.
I don’t have a good answer for that yet, becuase all this things needs physical connection and how that would go through the window will be a problem so probably a special kind of window would need to be designed along with it. A more practical solution to it is instead of getting rainwater, it would follow the sun and get enough light, watering part would need to be done by other way such as collecting rain water.
Generally, I’m happy with the outcome of this project I learned a lot and with this many parts of it I made them all function. One thing I would encounter from the beginning if I can start over is to the physical moving part, I always assume that moving physically thing will be easy as long as I get the motor working and I was wrong.
If I get the chance to build the other iteration I would definitely have 2 moisture sensors and I would probably design a simple protytpe for that window that would tailor the need of this machine.
Technical information
//Project: Walk the plant //Yingyang Zhou //This project is for helping me taking care of my plant by telling me soil moisture and get rainwater as the time I set. It has 3 main part: soil moisture sensor, keypad and stepper motor. //soil mositure int greenLEDPin = 9; // healthy status int redLEDPin = 10; // dry status int val = 0; int soilPin = A0; int soilPower = 8;// using analogue pin instead of 5 volts to prevent corrosion //keypad #include <Keypad.h> const byte ROWS = 4; const byte COLS = 4; char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[ROWS] = {7, 6, 5, 4}; byte colPins[COLS] = {3, 2, 1, 0}; Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //motor #include <AccelStepper.h> const int STEP_PIN = A2; const int DIR_PIN = A1; AccelStepper myMotor(1, STEP_PIN, DIR_PIN); int pos = 800; int place = 0; void setup() { Serial.begin(9600); pinMode(greenLEDPin, OUTPUT); pinMode(redLEDPin, OUTPUT); pinMode(soilPower, OUTPUT); digitalWrite(soilPower, LOW); myMotor.setMaxSpeed(200); myMotor.setAcceleration(800); } int readSoil(){ digitalWrite(soilPower, HIGH); delay(10); val = analogRead(soilPin); digitalWrite(soilPower, LOW); return val; } void loop() { //keypad int hourNow = 2; // because I can't get a real time clock, I'll fake the time in this project. int customKey = customKeypad.getKey(); int customKeyInt = customKey-48; //translating char to int number // Serial.print(char* monthStr(byte month)); if (customKey){ Serial.println(customKeyInt); } val= readSoil(); // Serial.print("Soil Moisture = "); Serial.println(val); if (val < 100){ digitalWrite(redLEDPin, HIGH); } else { digitalWrite(redLEDPin, LOW); digitalWrite(greenLEDPin, HIGH); } if (customKeyInt == hourNow){ place += 1000; myMotor.moveTo(place); while (myMotor.distanceToGo() != 0) { myMotor.run(); //to make sure motor is running all the time before get to the destination } } if (hourNow == customKeyInt+1){ // hourNow will ideally change to 3 in reality but because it stays at 2 in this project I'll need to press 1 on keypad to retract the plant place -= 1000; myMotor.moveTo(place); while (myMotor.distanceToGo()!=0){ myMotor.run(); } } }
Leave a Reply
You must be logged in to post a comment.