สารบัญ:

DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT): 9 ขั้นตอน (พร้อมรูปภาพ)
DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT): 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT): 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT): 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: DIY | สอนทำระบบรดน้ำต้นไม้อัตโนมัติด้วยตัวเองแบบว่าง่ายมากๆ ดูจบทำเองได้ | DIY Diaries #01 2024, กรกฎาคม
Anonim
DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT)
DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT)
DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT)
DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT)
DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT)
DIY - ชลประทานสวนอัตโนมัติ - (Arduino / IOT)

โครงการนี้จะแสดงให้คุณเห็นถึงวิธีการสร้างตัวควบคุมการชลประทานสำหรับสวนในบ้าน สามารถวัดค่าความชื้นในดินและกระตุ้นการชลประทานจากก๊อกน้ำในสวนหากดินแห้งเกินไป ตัวควบคุมยังมีเซ็นเซอร์อุณหภูมิและความชื้น ตัวควบคุมจะไม่เปิดใช้งานก๊อกสวนหากอุณหภูมิต่ำเกินไป การอ่านเซ็นเซอร์และสถิติเกี่ยวกับการใช้น้ำ / เวลาทำงานจะถูกบันทึกใน ThingsBoard IOT สำหรับการแสดงภาพและการวิเคราะห์ การแจ้งเตือนและอีเมลจะทำงานหากตัวควบคุมการชลประทานหยุดส่งข้อมูล ดินจะแห้งเกินไปหรืออิ่มตัวเกินไป

ข้อกำหนดเบื้องต้น

  • ความรู้ Arduino รวมถึงการเข้ารหัสพื้นฐานอย่างน้อยสำหรับ Arduino และการบัดกรี
  • 1x ก๊อกสวนแรงดัน

บิลวัสดุ

  • สวนชลประทานท่อโพลี, เจ็ต, ดริปเปอร์เป็นต้น
  • ตัวจับเวลาการแตะแบบอิเล็กทรอนิกส์แบบสองสาย (เช่น Aqua Systems Electronic Digital Tap Timer)
  • ตัวลดแรงกด 300kpa
  • Arduino Uno
  • Lora Arduino Shield
  • Lora Gateway (ไม่จำเป็นหากคุณมีเกตเวย์ Things Network ในพื้นที่)
  • DHT11 เซ็นเซอร์ความชื้นอุณหภูมิ
  • 5v รีเลย์
  • สายโทรศัพท์
  • เคเบิ้ลไทร์
  • ท่อลูกฟูกแยกยานยนต์
  • แถบขั้วต่อเทอร์มินัลยานยนต์
  • 2x ตะปูอาบสังกะสี
  • 1x ตัวต้านทาน
  • ซิลิคอน / อุดรูรั่ว
  • พีวีซีซีเมนต์
  • พีวีซีไพรเมอร์
  • ท่อพีวีซี กว้าง 32 มม. x ยาว 60 มม.
  • ท่อพีวีซี กว้าง90มม. x ยาว30ซม.
  • 3x PVC Push End Caps 90mm
  • 1x ฝาเกลียว PVC 90mm
  • 1x ข้อต่อเกลียว PVC 90mm
  • 1x PVC Push End Caps 32mm
  • แหล่งพลังงาน 1x 3.2V (ตัวจับเวลาการแตะ) [แบตเตอรี่, อะแดปเตอร์ AC multivolt]
  • แหล่งพลังงาน 1x 6-12V (arduino) [แบตเตอรี่, USB, อะแดปเตอร์ USB เป็น AC]
  • เทปพันเกลียว
  • เทปพันสายไฟ

ขั้นตอนที่ 1: ติดตั้งระบบชลประทานสวน

ติดตั้งระบบชลประทานสวน
ติดตั้งระบบชลประทานสวน
ติดตั้งระบบชลประทานสวน
ติดตั้งระบบชลประทานสวน

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

