กลับไปหน้ารวมไฟล์
arduino-flower-watering-system-with-oled-display-e04ac1.md

เรื่องราวเบื้องหลัง

เอางี้... เริ่มแรกเลยพี่ทำโปรเจคนี้ขึ้นมาก็เพื่อประหยัดเวลารดน้ำต้นไม้ และเพื่อว่าเวลาเราออกไปไหนมาไหน ต้นไม้ของเราจะได้ไม่เหี่ยวตายเพราะขาดน้ำไงล่ะ

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

พูดสั้นๆ ให้เข้าใจง่าย

ดีไซน์ของมันถูกสร้างให้เรียบง่ายที่สุด โดยใช้ไมโครคอนโทรลเลอร์ Arduino Nano R3 เป็นตัวควบคุมหลัก ทำงานร่วมกับเซ็นเซอร์วัดความชื้นในดิน, รีเลย์โมดูล, จอแสดงผล OLED และปั๊มน้ำตัวจิ๋ว

ระบบรดน้ำต้นไม้อัตโนมัติ

มาดูวงจรกันหน่อย:

1. ปั๊มน้ำจิ๋ว 3-6V

พี่เลือกใช้ปั๊มน้ำตัวนี้เพราะมันสามารถใช้ไฟจาก Arduino ได้เลยนั่นคือขา 5V ดังนั้นไม่ต้องไปยุ่งกับแหล่งจ่ายไฟภายนอกให้วุ่นวาย แถมประสิทธิภาพก็เกินตัว โมเดลที่พี่ใช้สามารถปั๊มน้ำได้ 100 ลิตรต่อชั่วโมงเลยทีเดียว ตัวปั๊มกินไฟน้อยและรับไฟ 5V จาก Arduino ได้โดยตรง (หรือผ่านรีเลย์เพื่อความปลอดภัยของวงจร) อัตราการไหลประมาณ 100 ลิตร/ชม. ซึ่งเพียงพอสำหรับกระถางต้นไม้ขนาดเล็กถึงกลางสบายๆ

ปั๊มน้ำจิ๋ว

2. เซ็นเซอร์วัดความชื้นในดินแบบ I2C

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

เซ็นเซอร์วัดความชื้นในดินแบบ I2C

เราสามารถเช็คข้อมูลความชื้นได้ทั้งใน Serial Monitor และบนจอ OLED เลย สะดวกสุดๆ

หน้าต่าง Serial Monitor
จอแสดงผล OLED (เฟิร์น - ต้นไม้ทดลองของโปรเจคนี้)

3. รีเลย์โมดูล

ปั๊มน้ำของเราจะเปิด-ปิด ผ่านรีเลย์โมดูลที่น่าเชื่อถือตัวนี้ พี่ใช้มันเพราะเหตุผลสำคัญคือ ถ้าวันไหนเราอยากอัพเกรดไปใช้ปั๊มที่กินไฟมากขึ้น (เช่น 12V หรือ 220V) เราก็แค่ต่อแหล่งจ่ายไฟภายนอกเพิ่มเข้าไปได้เลย โดยไม่ต้องไปยุ่งกับระบบควบคุมหลัก โครงสร้างเดิมยังใช้ได้อยู่ รีเลย์ทำหน้าที่เป็นสวิตช์อิเล็กทรอนิกส์ คอยแยกวงจรควบคุม (Arduino) ออกจากวงจรกำลัง (ปั๊มน้ำ) เพื่อป้องกันการรบกวนและกระแสไฟกระชาก

รีเลย์โมดูล (1 ช่อง)

4. จอแสดงผล OLED

สำหรับแสดงข้อมูลพี่ใช้จอ OLED ขนาด 128x32 พิกเซล ไดรเวอร์เป็น SSD1306 ใช้โปรโตคอล I2C ต่อสายแค่ 2 เส้น (SDA กับ SCL) ประหยัดขา Arduino ได้เยอะเลย จอนี้จะแสดงสถานะต่างๆ แบบเรียลไทม์ เช่น "Hello", "Loading" และค่าความชื้นปัจจุบัน ในการโปรแกรมจอนี้ เราใช้ไลบรารี Adafruit_GFX และ Adafruit_SSD1306 ช่วย ทำให้โค้ดสั้นและเข้าใจง่ายขึ้นมาก

จอ oled (128x32)

5. ตัวเคส (Case)

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

เคส (ด้านหน้า)
เคส (ด้านข้าง)

มันทำงานยังไง?

สรุปง่ายๆ ก็คือ เซ็นเซอร์วัดความชื้นในดิน (Soil Moisture Sensor) จะตรวจค่าความชื้นแล้วส่งข้อมูลไปที่ Arduino ถ้าค่าที่วัดได้สูงกว่า 500 (แปลว่าดินเริ่มแห้ง) ระบบจะแสดงผลบนจอ OLED และ Serial Monitor ว่าต้นไม้ขาดน้ำ พร้อมกันนั้นก็ส่งสัญญาณไปที่รีเลย์ (Relay Module) เพื่อเปิดปั๊มน้ำให้ทำงานทันที

