Grow vegetables with ultraponics tower

Similar projects worth following
Soilless growing is becoming more and more common with hydroponic systems. The forums are full of information on how to create your own system that allows you to grow plants by circulating water. This principle of culture presents the advantages of consuming less water, to have an accelerated growth and to be able to control and automate the whole system.
Many variants exist of the NFT culture, tidal culture, aeroponic culture but the most extreme and the least documented is the ultraponic culture that we will try to tame.

If you want to see the evolution of the ultraponic tower, do not hesitate to follow the project!

EDIT: I am correcting the details of the project indeed since the beginning in 08/22 the project has evolved a lot.

Will we run out of water?

There is water almost everywhere on earth but when we talk about fresh water, there is only 2.5% on our planet. Too many people on this planet do not have access to potable water. We have to optimize usage of water in all sectors.

According to WWF: “Agriculture uses 70% of the world’s accessible freshwater, but some 60% of this is wasted due to leaky irrigation systems, inefficient application methods as well as the cultivation of crops that are too thirsty for the environment in which they are grown. This wasteful use of water is drying out rivers, lakes and underground aquifers. Many countries that produce large amounts of food—including India, China, Australia, Spain and the United States—have reached or are close to reaching their water resource limits. Added to these thirsty crops are the fact that agriculture also generates considerable freshwater pollution – both through fertilizers as well as pesticides – all of which affect both humans and other species.”

Full article here:

Mankind faces several problems:

  • Cities will continue to grow, thus moving away from the fields, which require more transportation to bring food to towns.
  • Global warming will cause major disruptions and make the weather unpredictable for farmers
  • Population growth will exacerbate stress on water supplies
  • Other sectors depend on fresh water such as the energy sectors that have become necessary for our civilizations.

Could we make a cultivation system to optimize the consumption of this precious water?

Could we propose a system to allow local scale production of vegetables?

Could we make a system automated enough to run in a "forget it mode»?


The system must meet a few criteria:

  • Closed water circuit: this way, water is reused and contamination of the water table is avoided
  • The least noise possible: this system must be able to works in the apartments of the big cities (those that do not have a garden)
  • Optimization of electricity: energy also depends on water
  • Cheap as possible:  accessible to the greatest number
  • Put the most plants in the smallest space
  • Completely automatic

Hydroponics corresponds to almost all the criteria mentioned above but why did you choose ultraponic?

Why ultraponics?

On paper it is the most efficient technology (with aeroponics) to grow plants. Indeed, the roots receive the minerals through a mist composed of water droplets between 10 microns and 20 microns, thus simplifying the absorption of nutrients by the plant. Ceramic discs that are vibrated at their resonance frequency create this mist. The discs, contrary to aeroponics, are very quiet, allowing the use of this system in an apartment.

You will say that there are several discs with different frequencies! You are right, so which one did we choose?

Different technologies of disks:

We can differentiate the various disks according to their resonance frequencies.

We have on one side the 110 kHz disks and on the other the 1.7 MHz disks.

The temperature of the water is very important for growing plants so we have discarded the 1.7 MHz disks, which heat up the water after prolonged use.

Explanation in this log.

Now that we have chosen the right disk, we can focus our attention on the tower!

The ultraponic tower:

The tower consists in a main reservoir (a plastic box) at the bottom that contains most of the water and recovers it after the watering cycles. The 100mm PVC pipe acts as a root chamber, which can accommodate 12 plants. At the top of this pipe there is a small tank that contains three piezoelectric disks that create the mist. The electronics are at the top of the tower on the small tank, preventing any risk of water damage.

This small tank is filled...

Read more »

Zip Archive - 1.42 MB - 10/11/2022 at 19:46


Zip Archive - 252.05 kB - 10/10/2022 at 20:43


Zip Archive - 16.12 kB - 09/03/2022 at 14:38


Standard Tesselated Geometry - 428.70 kB - 08/25/2022 at 17:02