การตั้งค่าเหล่านี้สามารถเปลี่ยนแปลงได้บน Arduino และเก็บไว้ในหน่วยความจำ EPROM นอกจากนี้ยังสามารถอัปเดตการตั้งค่าได้ด้วยการผสานรวม IOT โครงการนี้จะเรียกใช้ตัวควบคุมทุก ๆ สี่ชั่วโมงและเปิดก๊อกน้ำเป็นเวลา 3 นาทีหากดินแห้งเกินไป อาจทำงานสองสามครั้งติดต่อกันหากแห้ง/ร้อน หรือวันละครั้งหรือสองครั้ง

ขั้นตอนที่ 2: Fit Tap Timer

Fit Tap Timer
Fit Tap Timer

ติดตั้งตัวจับเวลาการต๊าปและทดลองกับแป้นหมุนที่ปรับได้เพื่อหาความถี่คร่าวๆ และเวลาทำงานที่เหมาะสมที่สุดสำหรับการติดตั้งระบบชลประทานของคุณ เราจะลบตัวจับเวลาและแก้ไขให้ทำงานกับ Arduino

ขั้นตอนที่ 3: Arduino Build

Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build
Arduino Build

ใช้แผนภาพการเดินสายไฟเป็นแนวทางในการสร้าง ในภาพใช้การเดินสายโทรศัพท์และแถบขั้วต่อแบบเกลียวสำหรับจุดเชื่อมต่อ จำเป็นต้องมีการบัดกรี

การปรับเปลี่ยนตัวจับเวลาการแตะ

แยกตัวจับเวลาการแตะออกอย่างระมัดระวัง เราจะเดินสายอย่างแน่นหนาสำหรับแป้นหมุนที่ปรับได้ทั้งสองแบบเพื่อให้ Arduino สามารถควบคุมได้แทนที่จะใช้แป้นหมุนแบบแมนนวล แป้นหมุนความถี่ด้านซ้ายจะต่อสายแบบแข็งไปยังตำแหน่งรีเซ็ต เพื่อให้สามารถสลับแป้นหมุนขวาระหว่างตำแหน่งเปิด/ปิดได้ แป้นหมุนขวาจะมีสายหนึ่งเส้นมาจากหน้าสัมผัสตรงกลางด้านขวาและหน้าสัมผัสด้านขวาด้านนอกดังภาพ โดยค่าเริ่มต้น ตัวจับเวลาจะอยู่ในตำแหน่งปิด หากสายไฟทั้งสองมาสัมผัสกัน ตัวจับเวลาจะเปิดขึ้น ด้วยสายไฟสองเส้นที่เชื่อมต่อกับรีเลย์ 5V ทำให้ Arduino สามารถปิด/เปิดหน้าสัมผัสระหว่างสองสายได้ ด้วยสายหนึ่งเส้นในเทอร์มินัลรีเลย์ทั่วไปและอีกเส้นหนึ่งในเทอร์มินัลปิดตามปกติ เราจะตรวจสอบให้แน่ใจว่าตัวจับเวลาถูกปิดเมื่อปิด Arduino การตั้งค่าพินรีเลย์เป็น HIGH จะเป็นการเปิดตัวจับเวลา การตั้งค่าเป็น LOW จะเป็นการปิดตัวจับเวลา

โพรบดิน

สำหรับโครงงานนี้ ตะปูทั้งสองจะถูกบัดกรีด้วยลวดที่เชื่อมต่อกับขั้วสกรู ขั้วของตะปูตัวเดียวตรงไปที่พื้น อีกอันเชื่อมต่อกับอินพุตแบบอะนาล็อกใน Arduino และตัวต้านทาน ตัวต้านทานเชื่อมต่อกับสัญญาณ Arduinos 5v แสดงในแผนภาพการบิด

เซ็นเซอร์อุณหภูมิ/ความชื้น

เซ็นเซอร์อุณหภูมิ/ความชื้น DHT11 ต่อสายเข้ากับ 5V ของ Arduino กราวด์และพินดิจิทัลบน Arduino

