Search Code

ESP32 บทเรียน 24/55 - การวัดความชื้นในดินเพื่อการชลประทาน | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ESP32 บทเรียน 24/55 - การวัดความชื้นในดินเพื่อการชลประทาน | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการใช้ SunFounder ESP32 ร่วมกับเซ็นเซอร์ความชื้นในดินเพื่อวัดระดับความชื้นในดิน ซึ่งสามารถช่วยในการทำให้ระบบรดน้ำอัตโนมัติ โดยการตรวจสอบระดับความชื้น เราสามารถสั่งให้ออดส่งเสียงเมื่อความชื้นต่ำกว่าเกณฑ์ที่กำหนด ซึ่งบ่งบอกว่าต้นไม้ต้องการน้ำ โปรเจกต์นี้มีประโยชน์ต่อการรักษาสุขภาพของต้นไม้ และสามารถขยายไปใช้ในการตรวจจับสภาพแวดล้อมต่างๆ ได้ (ในวิดีโอที่ 00:00)

โมดูลเซ็นเซอร์ความชื้นในดิน

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

อธิบายฮาร์ดแวร์

สำหรับโปรเจกต์นี้ ส่วนประกอบหลักคือไมโครคอนโทรลเลอร์ SunFounder ESP32 เซ็นเซอร์ความชื้นในดินแบบ capacitive และออด ESP32 มี Wi-Fi และ Bluetooth ในตัว ทำให้สามารถตรวจสอบและควบคุมจากระยะไกลได้ เซ็นเซอร์ความชื้นในดินประกอบด้วยแผ่นโลหะสองแผ่นที่วัดความจุ ซึ่งเปลี่ยนแปลงตามระดับความชื้นในดิน การเปลี่ยนแปลงของความจุนี้จะเปลี่ยนแรงดันไฟฟ้าขาออก ซึ่ง ESP32 จะอ่านผ่านอินพุตแบบแอนะล็อก ออดจะแจ้งเตือนเราเมื่อระดับความชื้นลดลงต่ำกว่าเกณฑ์ที่ตั้งไว้

แผนผังโมดูลเซ็นเซอร์ความชื้นในดิน

รายละเอียดจาก Datasheet

ผู้ผลิต SunFounder
หมายเลขชิ้นส่วน เซ็นเซอร์ความชื้นในดิน
แรงดันไฟฟ้าที่ใช้งาน 3.3 ถึง 5 โวลต์
ประเภทเอาต์พุต แอนะล็อก
ช่วงสัญญาณ 0 ถึง 3.3 โวลต์
เวลาตอบสนอง รวดเร็ว
ขนาด ประมาณ 60 x 20 มม.
หมายเหตุ / รุ่นต่างๆ เซ็นเซอร์ชนิด capacitive

 

  • ตรวจสอบให้แน่ใจว่าเซ็นเซอร์ไม่ได้จุ่มลงในน้ำจนเต็มเพื่อป้องกันความเสียหาย
  • ใช้ตัวต้านทาน pull-up ที่เหมาะสมหากจำเป็นเพื่อให้ค่าที่อ่านได้มีเสถียรภาพ
  • ปรับเทียบเซ็นเซอร์สำหรับชนิดดินเฉพาะของคุณเพื่อให้ค่าความชื้นแม่นยำ
  • รักษาการเชื่อมต่อสายไฟให้ถูกต้องเพื่อหลีกเลี่ยงการสูญเสียสัญญาณ
  • ระวังแหล่งจ่ายไฟเพื่อหลีกเลี่ยงสถานการณ์แรงดันเกิน

คำแนะนำการเดินสายไฟ

ESP32-24-soild-moisture-wiring

