โปรเจคตรวจจับฝนด้วย Rain Sensor และ Arduino พร้อมระบบแจ้งเตือนด้วย Buzzer
หลักการทำงาน (How It Works)
โมดูลตรวจจับฝน (Rain Sensor) ทำงานโดยอาศัยการเปลี่ยนแปลงค่าความต้านทาน (Resistance)
เมื่อมีน้ำตกกระทบบนแผงเซ็นเซอร์ ค่าความต้านทานจะลดลง ซึ่ง Arduino จะทำหน้าที่อ่านค่าที่เปลี่ยนแปลงนี้
หากค่าที่อ่านได้ต่ำกว่าค่าที่กำหนด (Threshold) ระบบจะสั่งให้ Buzzer ทำงานเพื่อแจ้งเตือนว่ามีฝนตก
อุปกรณ์ที่ใช้ (Devices & Components)
- Arduino Uno R3 https://shopee.co.th/product/243007968/5725582932
บอร์ดไมโครคอนโทรลเลอร์หลัก ใช้สำหรับประมวลผลและควบคุมการทำงานของระบบ - สาย Jumper (Jumper Wires) https://shopee.co.th/product/243007968/7525582748
ใช้สำหรับเชื่อมต่อวงจรระหว่าง Arduino กับอุปกรณ์ต่าง ๆ - โมดูลตรวจจับฝน (Rain Sensor Module) https://shopee.co.th/product/243007968/6125581917
ใช้ตรวจจับน้ำหรือฝน โดยอาศัยการเปลี่ยนแปลงค่าความต้านทาน - Buzzer แบบ Passive 5V https://shopee.co.th/product/243007968/11291944810
ใช้สำหรับส่งเสียงแจ้งเตือนเมื่อมีการตรวจพบฝน
อุปกรณ์เสริม (แนะนำเพิ่มเติม)
- บอร์ดทดลอง (Breadboard) เพื่อความสะดวกในการต่อวงจร
- กล่องกันน้ำ สำหรับติดตั้งใช้งานภายนอก
- ตัวต้านทาน (Resistor) สำหรับปรับสัญญาณ (ถ้าจำเป็น)
ขั้นตอนที่ 1: ทำความเข้าใจ Rain Sensor
โมดูล Rain Sensor ประกอบด้วยแผงตรวจจับน้ำ (Detection Board) ซึ่งสามารถวัดปริมาณน้ำที่สัมผัสได้
โดยอาศัยหลักการเปลี่ยนแปลงค่าความต้านทาน ดังนี้:
- ค่าความต้านทานสูง → ไม่มีน้ำ หรือมีน้ำน้อย
- ค่าความต้านทานต่ำ → มีน้ำอยู่บนเซ็นเซอร์
ค่า Output ของเซ็นเซอร์จะอยู่ในช่วง 0 – 1023
- ค่าใกล้ 1023 → ไม่มีน้ำ
- ค่าลดลง → มีน้ำเพิ่มขึ้น
ในโปรเจคนี้กำหนดค่า Threshold = 102 หากค่าต่ำกว่านี้ จะถือว่ามีฝนตกและสั่งให้ Buzzer ทำงาน
ขั้นตอนที่ 2: การต่อวงจร (Circuit Connections)
การต่อ Rain Sensor กับ Arduino
- VCC → 5V (Arduino)
- GND → GND (Arduino)
- Signal → ขา A0 (Arduino)
การต่อ Buzzer กับ Arduino
- ขั้วบวก (VCC) → ขา Digital 9
- ขั้วลบ (GND) → GND
ขั้นตอนที่ 3: อัปโหลดโปรแกรม
ใช้โปรแกรม Arduino IDE ในการอัปโหลดโค้ดไปยังบอร์ด Arduino Uno
โค้ดโปรแกรม Arduino
ด้านล่างนี้เป็นตัวอย่างโค้ดสำหรับใช้ตรวจจับฝนด้วย Rain Sensor และแจ้งเตือนผ่าน Buzzer
#define RAIN_SENSOR A0
#define BUZZER 9
void setup() {
pinMode(RAIN_SENSOR, INPUT);
pinMode(BUZZER, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(RAIN_SENSOR);
Serial.println(sensorValue);
if (sensorValue < 102) { // Threshold สำหรับตรวจจับฝน
digitalWrite(BUZZER, HIGH);
} else {
digitalWrite(BUZZER, LOW);
}
delay(1000); // หน่วงเวลาเพื่อความเสถียร
}
คำอธิบายโค้ด
- #define RAIN_SENSOR A0 : กำหนดขาที่ใช้รับค่าสัญญาณจาก Rain Sensor
- #define BUZZER 9 : กำหนดขาที่ใช้ควบคุม Buzzer
- analogRead() : ใช้อ่านค่าจากเซ็นเซอร์ (ช่วง 0–1023)
- Serial.println() : แสดงค่าบน Serial Monitor
- if (sensorValue < 102) : ตรวจสอบว่ามีฝนตกหรือไม่
- digitalWrite() : สั่งเปิด/ปิด Buzzer
การปรับค่า Sensitivity
คุณสามารถปรับค่าความไวของการตรวจจับฝนได้ โดยแก้ค่า Threshold ในบรรทัดนี้:
if (sensorValue < 102)
- ค่าต่ำ → ตรวจจับเฉพาะตอนน้ำเยอะ
- ค่าสูง → ตรวจจับไวขึ้น (น้ำเล็กน้อยก็แจ้งเตือน)
ขั้นตอนที่ 4: ตรวจสอบค่าจากเซ็นเซอร์
- เชื่อมต่อ Arduino กับคอมพิวเตอร์ผ่านสาย USB
- เปิด Serial Monitor ใน Arduino IDE
- ดูค่าที่เซ็นเซอร์อ่านได้แบบเรียลไทม์
- ปรับค่า Threshold ตามความเหมาะสม
ขั้นตอนที่ 5: ทดสอบการทำงานของระบบ
- จ่ายไฟให้ Arduino ด้วยแหล่งจ่ายไฟ 7-12V
- จำลองฝนโดยหยดน้ำลงบนเซ็นเซอร์
- เมื่อมีน้ำ ค่าเซ็นเซอร์จะลดลง และ Buzzer จะทำงาน
- เมื่อเซ็นเซอร์แห้ง Buzzer จะหยุดทำงาน
การทดสอบและปรับค่า (Testing & Calibration)
- อัปโหลดโค้ดลง Arduino ผ่าน Arduino IDE
- เปิด Serial Monitor เพื่อดูค่าที่อ่านได้
- ทดสอบโดยการหยดน้ำลงบนเซ็นเซอร์
- ตรวจสอบว่า Buzzer ทำงานเมื่อค่าต่ำกว่า 102
- ปรับค่า Threshold ในโค้ดเพื่อให้เหมาะกับการใช้งานจริง
สรุป
โปรเจคนี้เป็นตัวอย่างการใช้งาน Rain Sensor ร่วมกับ Arduino เพื่อสร้างระบบแจ้งเตือนฝนตก
เหมาะสำหรับผู้เริ่มต้น และสามารถนำไปต่อยอดเป็นระบบ Smart Home หรือ IoT ได้ในอนาคต
