กลับหน้าหลัก
views
อ่านค่าเซ็นเซอร์ตรวจจับน้ำฝนด้วย Arduino
Last updated on

อ่านค่าเซ็นเซอร์ตรวจจับน้ำฝนด้วย Arduino


อ่านค่าเซ็นเซอร์ตรวจจับน้ำฝนด้วย Arduino

บทความนี้จะสอนใช้งานเซ็นเซอร์ตรวจจับน้ำฝน หรือ Rain Sensor กับบอร์ด Arduino เพื่อวัดระดับน้ำและตรวจจับฝน อธิบายการต่อวงจร การอ่านค่า analog และการนำค่าไปประยุกต์ใช้

อุปกรณ์ที่ต้องเตรียม

  • บอร์ด Arduino UNO R3
  • เซ็นเซอร์ตรวจจับน้ำฝน Rain / Water Detection Sensor Module
  • LED สีแดง 5mm พร้อมตัวต้านทาน 220Ω
  • บอร์ดทดลอง (Breadboard) MB-102 ขนาด 830 จุด
  • สายไฟจัมเปอร์ผู้-ผู้ ยาว 20cm
  • Power Adapter 9V 2A (ถ้าต้องการใช้งานแบบ Standalone)

หลักการทำงานของ Rain Sensor

เซ็นเซอร์ตรวจจับน้ำฝนมีลักษณะเป็นแผ่น PCB ที่มีขั้วไฟฟ้าสลับกัน เมื่อมีน้ำหยดลงบนผิวเซ็นเซอร์ น้ำจะทำหน้าที่เป็นตัวนำไฟฟ้าระหว่างขั้ว ทำให้ค่าความต้านทานลดลง ส่งผลให้ค่า analog ที่ Arduino อ่านได้ลดลงตามปริมาณน้ำที่สัมผัส

สถานะเซ็นเซอร์ค่า Analog (โดยประมาณ)
แห้งสนิท500 - 1023
มีหยดน้ำเล็กน้อย300 - 500
จุ่มน้ำลึก0 - 300

วงจรการต่อ

วงจรเดินสาย Rain Sensor กับ Arduino UNO แสดงการต่อสาย VCC, GND, A0 และ LED ที่ขา 13 บน Breadboard

การต่อสายมีดังนี้:

เซ็นเซอร์ตรวจจับน้ำฝน

  • VCC → 5V ของ Arduino
  • GND → GND ของ Arduino
  • A0 → A0 ของ Arduino

หลอด LED

  • ขาบวก (ขายาว) → ขา 13 ของ Arduino ผ่านตัวต้านทาน 220Ω
  • ขาลบ (ขาสั้น) → GND
รายละเอียดขาของ Rain Sensor Module พร้อมบอกว่าขาไหนคือ VCC, GND, DO, A0

โค้ดตัวอย่างอ่านค่า Analog และสั่งงาน LED

// กำหนดขาที่ใช้งาน
const int rainSensorPin = A0;  // ขาอ่านค่า Analog จากเซ็นเซอร์
const int ledPin = 13;          // ขาควบคุม LED

// ค่า threshold สำหรับตรวจจับน้ำ
// ปรับค่านี้ตามสภาพแวดล้อมจริง
const int threshold = 500;

void setup() {
  Serial.begin(9600);          // เปิด Serial Monitor ที่ baud 9600
  pinMode(ledPin, OUTPUT);
  pinMode(rainSensorPin, INPUT);
  
  Serial.println("Arduino Rain Sensor Ready");
  Serial.println("=========================");
}

void loop() {
  // อ่านค่า Analog จากเซ็นเซอร์ (0 - 1023)
  int sensorValue = analogRead(rainSensorPin);
  
  // แสดงค่าที่อ่านได้ใน Serial Monitor
  Serial.print("Sensor Value: ");
  Serial.println(sensorValue);
  
  // สถานะการตรวจจับน้ำ
  if (sensorValue > threshold) {
    Serial.println("Status: Dry");
    digitalWrite(ledPin, LOW);  // ปิด LED
  } else {
    Serial.println("Status: Water Detected");
    digitalWrite(ledPin, HIGH); // เปิด LED
  }
  
  delay(500);  // หน่วงเวลา 500 มิลลิวินาที
}

วิธีทดสอบ

  1. อัปโหลดโค้ดข้างบนลงบอร์ด Arduino UNO
  2. เปิด Serial Monitor (Tools → Serial Monitor) ตั้ง baud เป็น 9600
  3. สังเกตค่าที่แสดง ตอนนี้เซ็นเซอร์ยังแห้ง ค่าควรเกิน 500 หลอด LED ไม่ติด
  4. หยดน้ำลงบนแผ่นเซ็นเซอร์ ค่าจะลดลง LED จะติด
  5. จุ่มเซ็นเซอร์ลงในน้ำ ค่าจะลดลงต่ำมากขึ้น
Serial Monitor แสดงค่า sensorValue และ Status ขณะทดสอบเซ็นเซอร์แห้งและเปียก

การปรับแต่ง Threshold

ค่า threshold = 500 เป็นค่าเริ่มต้น แต่แต่ละเซ็นเซอร์และสภาพแวดล้อมอาจแตกต่างกัน แนะนำให้:

  • เปิด Serial Monitor ดูค่าตอนแห้งก่อน ใช้ค่านั้นเป็น reference
  • กำหนด threshold ต่ำกว่าค่าตอนแห้งประมาณ 50-100 หน่วย
  • ถ้าต้องการตรวจจับแค่ฝนหนัก ให้กำหนด threshold ต่ำลง

ประยุกต์ใช้งานจริง

หลักการเดียวกันนี้สามารถนำไปต่อยอดได้หลายแบบ เช่น:

  • ระบบรดน้ำอัตโนมัติ อ่านค่าความชื้นดินแทนเซ็นเซอร์วัดน้ำ
  • เตือนภัยน้ำรั่ว ติดตั้งเซ็นเซอร์ในจุดที่ต้องการ
  • ตรวจจับระดับน้ำในถัง ต่อขยายสายเซ็นเซอร์

สรุป

เซ็นเซอร์ตรวจจับน้ำฝนเป็นอุปกรณ์ง่าย ๆ แต่มีประโยชน์มากในงาน IoT และระบบอัตโนมัติ หลักการคืออ่านค่า analog เมื่อค่าลดลงต่ำกว่า threshold แสดงว่ามีน้ำสัมผัส การปรับ threshold ให้เหมาะกับการใช้งานจริงจะช่วยให้ระบบทำงานได้แม่นยำ

อยากทำโปรเจคแบบนี้?

รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน

หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก

จ้างทำโปรเจคเลย

ความคิดเห็น

Verified user reviews

รีวิวและความคิดเห็นจากผู้ใช้จริง

ล็อกอินด้วยบัญชีบนเว็บนี้แล้วให้คะแนนหรือคอมเมนต์ได้เลย ระบบเก็บผ่าน Supabase ไม่ต้องใช้ GitHub แล้ว

กำลังโหลดรีวิว...