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

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

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

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


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

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

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


มันทำงานยังไง?
สรุปง่ายๆ ก็คือ เซ็นเซอร์วัดความชื้นในดิน (Soil Moisture Sensor) จะตรวจค่าความชื้นแล้วส่งข้อมูลไปที่ Arduino ถ้าค่าที่วัดได้สูงกว่า 500 (แปลว่าดินเริ่มแห้ง) ระบบจะแสดงผลบนจอ OLED และ Serial Monitor ว่าต้นไม้ขาดน้ำ พร้อมกันนั้นก็ส่งสัญญาณไปที่รีเลย์ (Relay Module) เพื่อเปิดปั๊มน้ำให้ทำงานทันที
ระบบนี้ทำงานด้วยลอจิกแบบ **"ตรวจ-รอ-ทำ"** (Check-Wait-Action) แบบนี้เลย:
- เริ่มต้นระบบ (Setup): ตอนเปิดเครื่อง ระบบจะตั้งค่าเริ่มต้นให้จอ OLED แสดงคำว่า "Hello" ตามด้วยอนิเมชัน "Loading..." (จุดสามจุด) เพื่อเช็คสุขภาพระบบก่อนเริ่มทำงานจริง
- อ่านค่าจากเซ็นเซอร์ (Sensing): ในฟังก์ชัน `loop()` ระบบจะอ่านค่า Analog จากขา `A0` (ที่ต่อกับเซ็นเซอร์ดิน) ทุกๆ 1 วินาที แล้วแสดงค่าที่ได้บนจอ OLED
- เงื่อนไขการรดน้ำ (Threshold Logic): ตามคำสั่ง `const int dry = 500;` ถ้าค่าความชื้นที่อ่านได้ **มากกว่าหรือเท่ากับ 500** (ซึ่งหมายความว่าดินเริ่มแห้งสำหรับเซ็นเซอร์ตัวนี้):
- Arduino จะสั่งให้ขา 10 เป็นสถานะ `LOW` (เพราะรีเลย์นี้เป็น Active Low) เพื่อเปิดปั๊มน้ำ
- ปั๊มจะทำงานเป็นเวลา 2 วินาที (`delay(2000)`)
- หลังจากนั้น ระบบจะตั้งขา 10 เป็น `HIGH` เพื่อหยุดรดน้ำ และแสดงข้อความ "Done Watering" บนจอ
- ทำซ้ำ (Repeat Processing): หลังรดน้ำเสร็จ ระบบจะวนกลับไปตรวจค่าความชื้นอีกครั้ง ถ้าค่ายังไม่ต่ำกว่า 500 (แปลว่าดินยังชื้นไม่พอ) ระบบก็จะทำขั้นตอนเดิมซ้ำจนกว่าค่าความชื้นจะอยู่ในระดับที่ปลอดภัย



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


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