โล่ลอร่า

โครงการนี้ยังใช้ Dragino Lora Shield (ไม่แสดงในแผนภาพการเดินสาย)

ฐานพีวีซี

ฐานพีวีซีสำหรับ Arduino ที่ใช้ในโครงการนี้ได้รับการออกแบบมาเพื่อให้สามารถสัมผัสเซ็นเซอร์อุณหภูมิ/ความชื้นได้ ในขณะที่ยังคงรักษาส่วนประกอบอื่นๆ ทั้งหมดไว้ภายในกล่องหุ้ม PVC กันน้ำ มีการเจาะ/ตัดรูเล็กๆ สำหรับเซ็นเซอร์ และใช้ซิลิคอนเพื่อยึดเข้าที่โดยที่ความชื้นไม่ให้ไปถึงอาร์ดิโน แสดงในแผนภาพ

ขั้นตอนที่ 4: การเขียนโปรแกรม Arduino

การเขียนโปรแกรม Arduino
การเขียนโปรแกรม Arduino

เชื่อมต่อส่วนประกอบต่างๆ เข้าด้วยกันผ่านแผงวงจรทดลองหรือแถบเทอร์มินัลสำหรับการตั้งโปรแกรมและการทดสอบ

การกำหนดค่า EPROM

ขั้นแรกเราต้องเขียนตัวแปรการกำหนดค่าลงในหน่วยความจำ EPROM เรียกใช้รหัสต่อไปนี้บน Arduino ของคุณ:

รหัสที่มีอยู่ใน Github

ที่นี่ DRY_VALUE ตั้งไว้ที่ 960 1024 หมายความว่าดินแห้งสนิท 0 หมายถึงความอิ่มตัวสมบูรณ์ 960 เป็นระดับความอิ่มตัวที่ดีสำหรับตัวต้านทาน ความยาวสายเคเบิล และตะปูที่ใช้ อาจแตกต่างกันไปขึ้นอยู่กับการกำหนดค่าของคุณเอง

VALVE_OPEN ตั้งไว้ที่ 180000 มิลลิวินาที (3 นาที) เมื่อ/หากตัวตั้งเวลาการแตะเปิดอยู่ ระบบจะเปิดทิ้งไว้ 3 นาที

RUN_INTERVAL ตั้งไว้ที่ 14400000 miliseconds (4 ชั่วโมง) ซึ่งหมายความว่าตัวควบคุมจะตรวจสอบความชื้นในดินทุก ๆ สี่ชั่วโมงและเปิดตัวจับเวลาการแตะเป็นเวลา 3 นาทีหากความอิ่มตัวต่ำ (มากกว่า 960)

โค้ดด้านบนสามารถเปลี่ยนแปลงและแก้ไขค่าเหล่านี้ได้ทุกเมื่อ

รหัสโปรแกรม

รหัสที่มีอยู่ใน Github

การพึ่งพา:

  • TimedAction
  • หัวหน้าวิทยุ

ตัวอย่างนี้ใช้โล่ Dragino Lora และโดยเฉพาะตัวอย่าง Lora ที่เกิดขึ้นพร้อมกันกับโล่ที่เชื่อมต่อโดยตรงกับ Dragino Lora Gateway

สามารถปรับให้ใช้ Things Network ได้โดยการลบโค้ดในส่วน "BEGIN: lora vars" และเปลี่ยนโปรแกรมให้รวมตัวอย่าง Dragino ต่อไปนี้ หรือดัดแปลงให้ทำงานร่วมกับวิทยุ/ตัวป้องกัน wifi อื่นๆ เป็นต้น

รหัสที่ให้มาถือว่า DHT11_PIN เป็นพินดิจิตอล 4, RELAY_PIN คือพินดิจิตอล 3 และพินอะนาล็อกความชื้นในดินเป็นอินพุตอะนาล็อก 0

