Modular Vertical Farming

Growing food where it's needed, ready to be sold.

Similar projects worth following
This is a project aiming to simplify the process of growing plants anywhere. A variant on vertical gardening, it addresses multiple problems found in current methods of food supply. For example, it would enable grocery shops to grow their own food, meaning less transportation is necessary to provide food. This approach to farming also reduces pollution by reducing the necessity for pesticides.

My variant on vertical farms will be based on modules that store the plants, water them, give them light, and monitor both their plant and their surroundings. With the addition of either workers or robotic implements, the plants can additionally be given fertilizer and monitored.

By making these containers modular, different plant sizes can be accommodated in the same rack regardless of the plant type, shifting based on current demand, while still optimizing the space needed. Having the plants flat against a wall - or slightly protruding from it - simplifies the use of movable racks.

System Design Document

I'm building toward the following:

  • Modules with grow light strips, solenoid valves, docks.
    Design finished, construction will start soon.
  • Communication between Modules, Controllers, and Servers.
    • Communication between Modules and Controllers done, Controller-Server communication is currently in progress.
  • A graphical interface that shows the status of the system.
    • Mockup has been made, coding is in progress.
  • Temperature sensors in controllers
    • Work hasn't started on this.

Please see the components section for a preliminary list of components.


This is a project aiming to:

  • Enable growing food at sale locations (→ supermarkets, etc)
    • Aims:
      Reduce pollution caused by transportation
  • Enable automation of growing food
    • Aims:
      Permit use of analytics to maximize growing efficiency
  • Facilitate use of robots in plant growing process
    • Aims:
      Reduce needed space
      Achieve consistent quality
  • Reduce wasted water by eliminating runoff problems and reducing evapotranspiration losses by means of catching runoff and dehumidifying, then filtering water and reusing it.
    • Aims:
      Use & waste less water.
  • Accommodate plants of different sizes.
    • Aims:
      Allow use of a single frame to grow different plants (especially useful in smaller commercial contexts)

In conclusion, these are the major goals I am trying to achieve.

  • Grow food where it's needed (at local supermarkets, etc...)
    • Give customers access to fresher food
      • Improve health by reducing the cost of vegetables & fruit in general and making them a more attractive option
    • Simplify growing of food in remote regions, especially those that have arid climates
  • Reduce the environmental impact of growing plants, especially in large scale
    • Use less water
      • Stop releasing pesticides / herbicides into groundwater & nature


Wire library (c) 2006 Nicholas Zambetti, GNU LGPL 2.1+. Not modified by me.

Other Software used (GPL and/or LGPL), but also not modified by me.

This project's source code and design files are all under the MIT license, but won't be uploaded until the end of the contest unless requested due to them being in a constant beta state. Please contact me and I will try to respond ASAP with the code / design file you want. Thanks for understanding!

  • 1 × (per module) ATMega168A-PU Current prototypes are using THT ones in sockets, SMD will be used in the future
  • 1 × (per module) White LED 3mm
  • 1 × (per module) various pin headers 0.1", for various connections
  • 1 × (per module) DMN3053L-7
  • 1 × (per module) Module case Initial prototypes will be either 3D-Printed or made from wood.

