Introduction: Automated Indoor Greenhouse

This is an indoor greenhouse which is supposed to encourage a healthy diet, by making it a lot easier to grow your own vegetables and herbs. It automatically waters the plants in it depending on their soil's moisture using moisture sensors in the soil. It measures the temperature and humidity inside and outside of the greenhouse and turns a fan on and off accordingly. It also has a motorised door that can be opened using the touchscreen. The touchscreen controls all functions of the greenhouse. There is a float gauge, so that if the water is too high, the pump will not turn on and the tray holding the plants will not overflow. This also works to ensure that when the tray is not inserted the pump will not turn on. The greenhouse is controlled by a Raspberry Pi Zero, but you might be able to get it to work using an Arduino, if you write all the code yourself. I chose a Raspberry Pi so that I could easily connect a touchscreen, and change things over ssh without needing a physical connection to the Pi.

  • The 3d CAD model was made in Fusion 360, so I have uploaded it as a .f3z and .stp file (let me know if you want me to upload it as a different format)
  • The model is mainly for reference purposes, but of course you can change it as well if you need something to be different




Step 1: Laser-cutting the Structurally Integral Parts

  • These are all made from 6mm Clear Acrylic
  • All screw-holes have to be countersunk
  • The .dxf files for laser-cutting can be found in
  • left_motor_wall and right_motor_wall need to be routed to allow a socket-head screw to sit flush (for me routing did not work, as the acrylic would melt. I ended up using the laser-cutter to engrave it just the right depth)

Step 2: Laser-cutting Roof Bending Pattern

  • You will need 4 of these
  • I cut these from some 8mm MDF, but you can use whatever you want really
  • The holes are there for putting dowels through to keep the four parts lined up, but I ended up not using them, so you will just have to see what works for you

Step 3: Laser-cutting the Panels, Door, and Roof

  • All of these parts are cut from 3mm clear acrylic
  • The panels and roof are slightly longer than they need to be, in order to allow for bending
  • The screw holes are only present on one side of the panels and roof, because you can't know the exact location after bending, so you will have to drill the rest of the holes yourself later on
  • The screw holes on the door are not cut, but also need to be drilled as their position depends on how you cut the timing belt
  • Countersink all holes (watch out that you countersink the hole from the correct side)

Step 4: Bending the Panels

  • measure and mark where the bend is supposed to go (consult the 3d model if unsure)
  • heat them using a hot wire strip heater at the line you just marked out (you could potentially use a heat gun instead, but it would make it a lot harder to get a good bend)
  • Then bend all of them at 90° (Watch out that you bend them in the correct direction)

Step 5: Bending the Roof

  • Attach the bend pattern pieces using nuts and bolts
  • Heat using hot wire strip heater
  • Bend around pattern on flat surface

Step 6: Drill Holes Into Roof

  • Use the bend patterns' holes to mark where the holes should go in the top part of the roof
  • Drill these holes with a 3mm drill bit
  • Countersink these holes

Step 7: Setting Up the Raspberry Pi

git clone
  • install pigpio
sudo apt-get install pigpio python-pigpio python3-pigpio

  • enable the pigpio daemon to be started on boot
sudo systemctl enable pigpiod

  • install GTK+3

sudo apt install python-gi python-gi-cairo python3-gi python3-gi-cairo gir1.2-gtk-3.0

  • change into greenhouse directory
cd greenhouse

  • setup autostart of greenhouse ui
mkdir /home/pi/.config/autostart 
cp greenhouse_ui.desktop /home/pi/.config/autostart/

  • reboot Pi
sudo reboot

  • When the Pi boots, the UI should automatically start and everything should work (It takes some time for the UI to load so don't worry if it doesn't show up for a minute or two)

Step 8: PCB

  • I got my PCB made at
  • To get it made you just have to upload
  • I've also included the Autodesk Eagle schematic and board, in case you want to modify it

Step 9: Populate the PCB

  • Using schematic.pdf and board.pdf as references, solder in all the components
    • All headers are male headers, except for the motor driver headers
    • For the ADC solder in a socket, then plug in the chip
    • For MAIN_GROUND_BRIDGE and MAIN_POWER_BRIDGE, just solder in a snipped of leg of a resistor or a cable to connect the two contacts.
  • The images are a little different to what your PCB will look like, because I've updated the PCB since making my greenhouse and finding a few errors.

Step 10: 3d-print Counterweights

  • 3d-print these two models
  • Mirror each in your slicer and print again

Step 11: Fill Counterweights

  • Place the counterweight body and lid on a scale
  • Fill with lead-shot until it is full or until you reach 475g
  • Repeat for second counterweight