ตัวแปรการดีบักสามารถตั้งค่าเป็นจริงเพื่อให้สามารถบันทึกข้อความดีบักแบบอนุกรมได้ที่ baudrate 9600

ขั้นตอนที่ 5: การสร้างสิ่งที่แนบมา

สิ่งที่แนบมาสร้าง
สิ่งที่แนบมาสร้าง

ตัดท่อพีวีซีให้เหมาะสมกับตัวจับเวลาการต๊าปและฐาน Arduino เจาะรูสำหรับข้อต่อต๊าปตั้งเวลาต๊าปและข้อต่อสายยาง เจาะรูในท่อที่กว้างพอสำหรับท่อร้อยสายไฟรถยนต์ สอดท่อความยาว 10 ซม. เข้าไปในรูแล้วดึงสายไฟออกจาก Arduino และตัวจับเวลาการต๊าป สิ่งนี้ควรรวมถึง:

จาก Arduino

  • สายไฟและ/หรือสาย USB จากพอร์ต USB ของ Arduino
  • สายไฟความชื้นในดิน (VCC, GND, A0)
  • สายไฟสองเส้นจากขั้วต่อสกรู NC และทั่วไปของรีเลย์

จากตัวจับเวลาการแตะ

  • สายไฟ
  • สายไฟสองเส้นจากหน้าสัมผัสขวา

ขั้นตอนที่ 6: ทดสอบตัวควบคุมก่อนติดกาว

ทดสอบตัวควบคุมก่อนติดกาว
ทดสอบตัวควบคุมก่อนติดกาว
ทดสอบตัวควบคุมก่อนติดกาว
ทดสอบตัวควบคุมก่อนติดกาว

ตรวจสอบให้แน่ใจว่าทุกอย่างยังทำงานอยู่ก่อนที่จะปิดผนึกทุกอย่าง

ภาพถ่ายด้านบนแสดงตัวอย่างการตั้งค่าในท้องฟ้า โดยวางโพรบวัดความชื้นในดินไว้ในหม้อ และตัวจับเวลาการต๊าปติดตั้งกับน้ำที่มาจากขวดน้ำอัดลม

ดริปหนึ่งตัวติดอยู่กับตัวจับเวลาการแตะ

นี่เป็นวิธีที่ดีในการทดสอบว่าการติดตั้งไม่ได้อยู่เหนือหรือใต้น้ำในโรงงาน

ตัวอย่างนี้สามารถรันได้นานเท่าที่จำเป็นในการปรับเทียบคอนโทรลเลอร์

ขั้นตอนที่ 7: เปลือกกาว / กันน้ำ

กาว / เปลือกกันน้ำ
กาว / เปลือกกันน้ำ

ใช้ PVC Primer และ PVC Cement เพื่อยึดฝาท้ายและข้อต่อ

ใช้อุดรูรั่ว/ซิลิกอนเพื่อเติมช่องว่างรอบๆ ท่อร้อยสายไฟอัตโนมัติและอุปกรณ์จับเวลาการต๊าป

ที่นี่ใช้ฝาเกลียวบนกล่องหุ้ม Arduino เพื่อการเข้าถึง

ขั้นตอนที่ 8: ติดตั้ง

ติดตั้ง
ติดตั้ง
ติดตั้ง
ติดตั้ง
ติดตั้ง
ติดตั้ง

ติดตั้งในวันที่อากาศแจ่มใส ส่วนประกอบและสายไฟจะต้องแห้งก่อนที่จะปิดผนึก

วางตัวควบคุมไว้ที่กึ่งกลางระหว่างตำแหน่งของก๊อกน้ำในสวนและตำแหน่งที่จะวางหัววัดดิน

ใส่ตัวจับเวลาการแตะและตรวจดูให้แน่ใจว่าไม่ได้เปิดเครื่องจนกว่าการติดตั้งจะเสร็จสิ้น

ติดหัววัดดิน

