Untuk buat jemuran automatik sensor hujan, anda perlukan tiga bahagian sahaja: modul sensor hujan LM393 yang kesan titisan air, Arduino UNO yang baca isyaratnya, dan servo SG90 yang gulung tali jemuran masuk ke bawah bumbung sebaik sahaja hujan dikesan. Sambung wiring ikut jadual di bawah, upload kod contoh kami, dan model jemuran anda boleh selamatkan kain sendiri.
Macam mana jemuran automatik sensor hujan berfungsi?
Konsepnya mudah. Papan pengesan pada modul sensor hujan ada jalur tembaga yang bersilang β bila titisan air jatuh atas papan tu, air menyambungkan jalur-jalur ini dan modul LM393 hantar isyarat kepada Arduino UNO.
Arduino baca isyarat tu dan arahkan servo berputar. Servo kita jadikan winch β hujung tali jemuran diikat pada horn servo, jadi bila servo pusing, tali digulung dan jemuran ditarik masuk ke bawah bumbung. Bila papan sensor kering semula, servo pusing arah bertentangan dan jemuran keluar balik.
Ini projek klasik RBT dan FYP di Malaysia β padan sangat dengan cuaca kita yang boleh terus lebat pukul tiga petang. Semua komponen ada dalam senarai ini.
Senarai komponen
Alat tambahan (pilihan)
| Item | Price | Qty | |
|---|---|---|---|
XL830L Digital Multimeter with backlight Portable Multimeter Electronics ProjectMULTIME | RM25.95 |
Nak casing 3D-printed yang kemas? Dapatkan 3D printer di Smith3D.
Apa beza output AO dan DO pada modul sensor hujan?
Modul sensor hujan ada dua pin output, dan di sinilah ramai pelajar keliru:
| Output | Jenis isyarat | Maksud bacaan |
|---|---|---|
| AO | Analog, 0–1023 | Nilai berperingkat — makin basah papan, makin rendah/berubah nilainya. Sesuai kalau nak tahu tahap kebasahan. |
| DO | Digital, HIGH atau LOW | Jawapan ya/tidak sahaja. Pada kebanyakan modul, DO jadi LOW bila papan BASAH — logik terbalik daripada jangkaan kebanyakan orang. |
Untuk projek ini kita guna DO sahaja β kita cuma nak tahu “hujan atau tidak”. Ingat betul-betul: LOW bermaksud basah. Inilah punca nombor satu jemuran “bergerak sendiri” yang kami cerita di bawah. Potentiometer kecil atas modul pula untuk laraskan sensitiviti.

Macam mana nak sambung wiring sensor dan servo?
Jangan risau kalau ini kali pertama anda pegang jumper wire β keseluruhannya cuma enam sambungan. Dengan breadboard dan jumper wire, tak perlu solder apa-apa pun.
| Komponen | Pin / wayar | Sambung ke Arduino |
|---|---|---|
| Modul sensor hujan | VCC | 5V |
| GND | GND | |
| DO | Pin 2 | |
| Servo SG90 | Coklat / hitam | GND |
| Merah | 5V | |
| Oren / kuning | Pin 9 |

Kalau modul anda sampai dengan header pin yang belum dipasang, rujuk panduan kami tentang cara solder header pin dulu β kerja ringan sahaja.
Nota kuasa: untuk model ringan macam ini, kuasa USB atau bateri dah memadai. Jangan tarik beban berat dari pin 5V Arduino β kalau servo jitter atau board reset, itu tanda perlu bekalan 5V berasingan.
Kenapa servo SG90 360° sesuai dijadikan winch?
Servo SG90 360° ialah servo continuous rotation β dia tak bergerak ke sudut tertentu, sebaliknya berputar berterusan macam motor.
Dalam kod, write(0) dan write(180) bermaksud putar laju penuh ikut arah masing-masing, manakala write(90) bermaksud berhenti. Jarak gulungan tali dikawal dengan masa putaran β contohnya putar selama 3 saat, kemudian stop.

