All work

IoT Device

Plantify

Plant owners rarely know why a plant died, and often blame water. Plantify is a soil-monitoring stick and companion app that shows a plant's condition with a light you can see across the room.

Role
UI design, 3D modeling, working hardware prototype
Team
Leen Habbal, Catherine Lumanauw, Skylar Wolcott
Course
Pervasive Interaction Design, UMSI
Tools
Figma, 3DS Max, Particle Photon, C++
Timeline
Jan – Apr 2021 (4 mo), UI refreshed 2026
Plantify soil sensor stick and companion app beside a potted grass plantPlantify soil sensor stick and companion app beside a potted grass plant

Overview

A device that tells you what the plant can't

A competitive analysis turned up plenty of plant-care gadgets, but almost none monitored more than one or two conditions. Whether owners actually wanted more than that was an open question, so we went and asked.

Goal: help owners who struggle with consistent care and plant longevity pinpoint exactly what a plant needs, instead of guessing from the leaves.

As a course project, every team member owned each research step. Beyond that shared work, I took three pieces end to end: I modeled and rendered the device in 3DS Max, built a working sensor-to-LED prototype on a Particle Photon in C++, and designed the app: the 2021 hi-fi Figma prototype, and the 2026 rebuild further down this page.

Research

Surveys, interviews, and a 3-day diary study

A survey gave us quick, broad data on whether a maintenance problem existed. Each of us then interviewed two plant owners one-on-one and invited them into a diary study: three days of self-reported photos every time they interacted with a plant. The whole study ran remotely, and still produced solid quantitative and qualitative data.

Survey & interview findings

Constant lookup

Owners frequently had to look up how to care for their specific plants.

Watering & sunlight lead

The top two struggles, followed by soil changes, pH levels, and keeping pets away.

Visual dependency

Owners rely almost entirely on what a plant looks like to judge how it's doing.

Late detection

The hardest problem was catching a dying leaf before it was too late.

Diary study findings

Clarity

Participants wanted an interactive mobile app that is easy to understand at a glance.

Connectivity

When away from home, they still wanted a way to check in on their plants.

Alerts

People forget. Reminders and notifications keep a care routine on track.

Visual indication & reconfirmation

Visible feedback on the plant's status, and repeated confirmation, gave owners certainty.

Two findings shaped everything after this. Owners gravitated toward low-maintenance plants and away from anything demanding. During user enactments they also strongly preferred several confirmations along the way, which we read as a rooted fear of losing a plant. Reassurance, not data, turned out to be the product.

Concept

A standalone sensor stick, paired to a mobile app

Each of us brainstormed concepts independently, then the team converged on the least intrusive, most scalable idea: a smart-monitoring stick that pushes straight into the soil and reports back through the app.

What it does: reads soil density, pH, acidity, humidity, and dryness, with an overview of each; pulls growing recommendations and care solutions from an extensive plant database; connects over Wi-Fi through a hub; flashes an RGB LED that reflects the plant's health at a glance; supports multiple devices, each with its own plant details; and lets you add a guest user with a temporary code.


The Plantify sensor stick: a tapered housing with an indicator on the top face, a sync button on the shoulder, and two soil probes below.LED signifierReads the plant's state across the room, before you open anything.Sync buttonPress and hold to pair with the hub. Blue while pairing, green once connected.Weatherproof housingSealed rather than sealed-with-a-door, so the battery charges over USB-C.Soil probesSit in the root zone and read moisture, pH, acidity, humidity, and density.
  • LED signifierReads the plant's state across the room, before you open anything.
  • Sync buttonPress and hold to pair with the hub. Blue while pairing, green once connected.
  • Weatherproof housingSealed rather than sealed-with-a-door, so the battery charges over USB-C.
  • Soil probesSit in the root zone and read moisture, pH, acidity, humidity, and density.
The stick, and what each part is for
Close-up render of the Plantify sensor stick inserted into a potted plant
Sensor stick, modeled and rendered in 3DS Max

System architecture

How a reading gets from the soil to the phone

Setup: the app sends the home network credentials to a gateway hub, the central link between the phone, the Plantify devices, and the outside network. Pairing a new stick is a button press on the device and the hub to complete the handshake, then the stick is assigned to a plant in the app.

Daily use: the hub collects readings from every paired device and reports them to a cloud server, which the app reads from anywhere with a connection.

Inside the device: a weatherproof housing holds a rechargeable battery, Wi-Fi chip, processor, RGB LED, soil sensor, sync button, and reset button.


User → phone → hub → network → API, hub → devices → plant

The build

Making the core interaction actually work

The renders show what the device would look like. The idea was that a plant's status could be legible at a glance, without the need to open anything. To know whether that held up, I built it. A Particle Photon, a Grove moisture sensor, and an RGB LED on a breadboard, written in C++.

I worked up to it in four passes: cycle the LED through its colors to learn the pins, pin it to a single state, read the moisture sensor over serial on its own, then combine the two so the reading drives the color. Dry soil turns the LED violet. Moist soil turns it green. That is the whole product thesis in eight lines.