แนบขั้วต่อแบบแถบกับส่วนประกอบแต่ละชิ้น จากนั้นวางสายโทรศัพท์จากขั้วต่อสกรูของส่วนประกอบแต่ละชิ้น ตรวจสอบให้แน่ใจว่าหุ้มสายเคเบิลไว้ในท่อร้อยสายไฟอัตโนมัติ เชื่อมทุกอย่างเข้าด้วยกัน

ปิดผนึกขั้วต่อทั้งหมดและส่วนอื่นๆ ที่สัมผัสออกด้วยเทปพันเกลียว ตามด้วยเทปพันสายไฟ

ปิดผนึกบริเวณที่หลวม/เปิดเผยใดๆ ของท่อร้อยสายแยกด้วยเทปพันเกลียว ตามด้วยเทปพันสายไฟ

เชื่อมต่อตัวจับเวลากับแหล่งพลังงาน 3.2v ไม่ว่าจะเป็นก้อนแบตเตอรี่หรือกับอะแดปเตอร์ 3.2V DC - AC ที่ใช้กับเต้ารับไฟหลัก

เชื่อมต่อ Arduino กับแหล่งจ่ายไฟ DC 6-12V ไม่ว่าจะเป็นก้อนแบตเตอรี่หรืออะแดปเตอร์ USB / DC-AC ที่ใช้กับเต้ารับหลัก

เพิ่มพลังและทดสอบ!

ขั้นตอนที่ 9: การรวม ThingsBoard - การตรวจสอบและการรายงาน

การรวม ThingsBoard - การตรวจสอบและการรายงาน
การรวม ThingsBoard - การตรวจสอบและการรายงาน

ตัวอย่างนี้ใช้ Dragino Lora Shield ที่เชื่อมต่อกับ Dragino Lora Gateway ไม่ว่าจะใช้การตั้งค่านี้ การตั้งค่า Lora อื่นหรือการเชื่อมต่อ IOT อื่นๆ ข้อมูลที่รวบรวมโดยตัวควบคุมการชลประทานสามารถส่งต่อไปยังแพลตฟอร์ม IOT เช่น Thingsboard โดยค่าเริ่มต้น โปรแกรมจะส่งสตริงข้อมูลต่อไปนี้โดยที่แต่ละไบต์ของอักขระถูกเข้ารหัสฐานสิบหก:

TXXXHXXXSXXXXRX

โดยที่ T ตามด้วยอุณหภูมิ H ตามด้วยความชื้น S ตามด้วยระดับความอิ่มตัว และ R ตามด้วยตัวเลขหลักเดียวที่เกี่ยวข้องกับการกระทำในช่วงเวลาการรันครั้งสุดท้าย นี่อาจเป็น 0-5 โดยที่แต่ละหลักหมายถึง:

0: โปรแกรมกำลังเริ่มต้น1: เซ็นเซอร์อุณหภูมิผิดพลาด2: อุณหภูมิต่ำเกินไปที่จะทำงาน3: ความชื้นในดินแห้งเกินไป ดังนั้นตัวจับเวลาการแตะจึงถูกเปิดใช้งาน4: ความชื้นในดินดีจึงไม่ได้เปิดใช้งานตัวจับเวลาการแตะ5: ตัวควบคุมการชลประทานถูกปิดใช้งาน

มีหลายวิธีในการติดตั้งสำเนาของ Thingsboard บนอุปกรณ์ของคุณเอง หรือคุณสามารถตั้งค่าบัญชีฟรีในการติดตั้ง ThingsBoard ได้ที่นี่

ตั้งค่าอุปกรณ์ของคุณใน Thingsboard

ทำตามคำแนะนำเหล่านี้เพื่อเพิ่มอุปกรณ์ใหม่ใน Thingsboard ที่เรียกว่า "Irrigation Controller"

พุชข้อมูล Telemetry จากอุปกรณ์

ทำตามคำแนะนำเหล่านี้เพื่อตั้งค่าวิธีการส่งข้อมูล telemtry จากอุปกรณ์ไปยัง Thingboard ผ่าน MQTT, HTTP หรือ CoAp