Kalau di tangan anda ada servo 180° positional pula, cara kawalnya guna sudut: write(0) untuk kedudukan jemuran keluar, write(180) untuk masuk. Tak pasti servo jenis mana yang anda ada? Baca panduan kami tentang beza servo 180° vs 270° vs 360° sebelum beli.
Kod Arduino penuh (dengan debounce)
Kod ini sahkan bacaan dua kali dengan jeda 500ms β supaya titisan terpercik tak terus trigger sistem. Lepas jemuran masuk, ia tunggu satu minit sebelum semak semula.
#include <Servo.h>
const int PIN_SENSOR = 2; // DO modul sensor hujan
const int PIN_SERVO = 9; // wayar isyarat servo (oren/kuning)
Servo winch; // servo SG90 360 darjah jadi winch gulung tali
bool jemuranDalam = false; // status semasa: true = jemuran dah masuk
void setup() {
pinMode(PIN_SENSOR, INPUT);
winch.attach(PIN_SERVO);
winch.write(90); // 90 = BERHENTI untuk servo 360 darjah
Serial.begin(9600);
}
// Sahkan bacaan 2 kali - elak satu titisan terpercik terus trigger
bool hujanDisahkan() {
if (digitalRead(PIN_SENSOR) == LOW) { // LOW = BASAH pada kebanyakan modul
delay(500); // tunggu setengah saat
if (digitalRead(PIN_SENSOR) == LOW) { // masih basah? barulah kira hujan
return true;
}
}
return false;
}
void tarikMasuk() {
winch.write(0); // putar laju penuh satu arah
delay(3000); // 3 saat putaran = jarak gulungan tali
winch.write(90); // berhenti
jemuranDalam = true;
Serial.println("Hujan dikesan - jemuran masuk");
}
void keluarSemula() {
winch.write(180); // putar arah bertentangan
delay(3000); // masa sama = jarak sama
winch.write(90); // berhenti
jemuranDalam = false;
Serial.println("Dah kering - jemuran keluar");
}
void loop() {
if (!jemuranDalam && hujanDisahkan()) {
tarikMasuk();
delay(60000); // tunggu 1 minit sebelum semak semula
}
else if (jemuranDalam && !hujanDisahkan()) {
keluarSemula();
delay(60000); // beri masa papan sensor betul-betul kering
}
delay(200);
}
Upload melalui Arduino IDE, kemudian buka Serial Monitor pada 9600 baud untuk tengok status. Titiskan sedikit air atas papan sensor untuk test β tak perlu tunggu hujan betul.
Kesilapan biasa yang kami nampak daripada pelanggan sebenar
“Jemuran terus masuk walaupun tak kena air”
“project anak saya ada masalah β bila power on, jemuran terus masuk walaupun tak kena air. kemungkinan apa masalahnya yaβ¦ wiring cable ataupun code yang salah?”
Ini soalan paling kerap sampai ke WhatsApp kami, dan biasanya salah satu daripada tiga punca ini:
- Logik DO terbalik dalam kod. Ramai tulis
if (digitalRead(PIN_SENSOR) == HIGH)untuk hujan, sedangkan pada kebanyakan modul LOW yang bermaksud basah. Kod di atas dah guna logik yang betul. - Potentiometer sensitiviti diset terlalu tinggi. Modul jadi terlalu sensitif β biasa berlaku dengan udara lembap kita. Pusing potentiometer perlahan-lahan sampai bacaan stabil bila papan kering.
- Papan sensor lembap atau kotor selepas hujan sebelumnya. Lap kering papan sensor dengan kain sebelum test semula.
Tak pasti wiring atau kod yang salah? Guna multimeter untuk semak sama ada isyarat pin DO berubah bila dititiskan air β kalau berubah, wiring okay, masalahnya di kod.
Rasa tak yakin nak sambung wayar? Boleh je
“cikgu saya cakap kalau tak tahu nak sambung wayar semua ni, tak payah buat”
Jangan give up β projek ini cuma ada enam sambungan wayar β ikut jadual wiring di atas satu persatu, tanda setiap baris yang dah siap, dan semak semula sebelum power on. Ramai pelajar yang mula dari kosong berjaya pada percubaan pertama.
Boleh ke guna sistem ini untuk jemuran sebenar di rumah?
Jujurnya: ini model untuk pembelajaran, bukan sistem jemuran sebenar. Servo SG90 hanya larat menggulung model ringan β kain basah sebenar jauh lebih berat daripada kemampuannya.
Untuk skala sebenar, anda perlukan motor DC berkuasa tinggi, motor driver, dan bekalan kuasa berasingan β bukan lagi kuasa dari pin Arduino. Kalau bekalan itu bervoltan tinggi, turunkan dengan buck converter β rujuk panduan cara set LM2596 buck converter ke 5V.
Nak markah RBT lebih tinggi?
Persembahan pun dikira markah. Casing 3D-printed nampak jauh lebih kemas berbanding kotak kadbod dan pita pelekat β kalau sekolah anda ada 3D printer, print casing untuk Arduino dan pemegang sensor. Demo jemuran keluar-masuk depan cikgu memang meninggalkan kesan.
FAQ
Kenapa jemuran saya masuk sendiri walaupun tak hujan?
Tiga suspek utama: logik DO terbalik dalam kod (LOW bermaksud basah, bukan HIGH), sensitiviti diset terlalu tinggi, atau papan sensor masih lembap daripada hujan sebelumnya. Lap kering papan dan semak satu persatu.
Servo 180° biasa boleh guna tak?
Boleh, cuma cara kawalnya lain β guna sudut, contohnya write(0) untuk kedudukan keluar dan write(180) untuk masuk, bukan masa putaran macam servo 360°.
Macam mana nak laraskan sensitiviti sensor hujan?
Pusing potentiometer kecil atas modul sedikit demi sedikit sambil test dengan beberapa titis air. Matlamat: DO stabil bila kering, bertukar pantas bila kena titisan.
Boleh guna output AO ganti DO?
Boleh β AO bagi bacaan analog 0 hingga 1023, jadi anda boleh set threshold kebasahan sendiri. Tapi untuk projek sekolah, DO dah cukup dan kodnya lebih ringkas.
Kenapa kod tunggu satu minit sebelum semak semula?
Sebab papan sensor biasanya masih basah beberapa ketika selepas hujan berhenti. Tanpa jeda ini, servo akan asyik tarik-keluar berulang kali setiap kali bacaan berubah sekejap.
Kemas kini terakhir Julai 2026. Tersangkut? Chat dengan kami di WhatsApp.



Arduino Uno Compatible SMD UNO R3 with Type B Cable - ATMEGA328P with CH340G-Microcontroller Project
Raindrops Sensor Water Droplets Sensor Module High Sensitivity For Arduino IOT Application
SG90 MG90 Tower Pro Micro Servo Motor 9g 180 360 Servo Motor for Arduino Robotic - SG90- 360Β°
MB102 Breadboard 170 400 830 Holes Breadboard Donut Board Arduino Prototype Multi Color - BREADBOARD (400 HOLES)
40pcs Dupont Wire 10cm 20cm 30cm for Breadboard DIY Experiment Jumper Wire Breadboard wire - DUPONT WIRE M-F 20CM
XL830L Digital Multimeter with backlight Portable Multimeter Electronics Project