VLF
Back to portfolio
Engineering2026

AI-Powered Hydroponics Robot

An AI-run hydroponic system built to make growing your own food effortless. A cable-suspended camera robot scans every plant through a vision-language model, streaming plant-health updates to a live dashboard and a phone app you can check from anywhere.

Led and designed. AI, electronics, robotics, and the full software stack.

01

What I built

A semester-long engineering project: an autonomous plant-monitoring robot for a small hydroponic rig. The robot hangs on a four-cable lift inside the rig with a separate pan axis, finds each plant by its ArUco marker, drops to a close-up height, captures a photo, and runs it through a vision-language model. Structured plant-health output streams to a live dashboard and a phone app.

I led and designed the project and built its brain: the AI, the electronics, the robot, and the software stack, with a team of students working alongside me on the physical hydroponic structure. What started as a rough motion-control prototype grew into a full system covering firmware, server, vision pipeline, dashboard, and scheduler.

02

The mission: zero hunger, grown at home

The whole project is built around one goal: a product anyone can bring into their home and use to grow their own crops and food sustainably. The people who stand to gain the most from growing their own food are often the ones who know the least about how to do it, so the system has to carry that knowledge for them.

That ties directly to two of the UN Sustainable Development Goals: Zero Hunger (Goal 2) and Responsible Consumption and Production (Goal 12). The larger ambition is to chip away at a global problem by giving people a cheap, low-effort way to farm food at home, and making the whole process as approachable as possible. Controlled-environment agriculture is already becoming more relevant in Thailand as land and climate pressures push small-scale farming toward technology, and a self-running home rig is one way to meet that.

The two UN Sustainable Development Goals the project targets: Zero Hunger, and Responsible Consumption and Production.

03

Built to run itself

The aim is a smart hydroponic system run almost entirely by AI. As much of the grow as possible is handed to the model: monitoring each plant, reading its health, and deciding what needs attention, so human intervention is kept to a minimum.

That is the entire point. Someone who knows nothing about plants or the growing process should still be able to grow food for themselves and keep it alive, because the system is doing the watching and the thinking on their behalf.

04

A live update from anywhere

I built a web app that runs on any device, my own iPhone included, from anywhere in the world. Users open it to check on their plants and get a live update without ever having to stand in front of the rig or monitor anything themselves.

The same interface drives the wall dashboard and the phone in your pocket: ambient temperature, humidity, and light, plus a per-plant health read alongside the latest close-up the robot captured.

The app
The companion web app, open on a phone in front of the rig. Live ambient readings and per-plant health, checkable from anywhere.
05

Leading the build

I led and designed the project end to end, and I owned the parts that make it intelligent: the AI, the electronics, and the hardware. That meant integrating the different sensors, building the robot itself, and writing the algorithm that moves it around the rig to scan each plant in turn.

The students working with me focused mainly on the physical hydroponic structure. Splitting it that way forced clean interfaces between subsystems instead of letting things bleed into each other.

The control side uses a VEX EXP brain talking to a host Mac over USB serial. The brain runs the motion firmware in C++. The host runs everything else: vision, server, dashboard, and the scan scheduler.

06

Teaching the AI with paper plants

To train and test the vision model, we used paper cutouts of plants printed at different health stages, from thriving down to clearly struggling. It let us rehearse the full scan-and-diagnose loop without waiting on real grow cycles.

The results came back strongly positive. The model read the health stages well, and it was even sharp enough to flag that a plant was a fake paper cutout rather than a real one, exactly the kind of edge case you want it catching.

The cable-suspended VEX camera platform hanging over the rig, scanning the paper-cutout test plants used to train the model.
07

Control stability, the hard part

Most development time went into control stability. A naive first attempt sending the same velocity to all four cable motors caused wobble-induced sign-flip oscillation: tiny tension imbalances would cause one motor to overshoot, the controller would reverse it, the cable would slack, then snap back. The whole rig would shake.

I solved it by latching each motor independently the moment it hit tolerance, backed by brain-side software limits and a watchdog. That gave lockstep motion without needing a full PID loop, and it survives the asymmetric loading you get whenever the camera platform isn't perfectly centered.

08

Reverse-engineering VEX

VEX is a closed ecosystem. I used it for budget reasons, but its byte-level USB command scheme is not designed for general-purpose use. I reverse-engineered the USB interface and replaced its protocol with a tagged compact-line scheme of my own: structured, versioned, and debuggable, so I could trace exactly what the host was sending and what the brain was doing.

09

The full software stack

VEX firmware in C++. A Python FastAPI server on the host with HTMX, Tailwind, and Server-Sent Events for the dashboard. SQLite for storage with tiered photo retention so old captures get downsampled rather than deleted. APScheduler runs the autonomous scan loop. OpenCV handles capture, ArUco detection, and pre-processing before frames go to the VLM in LM Studio.

There's also a mock mode that swaps the brain, camera, and VLM for in-process fakes so the whole system runs with no hardware attached. That made it possible to develop the dashboard and scheduler on a plane, on a lunch break, or anywhere I wasn't standing next to the rig.

The live dashboard: ambient readings up top, then a tile per plant station with the model's health score and notes.
10

Deployment

Two-Mac setup with a git-hook deploy. Push to the repo, the host Mac pulls and restarts. LLM-assisted coding tools were used throughout, but I kept full ownership of architecture and behavior. Every interface and every state machine was a decision I made and could explain.

Video

See it running.

Robot in motion: cable lift moving between plant stations

Gallery

Selected images.

Skills & concepts

Project leadershipEmbedded systemsSensor integrationAutonomous roboticsFirmware development (C++)Reverse engineeringClosed-loop motion controlComputer visionVision-language modelsAI integrationHardware and software integrationSystem architectureCoding with LLM