Breadboard prototype beside a potted plant, RGB LED lit violet to signal dry soil
Below threshold — violet. The plant needs water.
The same breadboard prototype beside the same plant, RGB LED lit green to signal moist soil
Above threshold — green. Nothing to do.
Why violet and green

The LED is a shared channel, so no color could mean two things. We set the vocabulary before the enactments, tested it with props, and never changed it. The prototype demonstrates the two states tied to moisture because that is where the research pointed. Watering was the main interaction logged in the diary study, and interviewees who had lost a plant usually assumed water was the reason without knowing for certain.

Violet — needs water

Chosen from the survey and interviews, and tested with a violet prop in the pot before it was ever wired. Deliberately not red: on a device a red light reads as a fault, not a thirsty plant. The app shows the same state in red, because on a screen violet doesn't pull the eye.

Green — healthy

Nothing to do. All it takes is a glance across the room to see the state of the plant.

Blue — pairing

Reserved for setup. Holding the sync button puts the stick in pairing mode, and blue confirms it reached the hub: a device state, never a plant state.

The rest, held back

One participant asked whether water needed a color other than violet. It didn't. Adding more hues would have made the stick a thing you decode instead of read.

The enactments also found the limit of the channel. Color alone did not suffice: participants still wanted the app to confirm before they acted on it.

sensorValue = analogRead(sensorPin);

// if moisture is below value display purple, else display green
if (sensorValue < 1900) {
    setColor(128, 0, 128);   // Purple
} else {
    setColor(0, 255, 0);     // Green
}
Plantify.ino — the threshold that drives the LED

The threshold moved during testing. My first pass used a cutoff of 600, carried over from an Arduino tutorial. The Photon's ADC is 12-bit where the Arduino's is 10-bit, so the same soil read about four times higher, and the number that actually separated "dry" from "fine" in a real pot landed at 1900. Small detail, but it was the moment the prototype stopped being a wiring exercise and started being calibrated against an actual plant.

The prototype components: a Particle Photon, a breadboard, and a Grove moisture sensor probe
Photon, breadboard, Grove moisture probe
Close-up of the breadboard showing the Particle Photon, resistors, and lit RGB LED
Wiring detail — RGB LED on D0–D2, sensor on A0

Plantify product demonstration

The interface

2021, and again in 2026

Most of the 2021 interface came out of storyboarding and successive wireframe mockups, each iteration tested with a different set of participants before moving to high fidelity. It shipped as a working hi-fi prototype at the end of the semester.

After five years, the visual language had aged, and two features the team had specified never got screens before the semester ran out: device diagnostics and a per-plant history. So in 2026 I rebuilt the UI and finished the scope. The product decisions from the original research are unchanged; what changed is how they look and how much of the concept is actually drawn.


The 2021 home screen, showing only the two plants needing attention above a View All Plants buttonThe 2021 all plants list, five full-width cards flooded with status color
2021 — what needs attention, then all your plants
The 2026 dashboard, with a single alert row above the full list of plants
2026 — one screen does both
The 2021 plant info screen with six stacked meters above a two-tab strip
2021 — six meters compete for attention above two tabs
The 2026 plant info screen with a care summary row and four tabs
2026 — a care summary answers the first question, four tabs hold the rest
What the comparison is doing

Two screens became one

Attention and All Plants were separate screens. In 2021 colorful cards made sense: the alert screen only showed problems, so shouting was the point. All Plants got the same treatment, so five cards shouted for the user's attention. In 2026 the two became one screen: a single alert row carries the color, and the list below it stays quiet.

Species, not status

In 2021 a card led with its condition, Severe or Healthy, and tagged the room above it. Owners in our study talked about plants by species, so the species became the headline and the room and status moved to the subtitle.

The 2026 app

Try it

The rebuild is a working prototype, not a set of images. Tap through it below.


Appearance
Interactive — Tap a plant, or the alert row

This one is interactive. It needs more room than this screen gives it, so it opens on its own.

Open the prototype

Watering schedule listing the plant due today with a water now action, and the week ahead
Where the alert row takes you — today, then the week ahead
Sensor tab showing a low battery warning above battery health, connectivity, firmware, and last sync
The device gets its own diagnostics
Battery health sheet showing 14 percent, days remaining, a rechargeable USB-C cell, and charge cycles
Every status row opens the reading behind it

Outcome

The research held up even after the interface didn't

Plantify shipped as a working hi-fi prototype and a working piece of hardware, validated against real plant owners instead of assumptions. When I came back to it five years later, nothing in the research needed revisiting. The findings about reassurance, late detection, and glanceable status still described the problem exactly. Only the interface had aged. That gap is the most useful thing this project taught me.

Still open

Sensor footprint

Fitting every sensor we specified into a single slim stick. The breadboard is not a housing.

Battery life

Rechargeable, not replaceable: a battery door is the first thing to fail on a weatherproof enclosure, and this one lives in wet soil. What is still untested is how long a charge survives holding a live Wi-Fi connection.

Offline reliability

How monitoring stays trustworthy when the Wi-Fi connection isn't constant.

Outdoor use

Theft, tampering, and what the app should surface when a device is damaged or knocked over.

View the team's milestone write-ups