The cup model
A cup of soil, a cup of water, and the bare electronics. Simple on purpose: it let us test the idea fast and find the real faults early.
Sunlight in, water out. No one forgets the corn.
entry: why we started · dunia sebenar
Our school has a corn garden. Encik, our school gardener, looks after the whole compound: he trims the flowers, cuts the grass, tidies the grounds, and used to water the corn himself. With so many jobs, the corn sometimes gets less water than it needs, and in Miri's afternoon heat the leaves wilt in a day or two. We want to help Encik, never replace him. Our system is built for the next planting season.
Three moments from our interview at the corn garden:
"Kalau waktu saya terpaksa tebas rumput, untuk menyiram jagung itu saya terpaksa kasih tinggal."
"When I had to cut the grass, I had to leave the corn unwatered."
"Kalau tanah terlalu kering, dia akan cepat layu, dan jika dia sudah ada buah, buah dia tidak cantik."
"If the soil is too dry it wilts fast, and if it's fruiting, the cobs don't turn out well."
"Di waktu cuti sekolah, memang tidak ada orang yang akan siram dia. Kecuali kalau ada waktu budak cuti, saya yang kerja, saya akan pergi siram dia."
"During the school holidays, no one waters it. Unless I'm working while the kids are off — then I'll go and water it."
entry: the IDEAL engineering loop
We saw the corn wilting and asked why, and who it affects.
Empati + Mendefinisi masalahWe interviewed Encik in Bahasa Melayu and defined the real problem: the corn's watering is inconsistent because one caretaker looks after the whole school.
Mendefinisi masalahWe compared four ideas (timer, battery, solar + sensor, rainwater) and chose solar + sensor: the sun is free, and it only waters when the soil is dry.
Menjana ideaWe built v1 (a cup model), then v2 with a bamboo tower, a recycled tank, a sprinkler and an Arduino, and wrote the code over five versions.
PrototaipWe tested and fixed real problems: a backwards relay, a jittery pump, a mis-connected tube. Every fault became a fix.
Uji larientry: prototype v1 → v2 · uji lari
A cup of soil, a cup of water, and the bare electronics. Simple on purpose: it let us test the idea fast and find the real faults early.
Bamboo tower and canopy, recycled tank, misting sprinkler, protected electronics box and a drainage tray. The machine we would put in the cornfield.
| What we saw in v1 | What we changed in v2 |
|---|---|
| The water came out in single jets instead of spreading evenly | A misting nozzle and canopy spread it much wider. Not a fine mist yet: our pump is small, so a bigger pump is next on our list |
| Nothing held the water above the plant | A bamboo tower and canopy lift the sprinkler over the leaves (recycled, RM 0) |
| The electronics sat bare on the table | A recycled box protects the Arduino and relay |
| A drinking cup was too small to be a real tank | A recycled cylinder tank: no stored power, the tank stores water instead |
| Demo water spilled, and there was no safe off | A drainage tray + a 3-position switch: solar / OFF / spare battery |
One machine, two separate circuits that meet only at the relay:
💡 Why solar in the morning? Corn is best watered from 6 to 10am, exactly when the solar panel makes power. So the pump runs straight off the sun: no stored power, the tank is our battery. A small battery box lets the pump run when there is no strong sun, for example indoors during a demo, and the Arduino brain runs on its own 6V battery box so it stays steady.
entry: test, fail, fix, repeat
Every version changed because a real test surprised us, not because a plan said so. Tap through the story:
int m = analogRead(A0);
Serial.println(m);
// probe in air ≈ 1023 · pure water ≈ 390
First we only listened to the sensor. We tested air, dry soil, wet soil and water to learn its language before writing any rules.
if (m > 600) {
// dry → water it
} else {
// wet → wait
}
Then a rule: above 600 means dry, so turn the pump on. Simple, and it worked, on paper.
digitalWrite(relayPin, HIGH);
// we expected pump ON…
// the pump went OFF?!
We added the relay, and HIGH switched the pump off, not on. Our relay is wired in reverse: a real part beat our assumption.
digitalWrite(relayPin, LOW);
// LOW = pump ON (active-low)
We checked the relay's datasheet and flipped the logic. Lesson: never trust a template, test the real part.
if (moisture > 600 && !pumpState) {
digitalWrite(relayPin, LOW); // pump ON
} else if (moisture < 500 && pumpState) {
digitalWrite(relayPin, HIGH); // pump OFF
}
// between 500–600 → hold, no flicker
Near one threshold the pump flicked on and off. Two numbers with a gap between them let it finish the job calmly. We chose 600 and 500 ourselves, from 20+ tests.
⚙️ Thresholds: pump turns ON above 600 (dry) and OFF below 500 (wet). The 500–600 gap is the hold zone that stops the pump flickering.
entry: integrasi kurikulum · 49 SK/SP mapped verbatim
3 STEM + 3 non-STEM, all from the official Tahun 5 / Year 5 SJK curriculum documents. Every standard below is quoted from the official DSKP. Tap a subject to open it.
Matematik at SJK(C) schools is taught in Chinese; these are the official SJKC DSKP standards.
Pendidikan Moral at SJK(C) schools uses the SJKC DSKP with community-themed standards.
entry: wang · masa · sumber lain
Runs on solar, no mains electricity.
Waters only when the soil is actually dry.
Bamboo, recycled containers, borrowed parts.
Supports SDG 6, 7, 12 and Sarawak's PCDS 2030 push for renewable energy and growing more food.
Anyone can rebuild this for RM 79.58 in parts plus recycled containers. That was the point: a real fix a school can actually afford.
entry: our real logic, in your hands
Drag the slider to change how dry the soil is. Watch the pump turn on and off using the exact thresholds from our real Arduino code.
Eight quick questions about our system. Finish to earn your own certificate, by email, QR or PDF. It takes about a minute.
▶ Start the quizentry: written by you
Tap to rate, react, and leave a message. It updates live for everyone at the booth.
Live feedback is offline right now. Everything else on the page still works.
SJK Tukau, Miri, Sarawak