Introduction: DIY Hydrofarm Test Setup

In this instructable, we'll show you how to create your own hydrofarming test setup with basic materials and tools.

This is a setup where you can test 4 variables which have an affect on the growth of the plants:

-light intensity

-water level

-root support material

-plants being covered from external light or not

This is a group project made together with Robin Vanoverbeke and Gregory Van der Donckt


Wood panels

Wood screws

Waterproof boxes (for example cheap storage bins)

PVC pipes, 2 angle connectors and 2 end caps

PVC glue

Water pump

Hoses for the pump

Various materials for root support

Plastic sheet for covering the root support

Soldering supplies



Light sensor (GL5528LDR)

10K ohm resist


Something to cut the wood panels (table saw, circular saw,...)



Step 1: The Frame

The frame is very simple, being made of a few wood panels and strips.

The side panels as seen in the render are 850x300mm, top and bottom panels are 500x300mm and support brackets are 15x300mm strips, all in at least 12mm thick water-resistant wood. These dimensions will vary based on the size of the boxes you can find.

First we need to make the bottom panel which has the linear guide for the lamp, simply put 2 strips of wood in the middle of the bottom panel, slightly over 100mm apart, then cover that with another strip of wood. You can use screws or water resistant glue for this.

To make the complete frame, simply screw the side panels onto the top and bottom panels, then screw on the support brackets at 140mm, 270mm, 550mm and 830mm height (measured from the bottom of the frame to the top of each support). These support brackets will hold the boxes at the right height and allow them to be slid in and out from the back for easy removal. This gives the plants enough room to grow while not unnecessarily using space for the boxes with no plants.

Our design of course looks slightly different from the render, but is made in the same way.

Step 2: Lamp Guide

The lamp guide is the easiest part of the system, for this you will need:

-A wood strip 800x100mm

-A small wood piece, roughly 100x50mm or smaller

-A 100x100mm or smaller wood piece with a 50mm hole in the middle (for a lamp with diameter of 50mm)

To make this, the 2 smaller pieces simply need to be attached at either end of the long strip, with screws or glue.

Again, because the system we made is a bit different, we used a 3D printed part and upright wood parts but the principle is the same.

Step 3: The Plant Boxes

These boxes are fairly simple, 3 of the 4 boxes need a 25mm hole in a corner, roughly 30mm from the sides.

In the holes of the top 2 boxes, you will need to install a PVC part.s

This part is a 60mm pipe, then a right angle connector, a 150mm pipe and an end cap.

The 150mm pipe needs about 10 or so holes for the water to flow to the box below it.

In the 3rd box, you simply need to install a 60mm pipe

in the 2 boxes with plants, the height that these pipes are installed at will determine the water level, which is one of our variables.

We also added stuffing to the top pipe to slow down the flow so we can stop running the pump for longer periods of time.

In our prototype we used an inverted T with holes on either side to spray the water more evenly, but the flow is too slow to keep spraying it far away so a single right angle with holes on the bottom will work just fine.

Step 4: Arduino: Code

This is the entire code we used, in the following steps I'll explain how to set up the hardware.

Check the entire code, some parts of text need to be replaced with values.


dht DHT;

#define DHT11_PIN 6 //*********************************************************************** int light; //***********************************************************************

void setup() { //*********************************************************************** //Pinaanduiding pinMode(2,OUTPUT); //Red led(alarm licht) pinMode(3,OUTPUT); //Rode led(alarm humidity) pinMode(4,OUTPUT); //Red led(alarm temperature) pinMode(7,OUTPUT); //Blue led(Pump activity) pinMode(8,OUTPUT); //Relays to pump pinMode(6,INPUT); //Temperature and humidity pinMode(9,INPUT_PULLUP); //Float switch(water level) //*********************************************************************** //Start monitor + explanation Serial.begin(9600); Serial.println(“Welcome to our hydrofarm monitor, here you can see the exact values of temperature, humidity and water level”); Serial.println(“De pomp wordt automatisch aangestuurd, ook hiervan komt hierin een melding”); Serial.println(“Without this monitor, you will still see the alarm LEDs and pump activity LED”); //***********************************************************************


void loop() { //*********************************************************************** //Temperature int chk = DHT.read11(DHT11_PIN); Serial.print(“Temperature = “); Serial.println(DHT.temperature);//This is the temperature in °C. if(DHT.temperature > 600)//Fill in the value at which the temperature is too high, triggering the red LED. (It's a good idea to leave some headroom) { Serial.println(“Temperature too high”); digitalWrite(4, HIGH); } if(DHT.temperature < 200)//Fill in the value at which the temperature is too low. (some headroom is a good idea) { Serial.println(“Te lage temperatuur”); digitalWrite(4, HIGH); } //*********************************************************************** //humidity Serial.print(“Humidity = “); Serial.println(DHT.humidity);////This indicates the value of the moisture sensore, and is just a value for the alarm to activate at. if(DHT.humidity > 600)/Fill in the value at which the humidity alarm should be triggered. (again, some headroom is a good idea) { Serial.println(“Humidity too high”); digitalWrite(3, HIGH); } if(DHT.humidity < 200)/Fill in the value at which the humidity is too low. (again, some headroom is a good idea) { Serial.println(“Humidity too low”); digitalWrite(3, HIGH); } //*********************************************************************** //Lightsensor //light = analogRead(A0); Serial.print(“Light intenisty= “); Serial.println(analogRead(A0)); //This indicates the value of the sensor and is not a value in lux, but merely a value at which to activate the alarm. if(analogRead(A0) > 600)/Fill in the value at which the light intensity is too high. (again, some headroom is a good idea) { Serial.println(“Too much light”); digitalWrite(2, HIGH); } if(analogRead(A0) < 200)//Fill in the value at which the alarm should be triggered when the light intensity is too low. (again, some headroom is a good idea, especially here, due to ambient light.) { Serial.println(“Not enought light”); digitalWrite(2, HIGH); }

Step 5: Arduino: Light Sensor

For this you'll need the breadboard, GL5528LDR sensor and 10K ohm resistor, Explaining this in text would be too long, so I've included a link to the tutorial video we followed:

The picture above is the basic schematic

Step 6: Arduino: Temperature Sensor + Humidity Sensor

The following parts are needed:

Electrical connectors

Electrical cable

DHT11 sensor

As with the previous part, I also included the schematic and YouTube tutorial

Step 7: Arduino/electronics: Pump Control

This pump is controlled by an arduino which engages when a 3D-printed float goes below a certain level. There's also a safety against overflowing: 2 metal plates with a low voltage across them are at the top of the container so when the water level is too high the pump disengages.

An aquarium pump is ideal for this, but make sure your pump of choice can deliver enough pressure to pump the water up the entire height of the system.

Full list of components:

Electrical connectors

Electrical wire

2 small metal plates, preferrably stainless steel or aluminium

5 1.5V batteries



Here's a link to a good tutorial about relays:

Watch out: most pumps run on mains voltage, which can be deadly if used incorrectly! If you don't have the required knowledge/skill, ask someone who does!

Step 8: Arduino: Alarms


4x 220 ohm resistors

3x red LED

1 blue LED


This is

Step 9: Substrate and Root Support

The material which the plants grow in will obviously also affect the growth, which is why this is also one of our variables. For this you will need to find a few different materials which are capable of supporting root growth.

For example: we used aquarium gravel and cotton stuffing.

On top of that you'll need something to keep the plants separated, which can be plastic sheet with lasercut holes, or drilled holes if you don't have access to a lasercutter.

Step 10: Finishing Touches

To finish the whole thing off and to cover it from light we added a black cloth to the entire outside. This cloth was attched with a staple gun and zip ties, so part of it can act as a curtain.

The other finishing touch was a cover for the electronics, this was made out of cut and bent ABS, but you could make this out of wood too if you don't have the available resources.