Standard Tesselated Geometry - 2.07 MB - 08/23/2022 at 18:46


  • Update 10/2023

    J Gleyzes10/04/2023 at 09:33 0 comments

    If you want to get the latest updates on the project. It continues on this hackaday page :

  • Quick Update 23/01/23

    J Gleyzes01/23/2023 at 20:52 0 comments

    The DC-DC Buck Step Down Converter problem

    I use this module (CN3903 3A) to convert 12V to 5V to power two components: the esp32 and the 5V mini pump.

    However, it is not capable of feeding both at the same time. After several tests, activating the pump causes the esp32 to crash.

    But separately everything works.

    Several solutions are possible: 

    • Put two CN3903 one for the pump and one for the esp32 
    • Take a 12V pump, allowing to power directly to the charger (but it is not a USB connector for the pump anymore)
    • Use a 5V charger for the PCB and then use a boost converter to power the disks at 12V

    For the moment I use solution 1 which allows me to test easily.

    Disc nut optimisation

    The old STL design, was too closed on the disk creating a water droplet retention preventing the creation of fog afterwards. The new design seems to solve the problem.

    New PCB

    I'm still testing the latest version of the PCB, the fog creation is good now I'm waiting to see if the disks don't get damaged over time.

  • Quick Update 21/11/22

    J Gleyzes11/21/2022 at 15:48 0 comments

    I have been testing for several weeks a new circuit to create a better AC current with a current sensor to adapt the frequency.


    By adding coil L7 and capacitor C13, the generation of alternating current is balanced in the negative and positive directions.

    Old circuit:

    New circuit:

    I also added a shunt resistor to measure the current. By changing the frequency we can detect the peak of fog creation which corresponds to the current peak.

    And for example for a disk sold with a resonance frequency of 108kHz the peak of fog creation is at 100kHz.

    I have ordered the new PCB with the modifications. I will test it before publishing it.

  • Quick Update 03/11/22

    J Gleyzes11/03/2022 at 21:04 0 comments

    I changed the ESP32 code, the new code is in the project github.

    The changes:

    • The pH sensor reading switches from pin 13 to 35 because pin 13 is unusable in ADC when bluetooth is enabled
    • The code for activating the pump has also been changed
    • Other minor bugs fixed

    Water level sensors get damaged very quickly even when using the capacitive function of the esp32. I think I will use stainless steel wire to limit corrosion.

    The root system of plants is quite impressive. The lettuce on the top left has already been cut three times (leaving some leaves on). It has grown back to its pre-cut size in a week.

  • Scalability

    J Gleyzes10/19/2022 at 19:02 0 comments

    The current design is great for a low cost tower and quick to build. But the discs can be used to water more plants. So a tower design with stackable tiers would allow to grow more plants.

    Here is the evolution of an individual tower but for building roofs we can still optimise

    Farm on a building

    The concept is a main reservoir that manages water quality (ph, nutrients, temperature). It is located high above the tower and allows the smaller tanks to be filled by gravity.

    Then there is an indeterminate number of ultratowers depending on the space available on a roof or other.

    The PCB of the towers only needs to manage the activation of the disks, the water level of their small tank and a valve to fill it and stop the filling.

    According to my calculation the cost for a PCB could be around 8~10€ for orders of 100 pieces. 

    There would be a single pump that brings the water from the bottom of the towers up into the large reservoir to close the loop.

    This farm concept would optimise material costs, running costs and electricity consumption.

  • Video of the project

    J Gleyzes10/17/2022 at 16:47 0 comments

    And here is the video for the hackaday contest! Thanks again to this contest it motivated me to finish a project in three months instead of more than 1 year...

  • Android Application

    J Gleyzes10/11/2022 at 12:01 0 comments

    The android application is online. You can download it on the google play store :

    This application allows you to change all the parameters of the tower without having to modify the arduino code. It also allows you to configure a data transfer to ThingSpeak. And most importantly, you can calibrate your sensors easily.

    I am not a professional developer, I only know how to develop applications in Kotlin for Android and unfortunately I could not make the application for IOS.

    For non android users I would make an arduino code where you can easily modify the variables.

  • ESP 32 Code upload

    J Gleyzes10/09/2022 at 18:16 0 comments

    I have updated the code on github for the new PCB. 

    In this new version there is :
    • the pH sensor 
    • the EC sensor
    • the temperature sensors
    • the data sending to ThingSpeak

    The entire bluetooth communication routine between an android smartphone and the esp32 is also complete.

    This application, which should arrive this week, will allow you to modify the parameters of the tower (such as the time of the cycles, activate or deactivate the sensors, ...)

    But most importantly, the EC and pH sensors can be easily calibrated through the application.

  • Applications

    J Gleyzes10/07/2022 at 20:51 0 comments

    UltraTower is a low cost ultraponic system under 100€ with parts that can be easily found in shops. Thus this technology can have several uses:

    On a balcony:

    Cities are getting bigger and bigger and have a garden to grow your own vegetables can be complicated. The tower is made of a 100mm diameter PVC tube which allows you to grow a maximum of plants (12) in a very small space.

    For Universities or Laboratories:

    The PCB is modular allowing the addition of a pH sensor, EC sensor, three temperature sensors and one humidity sensor. The sensors allow real-time monitoring of the data through the android app and ThingSpeak. This makes it easy to compare different crop variables to see which works best for certain types of plants.

    In a garden:

    This project is not aimed at eliminating the cultivation of vegetable gardens, far from it. But individuals who do not have the green thumb or the time to tend a vegetable garden can grow their plants passively thanks to this tower.

    On the roofs of buildings:

    To feed the cities, oil is needed to bring the crops to the plate. The roofs of the buildings are an unused surface of the cities allowing the culture of many plants directly in the cities thus limiting transport. Of course, an industrial adaptation of this tower is to be expected. I will detail it in another log.

    This technology has many possible applications, and I have only mentioned 4 but we could think of polar expeditions where the transport of fresh food is expensive,  in space and many more where traditional culture is impossible.

  • Pump block

    J Gleyzes10/05/2022 at 20:39 0 comments

    As we have seen in this log, ESP 32 must manage the filling of the small tank at the top of the tower with a 5V submersible pump in the main tank. 

    The ESP 32 must however know the filling rate of the small tank as the disks must not run without water otherwise they will be damaged and the pump must be stopped when the small tank is full.
    To do this we will use only two wires and the touch sensor technology of the esp32. The esp32 has 10 pins that allow measuring the change in capacitance between the panel (sensor) and the environment. If you want to know more about how it works.


    This is the top tank cover to which the pcb is screwed. 

    The blue arrow shows the bottom sensor.

    The red arrow shows the top sensor.

    The white arrow shows the connection on the PCB.

    The usb port at the top right of the PCB allows connection to the pump

    The code :

    touchRead(pin) ;

    This function returns a value between 100 and 0. By dipping a wire into the water the value will drop to around 10 allowing us to know if the high sensor or the low sensor is in the water. Before each activation of the disks, the bottom sensor of the tank is checked if it is not in the water then the pump is activated. A blocking loop will check the filling of the tank up to the low sensor if after 15 seconds the low sensor is not reached, the main tank is empty or the pump has a problem (the activation of the discs will not be performed). If the low sensor is reached, the blocking loop is exited leaving the pump activated. In the main loop if the pump is activated the high sensor will be mesured to know when to stop the pump. While waiting for the end of the filling process the discs will be safely activated.

    During the activation of the discs, the low sensor will be measured every 2 minutes in order to know when to fill the pump which is necessary when the user sets the disks to long activation periods.

View all 24 project logs

  • 1
    Step 1: 3D printing

    To build a tower you will need to print the 3D parts shown on the left of the image.

    The "Sensors float" part is optional, print it if you want to use the pH and EC sensors.

    You will need 12 times the part: "Basket". 

    You can download the files here.

  • 2
    Step 2: PVC Pipe

    Materials needed:

    • PVC pipe ø100 mm, 1 m
    • PVC pipe ø40 mm
    • PVC glue


    • Hot air gun
    • Saw


    Make 3 notches of 4cm on each floor. Each notch is 6.5cm spaced. And each floor is 16cm spaced.

    To make the next steps easier you can make the notches 1 or 2 mm longer.


    Here is a video on how to do it:

    Use the 40mm pipe to thermoform the large pipe.

    Bevel it for ease of use:

    Finishing stage:

    Glue 1 cm pieces of the small PVC tube into the holes.

    Now the 3D printed baskets will fit perfectly in.

    You can paint it white to prevent the PVC pipe from heating up too much on sunny days.

  • 3
    Step 3: Assembling the top tank

    Materials needed:

    • PCB
    • 3D part: Cover
    • 3D part: Water level
    • 3D part: Top Tank
    • 3D part: Disk nut *2
    • 108 kHz piezo electric disk *2
    • Small wires

    You must first solder your PCB, put the esp32 on pins to be able to remove it and access the screw below. This PCB is modular, solder only the modules you want (see this log).

    Assemble the cover and PCB with 2 screws.

    For the water level sensor, 2 wires must be glued to the notches. Then simply screw this part into the cover. Then connect the connector to the PCB.

    Finally, the tank must be assembled with the disks.

