📚 Smart Farm เบื้องต้น ด้วย Arduino UNO R3
1. แนวคิดของโปรเจกต์ (Project Concept)
ปัจจุบันการทำเกษตรแบบดั้งเดิมอาจมีปัญหาเรื่องการรดน้ำไม่สม่ำเสมอ หรือสิ้นเปลืองเวลาในการเดินทางไปดูแลพืชพรรณด้วยตัวเอง ดังนั้น เราจึงสามารถประยุกต์ใช้เทคโนโลยีง่ายๆ เพื่อสร้าง ระบบรดน้ำอัตโนมัติ (Automatic Watering System) โดยใช้บอร์ด Arduino และเซนเซอร์เข้ามาช่วยได้
หลักการของโปรเจกต์นี้คือ เมื่อเซนเซอร์ตรวจพบว่าดินมีความแห้งถึงระดับที่กำหนด ระบบจะสั่งให้ปั๊มน้ำทำงานเพื่อรดน้ำต้นไม้โดยอัตโนมัติ และจะหยุดเมื่อดินมีความชื้นที่เหมาะสมแล้ว ซึ่งช่วยประหยัดเวลา เพิ่มความสะดวกสบาย และเพิ่มประสิทธิภาพในการดูแลพืชได้อย่างง่ายดาย
2. อุปกรณ์ที่ใช้ในโปรเจกต์ (Required Components)
✅ Arduino UNO R3 พร้อมสาย USB
✅ Soil Moisture Sensor (เซนเซอร์วัดความชื้นในดิน)
✅ ปั๊มน้ำ DC 5V Mini (แบบแช่)
✅ โมดูลรีเลย์ 1 ช่อง (Relay 5V Module)
✅ สายจัมเปอร์ (Jumper Wires)
✅ บอร์ดทดลอง (Breadboard) หรือสายไฟสำหรับเชื่อมต่อ
✅ แหล่งจ่ายไฟเสริม 5V (สำหรับปั๊มน้ำ, ถ้าจำเป็น)
✅ สายยางขนาดเล็ก และภาชนะใส่น้ำ
3. การต่อวงจร (Wiring Diagram)
3.1 การต่อเซนเซอร์และรีเลย์ (ฝั่งควบคุม)
อุปกรณ์
ขาบนอุปกรณ์
ต่อกับขาบน Arduino
Soil Moisture Sensor
VCC
5V
GND
GND
A0 (Analog Out)
A0
Relay Module
VCC
5V
GND
GND
IN (Input)
D7
3.2 การต่อปั๊มน้ำผ่านรีเลย์ (ฝั่งโหลด)
ข้อควรระวัง: ปั๊มน้ำ DC ใช้กระแสไฟสูง ไม่ควรต่อไฟ 5V จากบอร์ด Arduino โดยตรง เพราะอาจทำให้บอร์ดเสียหายได้ ควรใช้แหล่งจ่ายไฟ 5V แยกต่างหาก
ต่อสาย ขั้วบวก (+) จาก แหล่งจ่ายไฟ 5V แยก เข้าที่ขา COM ของรีเลย์
ต่อสายจากขา NO (Normally Open) ของรีเลย์ เข้าที่ ขั้วบวก (+) ของปั๊มน้ำ
ต่อสาย ขั้วลบ (-) ของปั๊มน้ำ เข้าที่ ขั้วลบ (-) ของ แหล่งจ่ายไฟ 5V แยก
(สำคัญมาก) ต่อสายจาก GND ของ Arduino ไปยัง ขั้วลบ (-) ของ แหล่งจ่ายไฟ 5V แยก ด้วย เพื่อให้มีกราวด์ร่วมกัน (Common Ground)
4. โค้ดโปรแกรม (Arduino Code)
// กำหนดขาที่เชื่อมต่อ
const int sensorPin = A0; // ขา Analog สำหรับ Soil Moisture Sensor
const int relayPin = 7; // ขา Digital สำหรับควบคุม Relay
// กำหนดค่าความชื้น (ปรับค่านี้ตามความเหมาะสม)
// ค่านี้คือจุดที่ตัดสินว่าดิน "แห้ง" และควรเริ่มรดน้ำ
// ยิ่งค่าสูง -> ดินยิ่งแห้ง
// ทดลองหาค่าที่เหมาะสมโดยดูจาก Serial Monitor
const int moistureThreshold = 700;
void setup() {
Serial.begin(9600); // เริ่มการสื่อสารแบบ Serial เพื่อดูค่า
pinMode(relayPin, OUTPUT); // กำหนดขา relay เป็น Output
// เริ่มต้นโดยสั่งให้ปั๊มหยุดทำงาน (Relay ส่วนใหญ่เป็น Active LOW)
digitalWrite(relayPin, HIGH);
}
void loop() {
// อ่านค่าความชื้นจากเซนเซอร์
int moistureValue = analogRead(sensorPin);
// แสดงผลค่าความชื้นที่อ่านได้ทาง Serial Monitor
Serial.print("Soil Moisture = ");
Serial.println(moistureValue);
// ตรวจสอบเงื่อนไขเพื่อเปิด-ปิดปั๊มน้ำ
if (moistureValue > moistureThreshold) {
// ถ้าค่าความชื้นสูงกว่าที่กำหนด (ดินแห้ง)
Serial.println("Soil is dry, turning pump ON");
digitalWrite(relayPin, LOW); // สั่งให้ Relay ทำงาน (ปั๊มเปิด)
} else {
// ถ้าค่าความชื้นต่ำกว่าที่กำหนด (ดินเปียก)
Serial.println("Soil is wet, turning pump OFF");
digitalWrite(relayPin, HIGH); // สั่งให้ Relay หยุดทำงาน (ปั๊มปิด)
}
// หน่วงเวลา 2 วินาทีก่อนที่จะอ่านค่าครั้งต่อไป
delay(2000);
}
5. หลักการทำงานและวิธีทดสอบ
หลักการทำงาน
Arduino จะอ่านค่าความชื้นในดินแบบอนาล็อก (0-1023) จากขา A0 ตลอดเวลา โดยค่าที่อ่านได้จะแปรผกผันกับความชื้น (ดินแห้งค่าสูง, ดินเปียกค่าต่ำ) จากนั้นนำค่าที่ได้มาเทียบกับค่า `moistureThreshold` ที่เราตั้งไว้ หากค่าที่อ่านได้สูงกว่า แสดงว่าดินแห้ง Arduino ก็จะส่งสัญญาณ LOW ไปยังรีเลย์ ทำให้รีเลย์ทำงานและจ่ายไฟให้ปั๊มน้ำเริ่มรดน้ำ เมื่อดินชุ่มชื้นขึ้น ค่าที่อ่านได้จะลดลงจนต่ำกว่า `moistureThreshold` ระบบก็จะสั่งให้ปั๊มหยุดทำงาน วนแบบนี้ไปเรื่อยๆ
วิธีทดสอบ
หาค่า Threshold: อัปโหลดโค้ดลงบอร์ดแล้วเปิด Serial Monitor ขึ้นมา ทดลองนำเซนเซอร์ไปจุ่มในดินที่แห้งสนิท สังเกตค่าที่ได้ จากนั้นนำไปจุ่มในดินที่เปียกชุ่ม สังเกตค่าอีกครั้ง แล้วเลือกค่ากลางๆ หรือค่าที่เหมาะสมมาตั้งเป็น `moistureThreshold` ในโค้ด
ทดสอบปั๊ม: ขณะที่เซนเซอร์อยู่ในอากาศ (สถานะแห้ง) ปั๊มน้ำควรจะทำงาน (รีเลย์มีเสียง "คลิก" และไฟติด) เมื่อนำเซนเซอร์ไปจุ่มน้ำ ปั๊มน้ำควรจะหยุดทำงาน
ติดตั้งใช้งานจริง: นำเซนเซอร์ไปปักในกระถางต้นไม้ และนำปั๊มน้ำใส่ในภาชนะบรรจุน้ำเพื่อเริ่มใช้งานระบบรดน้ำอัตโนมัติ
อ่าน
มากกว่า
น้อย