บนเซิร์ฟเวอร์ของเรา เรากำลังผลักดัน JSON ต่อไปนี้ไปที่ https://thingsboard.meansofproduction.tech/api/v1/… ทุก ๆ สี่ชั่วโมงเมื่ออุปกรณ์ทำงาน (พร้อมข้อมูลสด):

นอกจากนี้ เรากำลังผลักดันแอตทริบิวต์ต่อไปนี้ไปที่ https://thingsboard.meansofproduction.tech/api/v1/… เป็นระยะโดยมีข้อมูลว่าโหนดถูกพบเห็นครั้งสุดท้ายเมื่อใด:

ใช้สำหรับการแจ้งเตือนที่ทริกเกอร์หากอุปกรณ์หยุดส่งข้อมูล

สร้างแดชบอร์ด

สร้างแดชบอร์ดตามที่อธิบายไว้ที่นี่ วิดเจ็ตของเราประกอบด้วย:

วิดเจ็ตการ์ดอย่างง่ายที่สร้างขึ้นจากฟิลด์ telemetry lastRunResult เกจดิจิตอลแนวตั้งสำหรับฟิลด์ telemetry อุณหภูมิ ตาราง Timeseries ที่สร้างจากฟิลด์ telemetry LastRunResult แสดงข้อมูลวันสุดท้าย แถบแนวนอนที่แสดงฟิลด์ telemetry อิ่มตัว สิ่งนี้ใช้ฟังก์ชันหลังการประมวลผลข้อมูล:

คืนค่า 1024 ค่า;

และตั้งค่าต่ำสุดและสูงสุด 0-100 วิธีนี้จะแสดงระดับความอิ่มตัวเป็นเปอร์เซ็นต์ เกจสำหรับแสดงค่าความชื้น แผนภูมิแท่งอนุกรมเวลาซึ่งรวมถึงอุณหภูมิ ความชื้น และผลการวิ่ง โดยจัดกลุ่มเป็นช่วง 5 ชั่วโมงสำหรับสัปดาห์ที่แล้ว รวมเพื่อแสดงค่าสูงสุด. สิ่งนี้ทำให้เรามีหนึ่งบาร์สำหรับกิจกรรมการทำงานสี่ชั่วโมง ฟังก์ชันหลังการประมวลผลข้อมูลใช้เพื่อแสดงผลการวิ่งเป็น 0 หรือ 120 ขึ้นอยู่กับว่าน้ำไหลหรือไม่ ที่ให้การตอบรับด้วยภาพอย่างง่ายเพื่อดูว่าน้ำไหลบ่อยแค่ไหนในหนึ่งสัปดาห์ การ์ด HTML แบบคงที่ที่แสดงรูปภาพของสวน

อีเมลแจ้งเตือน

เราใช้กฎเกณฑ์ในการตั้งค่าการแจ้งเตือนทางอีเมลสำหรับผู้ควบคุมการชลประทาน ทั้งหมดใช้ตัวกรองข้อความและการดำเนินการปลั๊กอินการดำเนินการส่งเมล

ในการส่งการแจ้งเตือนทางอีเมลหากผู้ควบคุมการชลประทานไม่สามารถส่งข้อมูลได้ เราใช้ 'Device Attributes Filter' กับตัวกรองต่อไปนี้:

ประเภทของ cs.secondsSinceLastSeen !== 'undefined' && cs.secondsSinceLastSeen > 21600

หากต้องการส่งอีเมลหากดินแห้งเกินไป ให้ใช้ตัวกรอง Telemetry ต่อไปนี้

ประเภทของความอิ่มตัว != "undefined" && saturation > 1010

ในการส่งอีเมลโดยพิจารณาว่าดินมีความชื้นมากเกินไป ให้ใช้ตัวกรอง Telemetry ต่อไปนี้

ประเภทของความอิ่มตัว != "ไม่ได้กำหนด" && ความอิ่มตัว

แนะนำ: