I taped a sensor to a plant to see if it was thirsty. Then a piezo disc humbled me.
A 14-year-old’s notes on building SPANDANA, getting picked top 30 of 3,300+ at IIT Kharagpur, and the moment a $0.40 component politely…
I taped a sensor to a plant to see if it was thirsty. Then a piezo disc humbled me.
A 14-year-old’s notes on building SPANDANA, getting picked top 30 of 3,300+ at IIT Kharagpur, and the moment a $0.40 component politely told me to stop.
So here’s something you probably haven’t thought about much:
By the time you can see a plant is thirsty, it has been thirsty for a long time.

The drooping leaf, the yellow tip, the slow growth — those are late signs. The plant has been quietly losing its mind internally for hours, sometimes days, before any of it shows up on the outside. And almost everything we use to monitor plants — soil sensors, weather stations, light meters — sits outside the plant. We watch the room the plant is in. We don’t watch the plant.
I wanted to see if I could.
I’m 14. I go to Don Bosco School in Liluah. This is the story of how I built a plant stress detector called SPANDANA, why it got selected as a Top 30 finalist out of 3,300+ entries at the Young Innovator Programme at IIT Kharagpur, and why a tiny piezoelectric disc eventually told me — very politely — that I was asking the wrong hardware to do the right job.
The annoying observation that started everything

Most plant research is chemical. You snip a leaf, run an assay, measure hormones, sequence gene expression. Accurate, slow, destructive. You have to take a piece of the plant to figure out what the plant is doing. It’s like diagnosing how someone is feeling by chopping off their finger.
The question that wouldn’t leave me alone was different: when something stresses a plant — sudden light, dry soil, a touch — what does the plant do physically, in the first few seconds?
Because energy goes somewhere. Internal pressure shifts. Tissue contracts. The stem itself moves in micro-amounts that no human can see.
If that’s true, you should be able to listen to it.
Not with a microphone — air is full of noise — but by touching the stem directly with something that turns mechanical movement into voltage. A piezoelectric disc. The same kind that sits in a singing birthday card.
I named the project SPANDANA. It means pulse or throb in Sanskrit. The rhythm of a living thing.
Building the thing
The setup is gloriously unimpressive, which is part of the point.
- One Arduino Uno
- One piezo disc, taped — with light medical tape, no glue, no piercing — to the base of a Balsam plant’s stem
- A soil moisture probe in the pot
- A DHT11 for temperature and humidity
- An LDR for ambient light
- A laptop running Python
Total cost: under ₹500. Total time to wire up: an afternoon.
The Uno reads every sensor every 50 milliseconds and streams the values over USB. The interesting work happens on the laptop.
Why a fixed threshold is a beautiful, useless idea
My first instinct was the obvious one: pick a number, call anything above that an event, ship it.
This fails immediately. Plants don’t have one “normal” — they drift through the day. A piezo signal that’s loud at 3am is barely above noise at noon. Pick a static threshold and you either get a thousand false alarms in the morning or hear nothing in the evening.
What worked was the opposite approach:
Don’t decide what’s loud. Learn what’s loud — right now.

The Python listener keeps an exponential moving average of the raw signal. Basically, a slow-updating “what does the recent past look like?” reference. Every new reading is compared not against some fixed cliff, but against its deviation from this living baseline. The threshold itself is dynamic — three standard deviations of the recent deviation history. Quiet phase? Even small bursts cross. Active phase? Threshold rises with the signal, only true outliers register.
A 0.4-second cooldown after each event prevents one real disturbance from registering as fifty echoing ones. That tiny number took an embarrassing amount of iteration.
When an event fires, the system glances at the other sensors and labels it: drought stress if soil’s bone dry, thermal if temperature just jumped, light shock if the LDR moved sharply, mechanical if none of the above. Five rules. Not clever. Deliberately not clever.
Then I actually ran experiments. Three things showed up.
I ran five protocols across days: healthy 24-hour baseline, three-day drought, sudden light shock, twelve hours of total darkness, and controlled touch.

What came out of the data was not random noise.
There were three distinct behavioural states.
Long quiet stretches. The plant looked metabolically chill.
Sudden bursts after stimuli. Within minutes of withholding water, the piezo went berserk.
Structured repeating motifs during long stress. This was the weird one. During the 48-hour drought run, the signal didn’t spike-and-fade. It kept producing patterns. Over 150 events per hour, sustained, structured. Like the plant had settled into a long internal monologue.
The result that actually validated everything
A reasonable skeptic — and you should be one — would now ask:

Is your piezo just picking up light leaking onto it? Heat? Vibration from your AC unit? Are you sure you’re reading the plant and not your room?
Yeah. Fair. So I ran the darkness test.
Sealed plant. Total darkness. Twelve hours. If the piezo was reacting to photons, the signal should have died. It didn’t. Activity continued, uninterrupted.
That doesn’t prove the signals are biological communication. But it kills the most embarrassing failure mode — that I was just measuring the room.
IIT Kharagpur, January 2026
I sent SPANDANA to the Young Innovator Programme. They got 3,300+ entries. They picked 30. I was one of them. Riddhi Dhar — credit where it’s due — designed the visualisation and the project deck that you’ve been seeing slides from.
I went to IIT Kharagpur in March and presented Round 2.
I didn’t make Round 3.
This is the part of the story I actually want to talk about, because the reason I didn’t advance is the reason this post exists.
A piezo disc politely told me to stop
Somewhere between Round 2 and trying to push the project further, I had to stare at something I’d been gently avoiding.
The plant communication literature talks about ultrasonic clicks — drought-stressed plants making cracking sounds in the 20 to 100 kilohertz range, generated when air bubbles snap inside their xylem. That’s the cool stuff. That’s what would actually let you say something specific about what kind of stress a plant is in.
To even sample that frequency band you need an analog-to-digital converter running well above 200 kilohertz.
An Arduino Uno’s analog read rate tops out around 9.6 kilohertz.
Not close. Not in the same neighbourhood. Not in the same time zone.
Anything I thought I might be seeing in the ultrasonic range was almost certainly aliasing — the digital equivalent of mistaking a fast-spinning wheel for one going backwards. The hardware physically cannot see what I wanted it to see. There is no version of this project, on this hardware, that can verify or classify those clicks. Not with cleverer Python. Not with more sensors. Not at all.
That moment was a real one. Specific. Useful. The kind of thing nobody teaches you in school but that you have to learn by walking into the wall yourself:
Hardware limits matter more than software cleverness.
When something doesn’t work, the temptation is always to add more code. Tune the threshold. Add another rule. Try a smarter algorithm. Sometimes the answer is: the bottleneck is at the bottom of the stack, and no amount of polish on top is going to fix it.
So I paused.
What I’d actually do if I came back to this
If-when-I revisit SPANDANA, the rebuild looks different.
A proper ultrasonic transducer instead of a piezo disc. An ESP32 or a Teensy instead of an Uno, sampling at hundreds of kilohertz. Labelled training data across multiple species — Balsam alone says nothing about banana plants or cacti. A real classifier, trained, not five hand-written if-statements with vibes. A sealed climate chamber so the only variable I’m changing is the one I think I’m changing.
That’s a different project. Bigger, slower, harder. Worth doing properly or not at all.
What I’d tell another school student
Build the smallest version of your idea you can build in a weekend. Get the data. Stare at it for an embarrassingly long time before you decide what it means. Be willing to discover that your sensor — not your code, not your math, not your idea — is the bottleneck. And be willing to say so out loud, because pretending it isn’t is how projects quietly die in public.
Plants are alive. Living systems respond. Whether what I detected was real internal communication or just the mechanical breathing of a stressed organism, I can’t tell you. What I can tell you is that something measurable was happening in those quiet hours before the leaves drooped — and almost no instruments are pointed at it.
That seems worth listening for.
I’ll get back to it eventually. With better hardware, this time.
SPANDANA was built by Ric Kanjilal, Grade 10, Don Bosco School, Liluah. Visualisation and deck design by Riddhi Dhar. Top 30 of 3,300+ entries — Young Innovator Programme (YIP), Round 2 finalist at IIT Kharagpur,January 2026.
Code, build instructions, and the full IIT KGP deck → https://github.com/RicKanjilal/SPANDANA
메타데이터
- post_id
- 449706dc2f46
- slug
- i-taped-a-sensor-to-a-plant-to-see-if-it-was-thirsty-then-a-piezo-disc-humbled-me-449706dc2f46
- url
- https://medium.com/@ric.kanjilal/i-taped-a-sensor-to-a-plant-to-see-if-it-was-thirsty-then-a-piezo-disc-humbled-me-449706dc2f46
- canonical_url
- https://medium.com/@ric.kanjilal/i-taped-a-sensor-to-a-plant-to-see-if-it-was-thirsty-then-a-piezo-disc-humbled-me-449706dc2f46
- author_url
- https://medium.com/@ric.kanjilal
- status
- ok
- fetched_at
- 2026-07-10 22:59:01