ในการเดินสายไฟเซ็นเซอร์ความชื้นในดินเข้ากับ ESP32 ให้เชื่อมต่อขา VCC ของเซ็นเซอร์เข้ากับขา 3.3V บน ESP32 จากนั้นเชื่อมต่อขา GND ของเซ็นเซอร์เข้ากับขา GND บน ESP32 ขาเอาต์พุตแบบแอนะล็อกจากเซ็นเซอร์ความชื้นในดินควรเชื่อมต่อกับขาแอนะล็อก 35 บน ESP32 สำหรับออด ให้เชื่อมต่อขาบวกเข้ากับขาดิจิทัล 13 บน ESP32 และขาลบเข้ากับ GND ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดแน่นหนาเพื่อหลีกเลี่ยงปัญหาที่เกิดขึ้นเป็นระยะๆ ระหว่างการทำงาน

ตัวอย่างโค้ดและคำอธิบาย

ด้านล่างเป็นข้อความสั้นๆ จากโค้ดที่เริ่มต้นการสื่อสารแบบอนุกรมและอ่านค่าเซ็นเซอร์ความชื้น:

void setup() {
  // เริ่มต้นการสื่อสารแบบอนุกรมที่ 115200 บิตต่อวินาที:
  Serial.begin(115200);
}

โค้ดส่วนนี้ตั้งค่าการสื่อสารแบบอนุกรม ทำให้เราสามารถดูค่าที่อ่านได้จากเซ็นเซอร์ความชื้นในหน้าจอ serial monitor

ถัดไป เรามีลูปหลักที่อ่านค่าแอนะล็อกจากเซ็นเซอร์:

void loop() {
  // อ่านค่าแอนะล็อก
  int analogValue = analogRead(35);
  
  // พิมพ์ค่าออกมา
  Serial.printf("ค่าแอนะล็อก = %d\n",analogValue);
  
  delay(300);  // หน่วงเวลาระหว่างการอ่านเพื่อให้อ่านค่าจาก serial monitor ได้ชัดเจน
}

ในลูปนี้ โค้ดจะอ่านค่าแอนะล็อกจากขา 35 อย่างต่อเนื่องและพิมพ์ไปยัง serial monitor ทุกๆ 300 มิลลิวินาที ทำให้เราสามารถตรวจสอบระดับความชื้นได้แบบเรียลไทม์

การสาธิต / สิ่งที่คาดหวัง

เมื่อวางเซ็นเซอร์ความชื้นในดินแห้ง ค่าแอนะล็อกจะสูงขึ้น ซึ่งบ่งบอกถึงความชื้นต่ำ ในทางกลับกัน เมื่อใส่เซ็นเซอร์ลงในดินชื้น ค่าจะลดลงอย่างมาก หากค่าที่อ่านได้ต่ำกว่าเกณฑ์ที่กำหนด (เช่น 2000) ออดที่เชื่อมต่อกับขา 13 จะทำงาน ส่งสัญญาณว่าต้นไม้ต้องการน้ำ ระวังอินพุตลอยและตรวจสอบให้แน่ใจว่าเซ็นเซอร์ไม่ได้สัมผัสกับน้ำเกินกว่าขีดจำกัดที่แนะนำ (ในวิดีโอที่ 02:30)

ไทม์สแตมป์ในวิดีโอ

  • 00:00 เริ่มต้น
  • 1:51 แนะนำโปรเจกต์
  • 5:53 อธิบายการเดินสายไฟ
  • 7:23 อธิบายโค้ด Arduino
  • 9:09 การเลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
  • 10:47 การสาธิตโปรเจกต์บนกระถางต้นไม้
  • 14:30 การเปิดออดเมื่อกระถางแห้ง

ภาพ

ESP32-24-soild-moisture-wiring
ESP32-24-soild-moisture-wiring
ESP32-24-soild-moisture-schematic
ESP32-24-soild-moisture-schematic
soil_mositure_module
soil_mositure_module
soil_mositure_module_schematic
soil_mositure_module_schematic
823-ESP32 Tutorial 24/55- Arduino code for soil moisture measurement
ภาษา: C++
void setup() {
  // Initialize serial communication at 115200 bits per second:
  Serial.begin(115200);
}

void loop() {
  // Read the analog value
  int analogValue = analogRead(35);
  
  // Print out the values
  Serial.printf("Analog value = %d\n",analogValue);
  
  delay(300);  // delay between reads for clear read from serial monitor
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน