หน้าเว็บตัวอย่างโครงงาน IoT สำหรับนักศึกษา ตั้งแต่การวิเคราะห์ปัญหา ออกแบบ Requirement เลือกอุปกรณ์ ต่อวงจร เขียนโปรแกรม สร้าง Dashboard ทดสอบระบบ จนถึงการส่งมอบ Prototype ที่ใช้งานได้จริง
โครงงานนี้พัฒนาระบบตรวจวัดความชื้นในดินแบบต่อเนื่อง และควบคุมการรดน้ำต้นไม้โดยอัตโนมัติ เมื่อค่าความชื้นต่ำกว่าเกณฑ์ที่กำหนด ระบบจะสั่งเปิดปั๊มน้ำผ่านรีเลย์ จากนั้นบันทึกสถานะและเวลาในการรดน้ำ พร้อมแสดงผลผ่าน Dashboard หรือแอปพลิเคชัน เช่น Blynk, ThingSpeak หรือ Web Dashboard
ภาพด้านล่างแสดงลำดับการทำงานของระบบรดน้ำต้นไม้อัจฉริยะ ตั้งแต่การตรวจวัดความชื้นในดิน การประมวลผลด้วย ESP32/Arduino การสั่งรีเลย์และปั๊มน้ำ ไปจนถึงการแสดงผลบน Dashboard
ภาพนี้แสดงแนวคิดการออกแบบกล่องต้นแบบสำหรับติดตั้งเซ็นเซอร์ DHT22, บอร์ด ESP32/NodeMCU, หน้าจอ OLED, ไฟ LED แสดงสถานะ และ Buzzer เพื่อใช้เป็นอุปกรณ์วัดอุณหภูมิและความชื้นในห้องเรียนแบบ Real-time
ใช้ช่องรับอากาศบริเวณด้านหน้าหรือด้านบนของกล่อง เพื่อให้ DHT22 อ่านค่าอุณหภูมิและความชื้นได้แม่นยำขึ้น
แสดงค่าอุณหภูมิและความชื้นบน OLED พร้อมไฟ LED สีเขียว/เหลือง/แดง เพื่อบอกสถานะสภาพอากาศในห้องเรียน
ใช้ ESP32/NodeMCU ส่งข้อมูลผ่าน Wi‑Fi ไปยัง Dashboard และสามารถแจ้งเตือนด้วย Buzzer เมื่อค่าเกินช่วงที่กำหนด
การรดน้ำต้นไม้ด้วยมือมักเกิดปัญหารดน้ำมากเกินไปหรือน้อยเกินไป ผู้ดูแลไม่สามารถเฝ้าดูสภาพดินได้ตลอดเวลา โดยเฉพาะช่วงวันหยุดหรือช่วงที่ไม่มีผู้ดูแล ส่งผลให้พืชขาดน้ำ รากเน่า หรือสิ้นเปลืองน้ำโดยไม่จำเป็น
ใช้เซ็นเซอร์วัดความชื้นในดินเพื่อตรวจวัดค่าจริง แล้วใช้ไมโครคอนโทรลเลอร์ตัดสินใจเปิด–ปิดปั๊มน้ำตามเงื่อนไข พร้อมส่งข้อมูลไปยัง Dashboard เพื่อให้ผู้ใช้ดูสถานะย้อนหลัง ตั้งค่าเกณฑ์ และตรวจสอบการทำงานได้สะดวก
อ่านค่าความชื้นในดินแบบต่อเนื่อง และแปลงค่าให้อยู่ในรูปเปอร์เซ็นต์เพื่อเข้าใจง่าย
สั่งเปิด–ปิดปั๊มน้ำผ่านรีเลย์ตามเกณฑ์ความชื้นที่กำหนด ลดการรดน้ำผิดเวลา
แสดงสถานะดิน ปั๊มน้ำ เวลาในการรดน้ำ และกราฟค่าความชื้นผ่าน Dashboard
เก็บข้อมูลย้อนหลัง วิเคราะห์ความสม่ำเสมอของการรดน้ำ และสรุปผลการทดลอง
กำหนดขอบเขตให้เหมาะกับเวลาเรียนและงบประมาณ โดยเน้นระบบที่สามารถสาธิตได้จริง วัดค่าได้จริง และมีหลักฐานการทดสอบชัดเจน
| รายการ | รายละเอียดที่ควรทำ |
|---|---|
| พื้นที่ทดลอง | กระถางต้นไม้ 1–3 กระถาง หรือแปลงทดลองขนาดเล็ก พร้อมระบุชนิดพืชและสภาพแวดล้อม |
| ค่าที่วัด | ค่าความชื้นดินแบบ Raw Analog และค่าที่แปลงเป็นเปอร์เซ็นต์ อาจเพิ่มอุณหภูมิ/ความชื้นอากาศเป็นฟังก์ชันเสริม |
| เงื่อนไขควบคุม | หากความชื้นต่ำกว่าเกณฑ์ เช่น 35% ให้เปิดปั๊มน้ำ 5–10 วินาที แล้วหน่วงเวลาตรวจซ้ำเพื่อป้องกันปั๊มทำงานถี่เกินไป |
| การแสดงผล | แสดงสถานะผ่าน Serial Monitor, จอ LCD/OLED หรือ Dashboard ออนไลน์ เช่น Blynk/ThingSpeak/Web Dashboard |
| ความปลอดภัย | แยกส่วนไฟเลี้ยงปั๊มน้ำกับบอร์ดควบคุม ใช้กล่องกันน้ำ จัดสายไฟให้เรียบร้อย และไม่ให้วงจรสัมผัสน้ำโดยตรง |
| หมวด | รายการ | หน้าที่ในระบบ | ทางเลือก/หมายเหตุ |
|---|---|---|---|
| ไมโครคอนโทรลเลอร์ | ESP32 หรือ Arduino Uno R3 | อ่านค่าเซ็นเซอร์ ประมวลผลเงื่อนไข และสั่งงานรีเลย์/ปั๊มน้ำ | แนะนำ ESP32 หากต้องการ Wi‑Fi |
| เซ็นเซอร์ | Soil Moisture Sensor แบบ Capacitive หรือ Resistive | วัดความชื้นในดิน โดยค่า Analog เปลี่ยนตามระดับน้ำในดิน | แบบ Capacitive ทนการกัดกร่อนได้ดีกว่า |
| อุปกรณ์ควบคุม | Relay Module 1 Channel หรือ MOSFET Driver | ทำหน้าที่เป็นสวิตช์ควบคุมปั๊มน้ำจากบอร์ด | ตรวจสอบ Active LOW/Active HIGH |
| อุปกรณ์จ่ายน้ำ | Mini DC Pump, สายยาง, ถังน้ำ, หัวน้ำหยด | ส่งน้ำจากถังไปยังกระถางเมื่อระบบสั่งรดน้ำ | ใช้ไฟ 5V/12V ตามรุ่นปั๊ม |
| แหล่งจ่ายไฟ | Adapter 5V/12V, USB Power, Breadboard Power Supply | จ่ายไฟให้บอร์ดและปั๊มน้ำอย่างเสถียร | ควรแยกไฟปั๊มกับบอร์ดเมื่อปั๊มกินกระแสสูง |
| แสดงผล | LCD 16x2 I2C หรือ OLED 0.96 นิ้ว | แสดงค่าความชื้น สถานะดิน และสถานะปั๊มน้ำหน้าชุดทดลอง | เป็นฟังก์ชันเสริม |
| Dashboard | Blynk, ThingSpeak, Google Sheet หรือ Web Dashboard | ดูข้อมูลออนไลน์ บันทึกประวัติ และแสดงกราฟย้อนหลัง | เลือกอย่างน้อย 1 ระบบ |
| เครื่องมือพัฒนา | Arduino IDE, Serial Monitor, Library WiFi/Blynk/HTTP | เขียนโปรแกรม ทดสอบการอ่านค่า และเชื่อมต่อระบบออนไลน์ | บันทึกเวอร์ชัน Library ในรายงาน |
ระบบแบ่งเป็น 4 ชั้นหลัก ได้แก่ ชั้นตรวจวัด ชั้นประมวลผล ชั้นควบคุมอุปกรณ์ และชั้นแสดงผล/บันทึกข้อมูล
Soil Moisture Sensor ตรวจวัดค่าความชื้นดินและส่งค่า Analog ไปยังบอร์ด
ESP32/Arduino อ่านค่า แปลงเปอร์เซ็นต์ เปรียบเทียบกับ Threshold และตัดสินใจ
Relay/MOSFET ควบคุม Mini Pump เพื่อรดน้ำตามเงื่อนไขที่กำหนด
Dashboard แสดงข้อมูลปัจจุบัน กราฟย้อนหลัง สถานะปั๊ม และประวัติการรดน้ำ
| อุปกรณ์ | ขาอุปกรณ์ | ต่อกับบอร์ด | หมายเหตุ |
|---|---|---|---|
| Soil Moisture Sensor | VCC | 3V3 หรือ 5V | ESP32 แนะนำ 3.3V เพื่อลดความเสี่ยงขา Analog |
| Soil Moisture Sensor | GND | GND | กราวด์ร่วมกับบอร์ด |
| Soil Moisture Sensor | A0 / AO | GPIO34 หรือ A0 | อ่านค่า Analog |
| Relay Module | IN | GPIO26 หรือ D7 | ใช้ควบคุมเปิด–ปิดปั๊ม |
| Relay Module | VCC/GND | 5V/GND | บางรุ่นใช้ไฟ 5V |
| Mini Pump | สายไฟ +/− | ผ่าน COM/NO ของ Relay | ห้ามต่อปั๊มเข้าขาบอร์ดโดยตรง |
กระบวนการหลักของระบบเริ่มจากอ่านค่าเซ็นเซอร์ ประมวลผลตามเกณฑ์ สั่งงานปั๊มน้ำ บันทึกเหตุการณ์ และแสดงผลให้ผู้ใช้ตรวจสอบ
เชื่อมต่อ Wi‑Fi ตรวจสอบสถานะเซ็นเซอร์ รีเลย์ และกำหนดค่าเริ่มต้น เช่น Threshold = 35%
อ่านค่า Analog หลายครั้งแล้วเฉลี่ย เพื่อลด Noise จากเซ็นเซอร์ จากนั้นแปลงเป็นเปอร์เซ็นต์
จำแนกเป็น ดินแห้ง / ปกติ / ชื้น ตามช่วงค่าที่กำหนด เช่น ต่ำกว่า 35% คือดินแห้ง
ถ้าดินแห้งให้เปิดปั๊มตามระยะเวลาที่กำหนด แล้วปิดปั๊มและพักระบบก่อนตรวจซ้ำ
ส่งค่าความชื้น สถานะปั๊ม เวลา และข้อความแจ้งเตือนไปยัง Blynk/ThingSpeak/Web API
บันทึกประวัติการรดน้ำและแจ้งเตือนเมื่อดินแห้งมาก ปั๊มทำงานผิดปกติ หรือถังน้ำหมดถ้ามีเซ็นเซอร์เสริม
ตัวอย่างนี้เป็นโค้ดแนวคิดสำหรับ ESP32/Arduino นักศึกษาสามารถปรับขา อัตราการอ่านค่า และการส่งข้อมูลขึ้น Dashboard ตามอุปกรณ์จริงที่ใช้
// ตัวอย่าง Logic ระบบรดน้ำต้นไม้อัจฉริยะ
const int soilPin = 34; // ขา Analog สำหรับ ESP32
const int relayPin = 26; // ขารีเลย์ควบคุมปั๊มน้ำ
const int threshold = 35; // เกณฑ์ความชื้นขั้นต่ำ (%)
const int pumpTime = 7000; // เปิดปั๊ม 7 วินาที
// ค่าคาลิเบรตตัวอย่าง ต้องวัดจากเซ็นเซอร์จริง
const int dryValue = 3200; // ค่าเมื่อดินแห้ง
const int wetValue = 1200; // ค่าเมื่อดินชื้นมาก
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // รีเลย์บางรุ่น Active LOW: HIGH = ปิด
}
int readSoilPercent() {
long total = 0;
for (int i = 0; i < 10; i++) {
total += analogRead(soilPin);
delay(50);
}
int raw = total / 10;
int percent = map(raw, dryValue, wetValue, 0, 100);
return constrain(percent, 0, 100);
}
void loop() {
int moisture = readSoilPercent();
Serial.print("Soil Moisture: ");
Serial.print(moisture);
Serial.println("%");
if (moisture < threshold) {
Serial.println("Status: DRY - Pump ON");
digitalWrite(relayPin, LOW); // เปิดปั๊ม กรณี Active LOW
delay(pumpTime);
digitalWrite(relayPin, HIGH); // ปิดปั๊ม
Serial.println("Pump OFF - Wait for soil absorption");
delay(30000); // พักให้ดินดูดซึมน้ำก่อนตรวจซ้ำ
} else {
Serial.println("Status: NORMAL - Pump OFF");
digitalWrite(relayPin, HIGH);
delay(5000);
}
// เพิ่มคำสั่งส่งข้อมูลไปยัง Blynk / ThingSpeak / Web API ได้ที่นี่
}Dashboard ควรทำให้ผู้ใช้เข้าใจสถานะของระบบได้ทันที ทั้งค่าปัจจุบัน ประวัติการรดน้ำ และการแจ้งเตือน
| ข้อมูลที่ควรแสดง | ตัวอย่างรูปแบบ | ประโยชน์ |
|---|---|---|
| ค่าความชื้นดินปัจจุบัน | ตัวเลขเปอร์เซ็นต์ + Gauge | ช่วยให้ผู้ใช้รู้ทันทีว่าดินแห้งหรือชื้น |
| สถานะปั๊มน้ำ | ON/OFF พร้อมเวลาที่ทำงาน | ตรวจสอบว่าระบบสั่งงานอุปกรณ์ถูกต้อง |
| ประวัติการรดน้ำ | ตารางวันเวลาและระยะเวลาปั๊มทำงาน | ใช้วิเคราะห์ความถี่และพฤติกรรมการรดน้ำ |
| กราฟย้อนหลัง | Line Chart รายชั่วโมง/รายวัน | แสดงแนวโน้มความชื้นก่อนและหลังรดน้ำ |
| การตั้งค่า | Slider หรือ Input กำหนด Threshold | ผู้ใช้ปรับเกณฑ์ตามชนิดพืชได้ |
ควรมีหลักฐานการทดสอบทั้ง Sensor, Relay, Pump, Dashboard และการทำงานแบบรวมระบบ
| กรณีทดสอบ | ขั้นตอน | ผลที่คาดหวัง | หลักฐานที่ควรเก็บ |
|---|---|---|---|
| ทดสอบเซ็นเซอร์ดินแห้ง | นำเซ็นเซอร์วัดในดินแห้งหรือวัสดุปลูกแห้ง | ค่าเปอร์เซ็นต์ต่ำกว่าเกณฑ์ และระบบแสดงสถานะ “ดินแห้ง” | ภาพ Serial Monitor / Dashboard |
| ทดสอบเซ็นเซอร์ดินชื้น | รดน้ำดินให้ชื้นแล้ววัดซ้ำ | ค่าเปอร์เซ็นต์เพิ่มขึ้น และปั๊มน้ำไม่ทำงาน | ตารางเปรียบเทียบก่อน–หลังรดน้ำ |
| ทดสอบรีเลย์และปั๊ม | สั่งเปิดปิดปั๊มจากโปรแกรม | ปั๊มเปิดและปิดตรงตามเวลาที่กำหนด | วิดีโอสาธิต |
| ทดสอบระบบอัตโนมัติ | ตั้ง Threshold แล้วปล่อยให้ระบบตัดสินใจเอง | เมื่อดินแห้ง ระบบเปิดปั๊ม และหลังรดน้ำค่าความชื้นเพิ่มขึ้น | กราฟค่าความชื้นและ Log การรดน้ำ |
| ทดสอบ Dashboard | เชื่อมต่อ Wi‑Fi แล้วส่งข้อมูลต่อเนื่อง | Dashboard แสดงค่าปัจจุบันและประวัติได้ถูกต้อง | ภาพหน้าจอ Dashboard |
| ทดสอบความปลอดภัย | ตรวจสอบสายไฟ แหล่งจ่าย และตำแหน่งน้ำ | ไม่มีน้ำสัมผัสวงจร ไม่มีสายหลวม และระบบไม่ร้อนผิดปกติ | ภาพการจัดวางอุปกรณ์ |
แบ่งงานเป็นรอบสั้น ๆ เพื่อให้ทีมตรวจความคืบหน้าได้ต่อเนื่องและลดความเสี่ยงตอนรวมระบบ
| ช่วงเวลา | กิจกรรม | ผลลัพธ์ที่ต้องได้ |
|---|---|---|
| สัปดาห์ที่ 1 | วิเคราะห์ปัญหา กำหนด Requirement และออกแบบผังระบบ | เอกสาร Requirement, รายการอุปกรณ์, Block Diagram |
| สัปดาห์ที่ 2 | ต่อวงจร อ่านค่าเซ็นเซอร์ และคาลิเบรตค่าดินแห้ง/ดินชื้น | ค่าทดสอบ Sensor และตาราง Calibration |
| สัปดาห์ที่ 3 | เขียนโปรแกรมควบคุม Relay/Pump และทดสอบเงื่อนไขอัตโนมัติ | Firmware ที่เปิด–ปิดปั๊มตาม Threshold ได้ |
| สัปดาห์ที่ 4 | เชื่อมต่อ Dashboard และบันทึกข้อมูลย้อนหลัง | Dashboard แสดงค่าและ Log ได้ |
| สัปดาห์ที่ 5 | ทดสอบรวมระบบ ปรับปรุงกล่อง/สายไฟ และเตรียมนำเสนอ | Prototype พร้อมวิดีโอ รายงาน และสไลด์ |
| หัวข้อประเมิน | รายละเอียด | คะแนน |
|---|---|---|
| Requirement & Design | โจทย์ชัด ขอบเขตเหมาะสม ผังระบบเข้าใจง่าย | 15% |
| Hardware Integration | ต่อวงจรถูกต้อง ปลอดภัย และจัดวางอุปกรณ์เรียบร้อย | 20% |
| Programming | อ่านค่า ควบคุมปั๊ม จัดการเงื่อนไข และอธิบายโค้ดได้ | 20% |
| Connectivity | ส่งข้อมูลไป Dashboard หรือระบบบันทึกข้อมูลได้ | 15% |
| Testing | มีแผนทดสอบ ผลทดสอบ และหลักฐานก่อน–หลังปรับปรุง | 15% |
| Documentation & Demo | รายงานครบ วิดีโอชัด และนำเสนอเข้าใจง่าย | 15% |
เพิ่ม Ultrasonic Sensor หรือ Float Switch เพื่อแจ้งเตือนเมื่อน้ำใกล้หมด
เชื่อมต่อ API สภาพอากาศ เพื่อลดการรดน้ำเมื่อมีฝนหรือความชื้นสูง
ส่ง Notification เมื่อดินแห้งมาก ปั๊มทำงาน หรือถังน้ำหมด
ทำกราฟรายวันและสรุปจำนวนครั้ง/ปริมาณเวลาในการรดน้ำ
ใช้หน้านี้เป็นแนวทางสำหรับวางแผนโครงงาน เขียนรายงาน ทำสไลด์ และสาธิตผลงานปลายภาคในรายวิชา IoT