Step 12: Belt Holders

  • Saw and drill these as seen in the 3d-model
  • I made mine from aluminium strip, but you could use basically any material
  • You will need 6 of these
  • I made mine using a jigsaw, but any saw is fine
  • You should then test that they fit using some screws and a bearing
  • I had to tap the bearings, because the thread did not go all the way through

Step 13: Bearing Rods

  • Saw 4 x 445mm rods from the 8mm polished stainless steel rods
  • Sand the edges so that a bearing can go on
  • I sawed these using a hacksaw but again any saw is fine
  • You should then test that a bearing slides well on it

Step 14: Moisture Sensors

  • Cut the 3mm stainless steel rods into 8 roughly equal pieces, where none should be longer than the height of your plant's pot
  • Cut another 4 about half the length or shorter than the others
  • I could not get through the rods with a hacksaw so I had to use a dremel, but you might be able to cut yours with a hacksaw
  • Screw in the rods as seen in the image above
  • Cut a heat-shrink tube to the correct size, wrap it around the righ-most rod, and shrink it using a heat gun
  • Now crimp a cable to have a 3x1 connector, and tin-coat the ends, now screw the ends into the terminal block as seen in the image above

Step 15: Tray

  • Laser-cut tray_main_body.dxf from 3mm clear acrylic
  • Measure where to bend
  • Heat up on hot wire strip heater
  • Bend both sides at 90°
  • Trace the inner outline of both of the main body's sides onto a piece of 6mm clear acrylic as seen in the image above
  • Saw these out (I used a scroll saw, but again any saw with a thin blade should be fine)
    • You have to put masking tape on both sides of the acrylic, so it doesn't melt
  • Glue the walls to the main body, using acrylic cement and clamps
  • Seal the tray using silicone

Step 16: Float Gauge

  • I tried to 3d-print float_gauge.stl, but it did not end up floating, so you may have to just use some foam or something to make it float
  • Paint on the side facing the reflective light gate, so that it is black in the bottom half, and white in the top half (you may need to experiment a little with the proportions of black to white, so that the water can never overflow)
  • The float gauge is in place in order to ensure that the water will not overflow, and also make sure that the pump will not turn on, when the tray is not inserted
  • Laser-cut float_gauge_base_plate.dxf
  • Cut 2 x 50mm lengths of 3mm stainless steel rod
  • Glue the base plate into the tray at a suitable distance from the reflective light gate, using acrylic cement
  • Put the rods into the baseplate
  • Put the float gauge body onto the rods

Step 17: Assemble the Control Towers

  • Laser-cut 8 of rod_holder.dxf from 6mm acrylic
  • Attach the motor to the motor wall (do not tighten the screws yet, as you will still have to move the motor)
  • Attach the belt to the front bearing using two belt holders and cable ties
  • Attach the back bearing to the belt using one belt holder
  • Insert the timing belt and bearing rods using the rod holders
  • Attach the counterweight to the back bearing (I glued a strip of felt to the side of the counterweight, so it would slide against the wall better)
  • I had to apply some oil to the bearings so they would slide better
  • Repeat for the left control tower
  • Mount the Pi onto the PCB using M3 screws and spacers (you might have to use a 3mm drill bit to widen the Pi's holes)
  • Mount the PCB onto the right control tower's bottom plate, using M3 screws from the bottom through the plate, then two nuts as spacers and another nut on top of the PCB to keep it in place

Step 18: Assembling the Roof

  • Laser-cut fan_ring.dxf and water_inlet.dxf from 6mm acrylic
  • Glue them to the roof using acrylic cement and clamps

Step 19: Prepare and Connect the Cables

  • Cut and crimp all the cables
  • The headers on the PCB line up with the headers on the Pi
    • You can crimp short cables for these, but you could also just use jumper cables
    • The moisture chip_select pin does not line up with its counterpart on the Pi, it needs to be connected to GPIO8 (CE0_N)
  • The motor connectors have to be connected in opposite directions, so that the motors spin in opposite directions
  • The outside DHT11 sensor will be connected to GPIO17 and to any 3.3V and GROUND pins

Step 20: Attach the Door

  • Hold the door against the bearings, at their lowest point, and mark where the holes need to go
  • Drill the holes and countersink them
  • Mount the door onto the bearings

Step 21: Attach the Roof

Step 22: Attach the Touchscreen and Panels

Step 23: Development and Further Info

  • This was my Non-Exam-Assessment project for AQA Design&Technology GCSE
  • If you're interested in the development and evaluation of my product feel free to read through the portfolio I created for the course (I will upload this at a later date, as right now there are some copy-righted images in it)
  • I got a mark of 98/100 before exam board moderation, if anyone is interested in this as exemplar work
Gardening Contest

First Prize in the
Gardening Contest