ระบบรดน้ำต้นไม้เบื้องต้น (ESP32 + Soil Moisture Capacitive V2.0)
by devadiy99 in Circuits > Arduino
17 Views, 0 Favorites, 0 Comments
ระบบรดน้ำต้นไม้เบื้องต้น (ESP32 + Soil Moisture Capacitive V2.0)
โปรเจกต์นี้ใช้ ESP32 อ่านค่าความชื้นดินจากเซนเซอร์ Soil Moisture Capacitive v2.0 แล้วตัดสินใจเปิด/ปิดปั๊มน้ำ 12V ผ่านรีเลย์ โดยตั้งค่าเกณฑ์ความชื้นแบบ ฮิสเทอรีซิส (2 ค่า TH_LOW / TH_HIGH) เพื่อลดอาการเปิด–ปิดถี่ ๆ เหมาะมากสำหรับมือใหม่ที่อยากเริ่มทำระบบรดน้ำอัตโนมัติแบบ Local ไม่ง้อคลาวด์
ภาพรวมการทำงาน: เซนเซอร์ → ESP32 แปลงเป็นเปอร์เซ็นต์ → เปรียบเทียบกับ TH_LOW/TH_HIGH → สั่งรีเลย์ควบคุมปั๊ม.
👉 อ่านบทความต้นฉบับแบบละเอียดได้ที่ Deva DIY – ระบบรดน้ำต้นไม้เบื้องต้น (ESP32 + Soil Capacitive v2.0)
Supplies
ESP32 DevKit V1 (ESP-WROOM-32) – ใช้ได้ง่าย, ADC เยอะ, เหมาะกับ Arduino IDE
- ขาที่ใช้: ADC (เช่น GPIO34) สำหรับเซนเซอร์, GPIO26 คุมรีเลย์
- หมายเหตุ: ลอจิก 3.3V และห้ามเอา 5V จากบอร์ดไปเลี้ยงปั๊ม
Soil Moisture Sensor (Capacitive v2.0) – ทนสนิมกว่าแบบเข็ม, สัญญาณนิ่ง, ต่อกับ ADC ได้ตรง ๆ
Relay 1-Channel (3.3V/5V) – ควบคุมปั๊มน้ำ 12V (รู้สถานะ Active LOW/HIGH และตั้งค่าเริ่มต้นให้ปลอดภัย)
ปั๊มน้ำ 12V + อะแดปเตอร์ 12V – เลือกกระแสเผื่อสตาร์ต (เช่นปั๊ม 0.5A ใช้หม้อแปลง ≥ 1A)
สายไฟ/สายจัมเปอร์, บอร์ดลอง (Breadboard), หัวแร้ง/ตะกั่ว (ถ้าจำเป็น)
ถ้ายังไม่รู้จัก ESP32 อ่านเพิ่มเติมได้ที่ ESP32 คืออะไร? คู่มือเริ่มต้นสำหรับ Maker
เข้าใจหลักการ (How It Works)
- เซนเซอร์ให้แรงดันอนาล็อกตามความชื้น
- ESP32 อ่านค่า ADC → แปลงเป็น “เปอร์เซ็นต์ความชื้น” (หลังคาลิเบรต)
- ใช้ if … else if เปรียบเทียบ TH_LOW / TH_HIGH
- สั่งรีเลย์ ON/OFF → คุมปั๊ม 12V
- วนลูปอ่าน–ตัดสินใจ–สั่งงานซ้ำ ๆ
ทำไมต้อง “Capacitive v2.0”? เพราะ ทนกว่า, สัญญาณนิ่ง, และ ต่อกับ ESP32 ง่าย.
การต่อวงจร (Wiring)
- เซนเซอร์: VCC → 3V3, GND → GND, AOUT → GPIO34 (หรือ ADC ที่อ่านได้ เช่น 32/33/34/35/36/39)
- รีเลย์: IN → GPIO26, VCC/GND → 5V/GND (หรือ 3V3/GND ตามรุ่น), คอนแทค COM/NO ตัดต่อสาย +12V ไปเข้าปั๊ม
- หมายเหตุ: รวม GND ของ ESP32, เซนเซอร์, รีเลย์ เข้าด้วยกัน
- ความปลอดภัยฝั่ง 12V: เช็คขั้ว +/− ให้ถูกต้อง, ใช้สายใหญ่ขึ้นนิด (AWG20–18)
เคล็ดลับ: ตั้งค่าเริ่มต้นให้ “ปั๊มไม่ติดตอนบูต” ตาม Active LOW/HIGH ของรีเลย์ที่ใช้.
คาลิเบรตเซนเซอร์ & ตั้งเกณฑ์
- อ่านค่า raw ADC ตอน ดินแห้ง (กำหนดเป็น rawDry) และตอน ดินเปียก (rawWet)
- ใช้ฟังก์ชันช่วยแปลงค่าเป็นเปอร์เซ็นต์ เช่น map() + constrain()
(อ้างอิงแนวคิดจากบทความเดิม)
- ตั้ง TH_LOW (ต่ำกว่านี้ = เปิดปั๊ม), TH_HIGH (สูงกว่านี้ = ปิดปั๊ม), ช่วงระหว่างกลาง = คงสถานะเดิม เพื่อลดการกระพริบเปิด–ปิดถี่ ๆ.
รายละเอียดเพิ่มเติมเกี่ยวกับการอ่านค่าจากขา ADC ของ ESP32 ดูได้ที่ ESP32 Analog Read
โค้ดตัวอย่าง (Arduino IDE สำหรับ ESP32)
แกนคิดเหมือนในบทความ: ใช้ ADC1, คาลิเบรตเป็นเปอร์เซ็นต์, ตั้ง TH_LOW/TH_HIGH กันสั่น และคงสถานะเดิมในช่วงกลาง.
ทดสอบ & ปรับแต่ง
เริ่มจาก TH_LOW ~ 35% / TH_HIGH ~ 55% แล้วลองปรับตามชนิดดิน กระถาง พืช
ถ้า “ปั๊มสวิง” ให้เพิ่มช่องว่างระหว่าง TH_LOW กับ TH_HIGH (เช่น 30/60)
ตั้ง เวลาขั้นต่ำในการ ON/OFF (ถ้าต้องการ) เพื่อกันการเปิดปิดถี่ ๆ เพิ่มเติม.
ปัญหาที่พบบ่อย (Troubleshooting)
ค่า ADC เพี้ยน/กลับทิศ → ตรวจ rawDry/rawWet ให้ถูก, บางรุ่นยิ่งแห้งยิ่งแรงดันสูง/ต่ำต่างกัน ให้สลับพารามิเตอร์ใน map()
รีเลย์ทำงานกลับขั้ว → ตั้ง RELAY_ACTIVE_LOW ให้ตรงกับโมดูล
ปั๊มติดตอนบูต → เซ็ตสถานะเริ่มต้นใน setup() ให้ปิดไว้ก่อน และเช็ค Active LOW/HIGH ของรีเลย์
ไฟ 12V สะดุด → ใช้อะแดปเตอร์เผื่อกระแส ≥ กระแสปั๊มและรวม GND ระบบให้เรียบร้อย.
ต่อไปทำอะไรได้บ้าง (Next Steps)
- ทำ UI หน้าเว็บ/มือถือสั่งงานแบบ Local (เช่น ESPAsyncWebServer หรือแอป PoPo Wi-Fi Local)
- แยกโซนรดน้ำหลายกระถาง เพิ่มรีเลย์หลายช่อง
- บันทึกข้อมูลความชื้น/เวลารดน้ำ เพื่อปรับสูตรให้เหมาะกับพืช
เครดิตอ้างอิงต้นทาง
แหล่งเรียนรู้ ESP32 + Smart Farm ภาษาไทย
ดูรายละเอียดเพิ่มเติมที่ https://devadiy.com