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.



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.






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:

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);
digitalWrite(12, LOW);

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

//slow your roll – I mean… slow down the code a little





Light With Capacitive Touch

I decided to work on revising the light from earlier this semester. I wanted to incorporate what I learned from writing about the Captouch sensor into this project.

I first began wiring the Cap Sense sensor by following Adafruit’s examples. This provided a good frame work to then expand upon.

I really struggled with adapting the code to reading a byte of information, which Tom Igoe helped me think through. Even though I had it coded, it would not print the sensor values in the Serial Monitor. 

I originally wanted to use NeoPixels, but there seemed to be some conflict with that library and the Cap1188 library. After discussing with a few of my peers, they had similar experiences eith dealling with both libraries, most notably with the Rotaty Encoder. 

PComp – Analog and Digital Inputs and Outputs

I wanted to take another stab at developing simple device using a photocell, a servo and some simple prototype materials found in the Lab. My concept was a expandable umbrella that opened when the photocell detected light.

I then worked on the arduino code to make sure everything was reading and writing correctly. Once that was in proper working order, I began to create the umbrella..

I thought I had thought of most of the major potential functional issues at the beginning. Only when I started to build the actual umbrella components, which were no more than paper folded into chinese fans, did i know I was not thinking about the axis of rotation properly. 
In theory and in code the concept works. I will have to revsisit the physical “device” next week, hopefully being able to incorporate P5 into the concept as well, with a web interface.

Credit to Druv in the workshop and Joe Mango for lending me their time and energy to helping me get the concept to where it is currently.