Back in January I started building a greenwall for my apartment and that spun off to also building a hydroponics wall for my kitchen and then the hydroponics wall soon eclipsed the greenwall as the primary project. After several months and several iterations, the hydroponics wall is finally done. It can hold twenty plants with fully automated lighting and watering, with operator intervention required less than once per month.
I stuck pretty close to the original prototype design, with a zig-zag of pipes holding plants in horizontal rows, except that for the final version (v4) it's all neatly self-contained and automated. Designing and assembling the control electronics consumed the greatest amount of time, as it usually does. The control software is fairly simple. All in all it works beautifully. (My iPhone makes the light look extremely purple. In real life, it's fairly white.)
The structural design didn't change much from v1 to v4. I enclosed everything in a simple case and transferred all loads to a backplate, but otherwise the final layout is similar to the original. I built a back frame and front cover out of 5mm plywood, glued together, with a large internal space at the bottom to hold the water reservoir and all electronics. All equipment is mounted and all loads are transferred directly to the backplate, so the front cover is purely cosmetic.
After cutting, sanding, gluing, sanding, filling, and sanding everything, I started painting. I used cheap plywood and I didn't put any effort in aligning the grains, so it needed to be painted. I tried out several colors and disliked all of them. I wanted the interior panels to be a light yellow to reflect a warm light around the room. I started to paint the front a shade of blue, and after sanding down the first coat I decided the sanded appearance was more interesting than a solid color so for now I'm sticking with that.
Not a whole lot changed here either. I changed from five rows of four plants to four rows of five plants, but the basic zig-zag arrangement stayed the same. I used ABS pipe for the horizontal rows and PVC pipe for the risers connecting the rows, all glued together. I started out using an inexpensive submersible pump that plugged directly into a wall outlet for 120VAC. It was very loud. So I replaced it with a smaller 12VDC pump that is almost silent. At that point, the sound of water draining from one row to the next was the loudest part of the system, so I printed baffles to quiet the drains. The end result is that the 12VDC submersible pump inside the reservoir pumps water up to the top row, water flows down that row, drains to the row beneath it, repeating until water drains back into the reservoir.
Chemistry control occurs entirely within the reservoir. With fully automated closed-loop pH and EC control, I was able to use a very small reservoir. I built a one-gallon tank from acrylic sheet and placed in that the submersible watering pump, an inexpensive pH probe, and an inexpensive EC probe. I realized that the EC probe (which applies a voltage to the water) interfered with the pH probe (which reads a voltage from the water), so I programmed my controller to run them one at a time. Small peristaltic pumps move vinegar and fertilizer from 12oz HDPE bottles into the reservoir to control pH and EC. (The water naturally moves toward pH≈7.5 so there's no need to ever add a base.)
I settled on a water cycle of five minutes every four hours. Every four hours the watering pump starts running. After one minute, the dosing pumps add vinegar and fertilizer. After five minutes, the watering pump shuts down. This happens only during the daytime, when the grow lights are on. This system and schedule allow me to control pH = 6.00 ± 0.2 and EC = 2.0 ± 0.1, more or less ideal.
I stuck with the T5 LED grow lights I bought back at the start. I disassembled them to find that each light bar contained a ~70VDC power supply to power 48LEDs in series-parallel. I didn't want to create my own PSUs, so I repackaged the original PSUs for four light strips onto a single breakout PCB with screw terminals for ease of use.
On their own, the grow lights spray light out 180º, which is both inefficient for growing and annoying for people in the room. I printed small parabolic reflectors to focus the light into a 60º beam. The reflectors glue onto the bottom of each horizontal pipe, facing down toward the pipe below it.
I settled on a schedule of running the lights from 6am to 10pm every day.
To control algae growth within the water reservoir, I added a small waterproof UV lamp designed to kill algae in aquariums. This is placed directly in the reservoir and runs for one hour every night.
I tried out several different power supply ideas and ended up using COTS 120VAC→5VDC and 120VAC→12VDC power supplies. Designing and assembling my own wasn't worth the hassle. Additionally, when my first batch of control PCBs arrived I quickly remembered that putting 120VAC on the same board as 3.3VDC, 5VDC, and low-voltage analog signals is a very bad idea. I used optocouplers to separate the 12V power from the 5V power and 3.3V logic. Additionally, on the v4 PCBs, I added in a 5VDC buck-boost regulator to eliminate 60Hz noise in the 5VDC supply that was producing noise in my sensor readings.
For the grow lights and UV light I reused their included power supplies, though I did create breakout boards to hold them, as screw terminals are much better than soldered connections when assembling the whole system inside the cramped case.
Designing, building, and debugging the control system was by far the most time consuming part of the project. This is primarily due to the manufacturing lead time for small batches of PCBs. Each revision took ~2weeks. v4 finally had all the features I needed, all more or less debugged. The final control board design was simpler than the original design, which I usually read as an indication of success. This was largely the result of separating different voltages onto separate PCBs. The final board contained nothing more than MOSFETs to control the pumps and instruments, RC filters for the water chemistry sensor signals, signal routing for the small display that I added on, and the 5V regulator.
My control program grew quite a bit from the original design. As more and more features and components were added to the system, especially when feedback control loops were added, I decided I should add a small LCD to make observation and debugging easier. I had one left over from a class I took years ago, so I dug that up and then I dug up the libraries required to control it. The addition of control loops also increased the complexity of the timing and scheduling, as branching logic meant we had to do more than just follow a fixed schedule and continuous control meant I needed timing at a resolution finer than one second. Luckily, it wasn't much work to change the control program from 1Hz to 10Hz, or scheduling when to start and stop each dosing pump. I've considered replacing the entire system with a simpler scheduler, where every task to be performed would simply be added to a to-do list along with a time of execution. I probably won't ever get around to doing that.
Everything works. It's nice when things work. This was a pretty enjoyable little project. I wouldn't have put this much effort into something so trivial normally, but 1) I was bored working and staying at home during Covid and 2) I hadn't built a robot in a long time and I wanted to build a robot. This is more or less a slow robot, but then you get to eat it. There are a few small improvements I'd like to make, but probably those will never happen. I'll be vaccinated next weekend, so I'll probably go outside instead.