View all 12 components

  • This project's future

    alpha_ninja08/24/2015 at 19:01 0 comments


    as you may have noticed, this project did not make the cut for the quarterfinals.

    For this reason, I won't be continuing development of Modular Vertical Farming—I cannot justify the investment it would take. I may reenter this next year, but until then, development will be stopped.


    P.S. Congratulations to those that moved on! :D

  • Connection Considerations

    alpha_ninja06/20/2015 at 16:40 0 comments

    To begin with, I'm sorry for not posting in a long time—I hope I will be able to make a lot of updates over the next few days. Regardless, this won't be a long project log.

    I've decided to use the Teensy-LC I got as a prize a few weeks back as the section controller.

    The main reason is because of its USB capabilities. In fact, it turns out it's relatively easy to use as a raw HID, meaning that sending 64-byte packets between any computer and the teensy is a breeze.

    It also has a relatively high clock speed, so that's great.

    I'll be doing some testing & coding for this over the next few days and will keep you updated.

    Goals for software: (I'll most likely be using python)

    • Figure out some kind of protocol
    • Get that protocol implemented
      • Both controller and computer-side
        • Run a simulation on the teensy for testing
    • Get some basic GUI going computer-side

    I will eventually get a π set up, connected to the teensy, connected to a few modules.

  • Module PCB assembly and testing

    alpha_ninja05/22/2015 at 02:22 0 comments

    To begin with, I now have a twitter account. I'll be using it mostly for posting minor progress updates, so feel free to check it out : @not_beta_ninja

    Now, I'd like to apologize for taking so long to post this (well, nine days. It could be worse :] ). Anyway, here's the board assembled and sanded, fit in a PCIe x1 connector. I decided to put the power pins on the back because they would otherwise be blocking the ICSP pins. Design flaw, maybe, but meh. This is just a prototype ;)

    It's a pretty tight fit, and one of the boards required a tiny bit of additional sanding in the cutout just to fit, so I'm going to make the connector a bit thinner. No other complaints on the boards though—they came out great!

    Now, on to testing.

    Read more »

  • PCBs arrived.

    alpha_ninja05/13/2015 at 02:07 0 comments

    The PCBs arrived from OSHPark!

    I really don't want to do this now, but I'll need to assemble it and sand down the PCIe connector.

  • Stop! Hardware Time.

    alpha_ninja04/27/2015 at 00:12 0 comments

    To begin with, I'd love to thank you all for following/skulling this project and the Hackaday team for choosing me for the prize last week.

    I've been doing some work on the hardware aspect of the project (mostly the module part.)

    I started up by whipping this up (please excuse the messiness of the wires):

    I tested it, and I²C, FTDI, and ICSP all work great!

    Then, I went on to KiCad.

    Read more »

  • Module Electronics & Connections

    alpha_ninja04/22/2015 at 04:30 0 comments

    So, I think I've found a good solution for electrical connections between the frame and module. To recap, we need the following connections:

    GND, SCK, SDA, SOL (solenoid), 12V (for led strip), 5V (for microcontroller.)

    Now, I've decided to add another 6 pins for module location sensing (which decides the module's I²C address). That brings us to a grand total of 15 pins.

    Read more »

  • I²C troubles & MCU ideas

    alpha_ninja04/19/2015 at 21:38 0 comments

    I²C is great.

    When it works.

    I've been doing a lot of work on the controller-module communication—and, while doing so, I've learned a lot.

    1. The Raspberry Pi I²C implementation would be a lot better if it had support for clock stretching.
      (I probably won't be using πs as part of this project.)
    2. The Arduino Wire library, which I'm probably going to use, has a really weird bug. I'm not sure if it's specific to that library, but it's annoying as all hell

    So, want to know more about that bug?

    Here it is.

    Read more »

  • Docking deliberations

    alpha_ninja04/12/2015 at 18:10 0 comments

    Hey there!

    I'd like to write a bit about the docking the modules and connectors used today.

    I've chosen 30cm as the minimum side length for the modules. This is since most small-ish gardening pots are around 12" in diameter (about 30cm). Of course, multiples of that figure will be allowed.

    As has been previously determined, each slot will have LED power, solenoid enabling & disabling (to reduce necessary connections: high-impedance for off, GND to enable. The solenoid will be connected to 12V power on the other side), I²C, +5V, and ground connections. (coming up to 6 ports, assuming a common ground is used.)

    Read more »

  • Organizational Structure

    alpha_ninja04/06/2015 at 07:30 0 comments

    An image depicting the organizational structure I plan of having:I've thought a bit about the organizational structure of the project. I've come to the following conclusions:

    Read more »

  • Modeling & Module Meditations

    alpha_ninja04/03/2015 at 14:14 0 comments

    I have begun with modeling the plant containers, for which I'm using OpenSCAD.
    Here's a picture of my current progress:

    The plants, soil, and watering tube are in the image to clarify usage.

    Finished modules will contain:

    Read more »

View all 10 project logs

Enjoy this project?



alpha_ninja wrote 04/21/2015 at 18:04 point

Whoa, so many followers all of a sudden! what happened?

Edit: Looks like the project is/was featured.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates