Solar Powered Self Watering Plant

For our solar project, Dimos and I wanted to create a ‘self-watering plant’ system after being inspired by a few such as this and this. We wanted to take these ideas a step further. We wanted our system to be completely solar powered, thus being an eco-friendly fixture on the domestic plant ecosystem.

 

Materials Needed

  • An enclosure (1)
  • PC Board (1)
  • 5VDC SPDT micro relay (1) **
  • Solar Panel (1)
  • Lithium-Ion Battery (1)
  • Toggle switch (1)
  • 10K resistor (1)
  • Size M coaxial DC power plug
  • Red and black 22AWG wire
  • 12AWG black wire
  • Electric water pump (1)
  • Water storage container w/ lid (1)
  • 8-32 x 2.5″ nuts and bolts (2)
  • 4-40 x 1″ nuts and bolts (8)
  • 4-40 x 3/8″ nut and bolt (1)
  • 1/4″ spacers (4)
  • Wire nut (1)
  • 3′ – 5′ plastic tubing (2)
  • #8 Terminal Ring (1)
  • House plant to water (1)

 

Making Our Own Water Pump

We wanted to be as DIY with this project, so we decided to create our own water pump. This did not turn out as well as we had hoped.

This did not work as the enclosure did not provide enough suction for the water to be drawn in from our reservoir. We then bought a small water pump from Tinkersphere.

 

Battery

We used a 3.7V 650mAh battery that was able to produce the power we needed to power the water pump long enough for the water to be drawn into the plant’s soil.

Sensors

​​​​

 

 

Code

This is the code we used for the Arduino. It was inspired by Randolfo’s version of the code.

 

// Analog input pin that the soil moisture sensor is attached to
const int analogInPin = A1;

// value read from the soil moisture sensor
int sensorValue = 0;

// if the readings from the soil sensor drop below this number, then turn on the pump
int dryValue = 700

void setup() {

pinMode(12, OUTPUT);

// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);

//Turns on the water pump if the soil is too dry
//Increasing the delay will increase the amount of water pumped
if(sensorValue < dryValue){
digitalWrite(12, HIGH);
delay(10000);
digitalWrite(12, LOW);
}

// print the sensor to the serial monitor:
Serial.print(“sensor = ” );
Serial.println(sensorValue);

//slow your roll – I mean… slow down the code a little
delay(100);
}