View all 3 instructions

Enjoy this project?



Bernard wrote 01/28/2023 at 02:01 point

Also something you should note. The code fails to compile with the latest version of  arduinojson 6.20.0, you have to select an older version eg  6.19.3. To support the latest will need code changes. Cheers

  Are you sure? yes | no

Bernard wrote 01/26/2023 at 19:22 point

Many thanks for the replies .. :)  Look forward to the arduino code updates.

 Is the code for the android app available somewhere also?

  Are you sure? yes | no

Bernard wrote 01/26/2023 at 03:05 point

There is also an error in the code:  "errorPump" is not defined anywhere, fixed by making it a global int, init to zero.

  Are you sure? yes | no

J Gleyzes wrote 01/26/2023 at 12:32 point

I'm still working on the code, I'll update when I'm sure everything works.

  Are you sure? yes | no

Bernard wrote 01/26/2023 at 01:36 point

Be helpful, if you would answer comments. I also cannot get the arduino code to compile. States not enough room on board. I have selected Wemos Lolin32 board:


Sketch uses 1399930 bytes (106%) of program storage space. Maximum is 1310720 bytes.
Global variables use 52740 bytes (16%) of dynamic memory, leaving 274940 bytes for local variables. Maximum is 327680 bytes.
Sketch too big; see for tips on reducing it.
text section exceeds available space in board

Compilation error: text section exceeds available space in board

  Are you sure? yes | no

J Gleyzes wrote 01/26/2023 at 12:31 point


You must set the partition scheme of your ESP32 to Minimal SPIFFS.

  Are you sure? yes | no

Bernard wrote 11/07/2022 at 22:45 point

One last thing. Is the size of the piezo 16mm with rubber seal, or is it a 20mm piezo, no seal. ?

  Are you sure? yes | no

Bernard wrote 11/07/2022 at 22:17 point

Also, how does the water get through the disk, is there a small hole?

  Are you sure? yes | no

Bernard wrote 11/07/2022 at 21:58 point

Hi, can you please give details on the  piezo element you used. I.E. a link to where you bought them, so we can make sure we have the same one..

  Are you sure? yes | no

J Gleyzes wrote 11/09/2022 at 19:58 point


I have updated this log ( with links to the products I use.

I recommend you to wait before doing the tower because a new PCB design will arrive with many improvements.

  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