ระบบนี้ทำงานด้วยลอจิกแบบ **"ตรวจ-รอ-ทำ"** (Check-Wait-Action) แบบนี้เลย:

  1. เริ่มต้นระบบ (Setup): ตอนเปิดเครื่อง ระบบจะตั้งค่าเริ่มต้นให้จอ OLED แสดงคำว่า "Hello" ตามด้วยอนิเมชัน "Loading..." (จุดสามจุด) เพื่อเช็คสุขภาพระบบก่อนเริ่มทำงานจริง
  2. อ่านค่าจากเซ็นเซอร์ (Sensing): ในฟังก์ชัน `loop()` ระบบจะอ่านค่า Analog จากขา `A0` (ที่ต่อกับเซ็นเซอร์ดิน) ทุกๆ 1 วินาที แล้วแสดงค่าที่ได้บนจอ OLED
  3. เงื่อนไขการรดน้ำ (Threshold Logic): ตามคำสั่ง `const int dry = 500;` ถ้าค่าความชื้นที่อ่านได้ **มากกว่าหรือเท่ากับ 500** (ซึ่งหมายความว่าดินเริ่มแห้งสำหรับเซ็นเซอร์ตัวนี้):
    • Arduino จะสั่งให้ขา 10 เป็นสถานะ `LOW` (เพราะรีเลย์นี้เป็น Active Low) เพื่อเปิดปั๊มน้ำ
    • ปั๊มจะทำงานเป็นเวลา 2 วินาที (`delay(2000)`)
    • หลังจากนั้น ระบบจะตั้งขา 10 เป็น `HIGH` เพื่อหยุดรดน้ำ และแสดงข้อความ "Done Watering" บนจอ
  4. ทำซ้ำ (Repeat Processing): หลังรดน้ำเสร็จ ระบบจะวนกลับไปตรวจค่าความชื้นอีกครั้ง ถ้าค่ายังไม่ต่ำกว่า 500 (แปลว่าดินยังชื้นไม่พอ) ระบบก็จะทำขั้นตอนเดิมซ้ำจนกว่าค่าความชื้นจะอยู่ในระดับที่ปลอดภัย
serial port monitor

หลังจากรดน้ำครบ 2 วินาที เซ็นเซอร์จะตรวจสอบอีกครั้งว่าความชื้นเหมาะสมหรือยัง ถ้ายังไม่เหมาะสมก็จะทำซ้ำจนกว่าจะสำเร็จ ส่วนเมื่อค่าความชื้นลดลงมาที่น้อยกว่าหรือเท่ากับ 500 ระบบก็จะหยุดรดน้ำ และทุกๆ ไม่กี่วินาทีจอ OLED จะแสดงข้อมูลความชื้นในดินให้เราดู

serial port monitor

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

แค่นี้แหละน้อง ง่ายใช่ไหม? โปรเจคนี้เหมาะมากสำหรับมือใหม่เพราะครอบคลุมพื้นฐานสำคัญของ Embedded Systems หลายอย่าง ทั้งการอ่านค่า Analog การควบคุมเอาต์พุตผ่านรีเลย์ และการสื่อสารกับจอผ่าน I2C เรียกว่าเรียนจบโปรเจคนี้ ได้พื้นฐานไปเพียบ สู้งานนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "ag2max"
category: ""
components:
  - "1x Jumper wires (generic)"
  - "1x Relay Module (Generic)"
  - "1x USB-A to B Cable"
  - "1x oled display ssd1306 128x32 with i2c(blue)"
  - "1x Breadboard (generic)"
  - "1x Tape, Electrical"
  - "1x Hot glue gun (generic)"
  - "1x Soldering iron (generic)"
  - "1x Arduino Nano R3"
  - "1x soil moisture sensor fc-28"
  - "1x Solder Wire, Lead Free"
description: "มาปั้นระบบรดน้ำต้นไม้แบบอัตโนมัติสุดตึงกัน! ใช้ Arduino ควบคุมมอเตอร์ปั๊มน้ำ ทำงานตามเวลาหรือค่าความชื้นจากเซนเซอร์ แล้วมาโชว์สเตตัสแบบวัยรุ่นบนจอ OLED เทพๆ ไปเลย งานนี้จัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/37584980-556e-47dc-931d-3eaf213916b1.ino"
  - "https://projects.arduinocontent.cc/37584980-556e-47dc-931d-3eaf213916b1.ino"
encryptedPayload: "U2FsdGVkX1+Mhlo+V/mYY/BTozFQGtdKxfq9mV6npioFIFRiGvdnsZNYMmkTatRiVcINm0kRhCEbgUUP9M7htBHfu432xcZjq7MRIAxOaMs="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-flower-watering-system-with-oled-display-e04ac1_cover.jpg"
lang: "en"
likes: 1
passwordHash: "f7336712c200cd251956c006e0808deb2600a3afadf378cc9321144c1cc694fd"
price: 1499
seoDescription: "Simple Arduino flower watering system with OLED display for real-time plant irrigation monitoring and automation."
tags:
  - "nano"
  - "watering"
  - "oled"
  - "i2c"
  - "relay"
  - "arduino"
  - "home automation"
  - "plants"
title: "ระบบรดน้ำต้นไม้อัตโนมัติ Arduino กับจอ OLED งานง่ายแต่หล่อ!"
tools: []
videoLinks: []
views: 5117