Introduction: Hydroponics

About: Crazy about robotics and technology......

Hydroponics is a type of soil less agriculture. Soil looses its nutrients and fertility with time, so to avoid that we can use Hydroponics. Plant growth and nourishment can be improved and control too. Plant which can grow only during a specific time of the year and be grown throughout the year. We can also monitor the growth of the plant, nutrient level of the soil, moisture contained in the soil and the amount of light received.

This project is a model of the actual system. Here we are replacing soil with cocoa powder. We can control the moisture and nutrients contain of the cocoa powder easily with respect to normal soil. In this project we are controlling only three criteria for plant growth i.e. moisture, light and temperature. For our model we are using the specification of a lettuce plant

  • Temperature: 25 to 30 degree Celsius.
  • Humidity: 50% to 80%.
  • Light intensity: 250 photons per sec.

Step 1: Light Control

For our model we are using an array of 3mm LED connect in series and parallel. We have used 16 LEDs 8 red LEDs and 8 blue LEDs. An array of 4 LEDs in series requires 12v power supply. So we are using an external power supply of 12v. To control the LEDs with help of Arduino we are using an optocoupler IC 4N35. For the information of the light intensity we are using light sensor with LDR. For better performance we can mount photodiode sensor. We have converted the reading from the light sensors into photons per sec using the code in Arduino.

Step 2: Temperature Control

Plants require a suitable temperature for their growth. So we are controlling the temperature of the model with the help of two fans and one incandescent bulb.

For sensing the temperature of the surrounding we are using IC LM35. The temperature is sensed and the data in given to Arduino. When temperature is above the required value we need to cool down the surrounding, so a cooling fan is switched ON. When temperature is below the required value we need to increase the surrounding temperature, so a heating fan plus an incandescent bulb is switched ON. The bulb is kept outside in a separate box so its light intensity doesn't effect our light sensor. The bulb heats the box and heating fan throws the hot air inside.

Both the fans are controlled using motor drive and the incandescent bulb is controlled with help of a relay.

Step 3: Humidity Control

The cocoa powder should contain proper amount of water particles in it for plant to perform photosynthesis. For sensing the humidity of the soil we are using DHT11 sensor. This sensor can sense both temperature and humidity, but we have used it for humidity sensing only.

To increase the water content in the cocoa powder, we have connected the water pump with a pipe and punched some holes in the pipe. (concept of dripping irrigation).

Step 4: Code and Circuit Schematics


int pinDHT11 = 41; int coolingFan=50; int heatingFan=48; int heater=3; int LEDrow1=25; int LEDrow2=27; int LEDrow3=29; int LEDrow4=31; int pump=31;

SimpleDHT11 dht11;

void setup(){ Serial.begin(115200); pinMode(coolingFan,OUTPUT); pinMode(heatingFan,OUTPUT); pinMode(heater,OUTPUT); pinMode(LEDrow1,OUTPUT); pinMode(LEDrow2,OUTPUT); pinMode(LEDrow3,OUTPUT); pinMode(LEDrow4,OUTPUT); pinMode(pump,OUTPUT); }

void loop(){ temperature(); light(); humidity(); }

void temperature(){ int value= analogRead(A10); float volts=(value/1024.0)*5.0; float temp= volts*100.0; Serial.print("temp="); Serial.println(temp); delay(1000); if(temp<25){ digitalWrite(heater,LOW); digitalWrite(heatingFan,HIGH); } else{ digitalWrite(heater,HIGH); digitalWrite(heatingFan,LOW); } if(temp>30){ digitalWrite(coolingFan,HIGH); } else{ digitalWrite(coolingFan,LOW); } }

void light(){ float ldrdata=analogRead(A8); float resistorVolt=(1024-ldrdata)/1024.0*5.0; float ldrVolt=5.0-resistorVolt; float ldrResistance= ldrVolt/resistorVolt*5000.0; float lux = (12518931)*(pow(ldrResistance,-1.405)); float photons= lux*0.019; //Serial.println(photons); delay(1000);

if(photons<50){ digitalWrite(LEDrow1,HIGH); digitalWrite(LEDrow2,HIGH); digitalWrite(LEDrow3,HIGH); digitalWrite(LEDrow1,HIGH); } if(photons>100){ digitalWrite(LEDrow1,LOW); digitalWrite(LEDrow2,LOW); digitalWrite(LEDrow3,LOW); digitalWrite(LEDrow4,LOW); } }

void humidity() {

// start working... //Serial.println("=================================");

//Serial.println("Sample DHT11...");

// read without samples.

byte temperature = 0;

byte humidity = 0;

int err = SimpleDHTErrSuccess;

if ((err =, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {

//Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);



int humid=(int)humidity;

//Serial.print("Sample OK: "); // Serial.print(humid); Serial.println(" H"); // DHT11 sampling rate is 1HZ. delay(2000);

if(humid<85){ digitalWrite(pump,HIGH); digitalWrite(coolingFan,LOW); } if(humid>94){ digitalWrite(coolingFan,HIGH); digitalWrite(pump,LOW); } }

Arduino Contest 2017

Participated in the
Arduino Contest 2017