โปรเจกต์ Arduino: เครื่องสูบน้ำทิ้งอัตโนมัติ แก้ปัญหาน้ำท่วมขังแบบง่ายๆ!

Automatic Water Pump Device

เคยเจอปัญหาน้ำท่วมขังในห้องใต้ดิน น้ำซึมเข้าบ้าน หรือมีแอ่งน้ำขังตามจุดต่างๆ ที่ต้องคอยเอาไดโว่ไปสูบออกเองบ่อยๆ ไหมครับ? วันนี้เราจะมาเปลี่ยนเรื่องน่าปวดหัวให้กลายเป็นโปรเจกต์สนุกๆ ด้วยการสร้าง เครื่องสูบน้ำทิ้งอัตโนมัติ (Automatic Water Pump Device) ที่สามารถตรวจจับระดับน้ำ ถ้าน้ำสูงเกินไปปั๊มจะทำงานเอง และพอน้ำแห้งปั๊มก็จะตัดการทำงานเองครับ!

โปรเจกต์นี้เหมาะสำหรับมือใหม่ที่เพิ่งเริ่มเล่นไมโครคอนโทรลเลอร์ เพราะใช้โค้ดและลอจิกที่เข้าใจง่ายสุดๆ ทำตามได้แน่นอนครับ ลุยกันเลย!

อุปกรณ์ที่ต้องใช้ (Hardware Components)

ของที่ต้องใช้มีไม่เยอะครับ (ใครกำลังหาซื้อบอร์ด อุปกรณ์ หรือเซนเซอร์คุณภาพดี เอาไปประยุกต์ร่วมกับชิ้นส่วน 3D Printing สวยๆ แวะไปช้อปปิ้งกันได้ที่ Globalbyte เลยครับ)

  • บอร์ด Arduino UNO x1
  • เซนเซอร์วัดระดับน้ำ Seeed Studio Grove - Water Sensor x2 (เราต้องใช้ 2 ตัวเพื่อจับระดับต่ำสุดและสูงสุด)
  • ปั๊มน้ำขนาดเล็ก Seeed Studio 12V DC Water Pump x1
  • โมดูลรีเลย์ DFRobot Gravity: Digital 5A Relay Module x1 (ทำหน้าที่เป็นสวิตช์เปิด/ปิดปั๊มน้ำ)
  • โมดูลจ่ายไฟ SparkFun Breadboard Power Supply 5V/3.3V x1

หลักการทำงานของระบบ (How it works)

หัวใจของโปรเจกต์นี้คือการติด Water Sensor ไว้ 2 ตำแหน่ง ครับ:

  • เซนเซอร์ตัวล่าง (Low Sensor): ติดไว้ที่ก้นหลุมหรือจุดที่น้ำลดลงต่ำสุด (เมื่อน้ำต่ำกว่าจุดนี้ ปั๊มจะหยุดทำงานเพื่อป้องกันมอเตอร์ไหม้)
  • เซนเซอร์ตัวบน (High Sensor): ติดไว้ที่ระดับความสูงที่เรารู้สึกว่า "น้ำเริ่มเยอะเกินไปแล้ว ต้องสูบออก"

ลอจิกการทำงาน: บอร์ด Arduino จะคอยเช็คเซนเซอร์ตลอดเวลา ถ้าวันไหนฝนตกน้ำเอ่อขึ้นมาจนแตะ "เซนเซอร์ตัวบน" Arduino จะสั่งให้ Relay ทำงานเพื่อจ่ายไฟ 12V ไปที่ปั๊มน้ำ ปั๊มก็จะดูดน้ำออกผ่านสายยางไปเรื่อยๆ จนระดับน้ำลดลงต่ำกว่า "เซนเซอร์ตัวล่าง" ปั๊มก็จะหยุดทำงานโดยอัตโนมัติครับ [Image of a relay module wiring diagram]

การต่อวงจร (Schematics)

Water Pump Schematics

การต่อสายไฟสามารถดูตามแผนผังวงจร (Schematic) ด้านบนได้เลยครับ โดยสรุปพินที่สำคัญเข้ากับบอร์ด Arduino UNO ตามโค้ดดังนี้:

  • Low Sensor: ต่อเข้าที่พิน D2
  • High Sensor: ต่อเข้าที่พิน D3
  • Relay Module: ต่อเข้าที่พิน D8 (ส่วนฝั่ง Output ของ Relay ให้นำไปตัดต่อสายไฟเลี้ยง 12V ของปั๊มน้ำ)

การเขียนโค้ด (Arduino Code)

โค้ดสำหรับโปรเจกต์นี้เขียนด้วย C/C++ บน Arduino IDE ครับ โค้ดสั้นและตรงไปตรงมามาก มีการใช้ตัวแปร pumpState เพื่อคอยจำว่าตอนนี้ปั๊มกำลังเปิดหรือปิดอยู่ สามารถกดปุ่ม Copy แล้วเอาไปอัปโหลดลงบอร์ดได้เลยครับ

C/C++ (Arduino)
const int lowSensor = 2;
const int highSensor = 3;
const int pump = 8;

bool pumpState = false;

void setup() {
  pinMode(lowSensor, INPUT);
  pinMode(highSensor, INPUT);
  pinMode(pump, OUTPUT);

  // เริ่มต้นให้ปั๊มปิดการทำงานไว้ก่อน
  digitalWrite(pump, LOW);

  Serial.begin(9600);
}

void loop() {
  int lowLevel = digitalRead(lowSensor);
  int highLevel = digitalRead(highSensor);

  // หากน้ำแตะเซนเซอร์ระดับสูง (High level) -> เปิดปั๊มน้ำ (ON)
  if (highLevel == HIGH && !pumpState) {
    digitalWrite(pump, HIGH);
    pumpState = true;
    Serial.println("Pump ON");
  }

  // หากน้ำลดลงต่ำกว่าเซนเซอร์ระดับต่ำ (Low level) -> ปิดปั๊มน้ำ (OFF)
  if (lowLevel == LOW && pumpState) {
    digitalWrite(pump, LOW);
    pumpState = false;
    Serial.println("Pump OFF");
  }

  delay(500); // หน่วงเวลาเช็คทุกๆ ครึ่งวินาที
}

เท่านี้คุณก็จะได้เครื่องสูบน้ำทิ้งอัตโนมัติไว้ใช้งานในบ้านหรือห้องใต้ดินแล้วครับ หมดห่วงเรื่องน้ำท่วมขังไปได้เลย!

อ้างอิงข้อมูลจาก: Globalbyteshop Blog

ต้นฉบับไอเดียโปรเจกต์โดย: petarytpremium | Original Link | ดาวน์โหลดไฟล์ Code ต้นฉบับ

*คำเตือน: เนื้อหานี้เป็นการสรุป อธิบายขยายความ และเรียบเรียงจากโปรเจกต์ต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีการปรับแต่งเพื่อให้ผู้เริ่มต้นเข้าใจหลักการทำงานได้ง่ายขึ้น หากต้องการตรวจสอบวงจรและโครงสร้างดั้งเดิมโดยละเอียด สามารถตรวจสอบได้ที่ ต้นฉบับภาษาอังกฤษ

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี