AI & Control
A locally-running vision model watches the roots and drives the pump in a closed loop — HexaFlow waters plants only when they actually need it.
AI-Driven Operation
The locally-running AI model observes plant roots via camera and dispenses water incrementally — verifying adequate hydration before stopping the pump. The result is a closed-loop system that responds to actual plant conditions rather than a fixed timer.
The vision model came out of extensive brainstorming on how to pump water through the system in a loop — until we realized a vision model could watch the roots and pump only the amount of water the plant actually needs.
The vision model reads moisture straight from the camera feed and drives the pump accordingly, closing a continuous feedback loop that prevents both overwatering and underwatering.
The whole loop runs on a Raspberry Pi Zero 2W, chosen for its balance of price, compatibility, and power: it runs full Linux and hosts our web UI, yet draws little enough to stay passively cooled. The main camera is an InoMaker 1080p USB camera (130° FOV), alongside two secondary cameras. The wide field of view covers most of the dome, and we went with USB because routing a Pi camera ribbon cable through the nanolab's tight channels wasn't going to happen. The vision model's job is to detect dry roots via the camera and trigger the pump only when needed.
Vision Model in Action
A live test of the root-moisture model. The camera watches the roots sitting in a hex-channel dome, and the bars show the model's confidence in real time.
- Dry roots — the model reads them as dry, up to 96% confident.
- Roots moistened — once they're back in the dome, it flips to wet at 95%.
- Roots dried out — after blotting them with a towel, it returns to dry at 100%.
That dry/wet call is what decides whether the pump runs.
Dual Configuration Modes
Drop Testing Configuration
- AI disengages during the drop window
- Pumps continuously for the length of the drop
- Driven by a 150 mL/min (5000 RPM) pump
- Fills toward the channels' ≈ 10.12 mL max capacity during the 2.2 s test window
- Maximizes channel fill during the microgravity event
Long-Term Growing Configuration
- AI vision actively monitors root moisture
- Driven by a 1 mL/min pump for long-term operation
- Saves 320mA versus the drop-test pump
- Fine-grained control over water delivery
- Adaptive data collection and imaging protocols
- TDS and pH sensors active
Custom PCB
A custom PCB consolidates every electronics connection into one board — simpler wiring, fewer failure points:
Raspberry Pi Integration
Powered through the nanolab's USB Type-B port
4-Camera USB Hub
Embedded support for up to 4 cameras at once
Direct ADC Embedding
More reliable connections for analog sensors
Consolidated Breakouts
Power and signal breakouts in one place for simpler wiring
Sensor Selection Rationale
Every sensor was chosen for a concrete reason — and against a documented alternative:
BME680
Temp / Humidity / VOC
Over BME280 / CCS811
Chosen for simplicity
Adafruit 4026
Capacitive moisture probe
Over Resistive probes
Won't oxidize over time
Atlas Scientific pH Kit
pH measurement
Over Arduino Gravity pH
Glass reed can't work in microgravity
TDS Sensor
Dissolved nutrient load
Over —
Tracks nutrient concentration in the reservoir
NeoPixels
Lighting
Over —
Programmable spectrum for the grow channel