สารบัญ:

APIS - ระบบชลประทานพืชอัตโนมัติ: 12 ขั้นตอน (พร้อมรูปภาพ)
APIS - ระบบชลประทานพืชอัตโนมัติ: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: APIS - ระบบชลประทานพืชอัตโนมัติ: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: APIS - ระบบชลประทานพืชอัตโนมัติ: 12 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Supermax Green ใช้กับมะนาว ตอนที่ 1 2024, พฤศจิกายน
Anonim
APIS - ระบบชลประทานพืชอัตโนมัติ
APIS - ระบบชลประทานพืชอัตโนมัติ

ประวัติศาสตร์: (วิวัฒนาการต่อไปของระบบนี้มีให้ที่นี่)

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

นี่คือวิดีโอของการรดน้ำ: watering run

นี่คือที่มาของ APIS:

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

แนวคิดในการสร้างการรดน้ำต้นไม้โดยใช้ Arduino นั้นเกือบจะเป็นแนวคิดแรกที่จะนำ Arduino มาใช้เป็นโครงการบ้านอัตโนมัติ จึงมีการสร้างระบบรดน้ำต้นไม้อย่างง่าย

อย่างไรก็ตาม เวอร์ชัน 1 ไม่มีข้อบ่งชี้ใดๆ เกี่ยวกับความชื้นในดิน และไม่มีทางบอกได้ว่ากำลังจะรดน้ำต้นไม้หรือรดน้ำในอีกไม่กี่วัน

อย่างที่เราทราบกันดีว่าความอยากรู้อยากเห็นได้ฆ่าแมว และเวอร์ชัน 2 ถูกสร้างขึ้นด้วยโมดูลเซกเมนต์ 7 หลัก 4 หลัก เพื่อแสดงความชื้นในปัจจุบันตลอดเวลา

นั่นไม่เพียงพอ คำถามต่อมาคือ "ครั้งสุดท้ายที่มันรดน้ำต้นไม้" คือเมื่อไหร่? (เพราะเราไม่ค่อยได้อยู่บ้านสักเท่าไหร่) เวอร์ชัน 3 ใช้โมดูล 7 เซ็กเมนต์เพื่อแสดงว่าการรดน้ำครั้งสุดท้ายเกิดขึ้นนานแค่ไหน (เป็นสตริงข้อความที่ทำงานอยู่)

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

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

มันไม่ได้หยุดเพียงแค่นั้น ฉันสังเกตว่าหัววัดความชื้นมีแนวโน้มที่จะสึกกร่อนค่อนข้างเร็ว อาจเป็นเพราะว่า (โดยการออกแบบ) อยู่ภายใต้แรงดันไฟฟ้าคงที่ ดังนั้นจึงมีกระแสไฟฟ้าคงที่ระหว่างโพรบ (แอโนดการกัดเซาะ) การสำรวจดินราคาถูกจากประเทศจีนรอดชีวิตมาได้ประมาณหนึ่งสัปดาห์ แม้แต่ตะปูอาบสังกะสีก็ "กินหมด" ในหนึ่งเดือน โพรบสแตนเลสถือได้ดีกว่า แต่ฉันสังเกตเห็นว่าถึงแม้จะยอมแพ้ เวอร์ชัน 6 เปิดโพรบเพียง 1 นาทีทุก ๆ ชั่วโมง (และเปิดตลอดเวลาในระหว่างการรดน้ำ) ซึ่งช่วยลดการกัดเซาะได้อย่างมาก (~16 นาทีต่อวัน เทียบกับ 24 ชั่วโมงต่อวัน)

ความคิด:

พัฒนาระบบรดน้ำต้นไม้ให้มีความสามารถดังต่อไปนี้

  1. วัดความชื้นในดิน
  2. เมื่อถึงเครื่องหมายความชื้น "ต่ำ" ที่กำหนดไว้ล่วงหน้า ให้เปิดเครื่องสูบน้ำและรดน้ำต้นไม้จนกว่าจะถึงเครื่องหมายความชื้น "สูง"
  3. การรดน้ำควรทำหลายๆ รอบ คั่นด้วยช่วงที่ไม่มีการใช้งานเพื่อให้น้ำอิ่มตัวผ่านดิน
  4. ระบบควรปิดใช้งานตัวเองในเวลากลางคืนระหว่างเวลา "สลีป" และ "ตื่น"
  5. ควรปรับเวลา "ตื่นนอน" สำหรับวันหยุดสุดสัปดาห์เป็นค่าภายหลัง
  6. ระบบควรเก็บบันทึกการเดินเครื่องสูบน้ำ
  7. ระบบควรแสดงค่าความชื้นในดินในปัจจุบัน
  8. ระบบควรแสดงวันที่/เวลาที่ปั๊มทำงานล่าสุด
  9. พารามิเตอร์การรดน้ำควรปรับได้โดยไม่ต้องตั้งโปรแกรมใหม่
  10. หยุดปั๊มและระบุสถานะข้อผิดพลาดหากการทำงานของปั๊มไม่ทำให้เกิดการเปลี่ยนแปลงของความชื้น (น้ำหมดหรือปัญหาเซ็นเซอร์) ป้องกันไม่ให้น้ำท่วมโรงงานและน้ำรั่ว
  11. ระบบควรเปิด/ปิดหัววัดความชื้นเพื่อหลีกเลี่ยงการสึกกร่อนของโลหะ
  12. ระบบควรระบายน้ำออกจากท่อเพื่อป้องกันไม่ให้เชื้อราก่อตัวภายในท่อ

พารามิเตอร์ต่อไปนี้ควรกำหนดค่าได้โดยใช้ปุ่ม:

  1. เครื่องหมายความชื้น "ต่ำ" เป็น % เพื่อเริ่มการทำงานของปั๊ม (ค่าเริ่มต้น = 60%)
  2. เครื่องหมายความชื้น "สูง" เป็น % เพื่อหยุดการทำงานของปั๊ม (ค่าเริ่มต้น = 65%)
  3. ระยะเวลาของการรดน้ำครั้งเดียวในหน่วยวินาที (ค่าเริ่มต้น = 60 วินาที)
  4. จำนวนครั้งในการลองใหม่เพื่อให้ได้ความชื้นเป้าหมาย (ค่าเริ่มต้น = 4 รอบ)
  5. เวลาทหารที่จะปิดการใช้งานในเวลากลางคืน ชั่วโมงเท่านั้น (ค่าเริ่มต้น = 22 หรือ 22:00 น.)
  6. เวลาทหารเปิดใช้งานในตอนเช้า เฉพาะชั่วโมงเท่านั้น (ค่าเริ่มต้น = 07 หรือ 07:00 น.)
  7. การปรับวันหยุดสุดสัปดาห์สำหรับการเปิดใช้งานตอนเช้า ชั่วโมงเดลต้า (ค่าเริ่มต้น = +2 ชั่วโมง)
  8. วันที่และเวลาปัจจุบัน

APIS เขียนวันที่/เวลาของการรดน้ำครั้งสุดท้าย 10 ครั้งลงในหน่วยความจำ EEPROM สามารถแสดงบันทึก แสดงวันที่และเวลาของการวิ่งได้

สิ่งหนึ่งที่เราเรียนรู้จาก APIS คือคุณไม่จำเป็นต้องรดน้ำต้นไม้ทุกวัน ซึ่งเป็นกิจวัตรของเราจนกระทั่งเราเห็นการอ่านค่าความชื้นในดินบนจอแสดงผล 7 ส่วน…

ขั้นตอนที่ 1: ชิ้นส่วนและเครื่องมือ

ชิ้นส่วนและเครื่องมือ
ชิ้นส่วนและเครื่องมือ
ชิ้นส่วนและเครื่องมือ
ชิ้นส่วนและเครื่องมือ

คุณจะต้องใช้ส่วนต่างๆ ต่อไปนี้เพื่อสร้าง APIS:

กล่องควบคุมและท่อ:

  1. บอร์ด Arduino Uno: บน Amazon.com
  2. ปั๊มของเหลว peristaltic 12v พร้อมท่อซิลิโคน: บน Adafruit.com
  3. 4X จอแสดงผล LED ตัวเลขหลอดดิจิตอลโมดูล JY-MCU: บน Fasttech.com
  4. DS1307 ชุดบอร์ดฝ่าวงล้อมนาฬิกาเรียลไทม์: บน Adafruit.com (ตัวเลือก)
  5. ไมโครสวิทช์ IM206 6x6x6mm Tact: บน Amazon.com
  6. บอร์ด Vero: บน Amazon.com
  7. L293D ตัวขับมอเตอร์ IC: บน Fasttech.com
  8. ตัวต้านทาน 3 x 10kOhm
  9. Arduino ฉายภาพเคสพลาสติก: บน Amazon.com
  10. อะแดปเตอร์ AC/DC 12v พร้อมแจ็คไฟ 2.1 มม. บน Amazon.com
  11. เสียบไม้ไม้ไผ่
  12. ดอกยางและกาวซุปเปอร์ซีเมนต์เล็กน้อย
  13. ท่อยางลาเท็กซ์ Super Soft 1/8" ID, 3/16" OD, 1/32" Wall, Semi-Clear Amber, 10 ft. Length: on McMaster.com
  14. ข้อต่อท่อไนล่อนแน่น-ซีลมีหนามทนทาน, ทีสำหรับท่อ ID 1/8", สีขาว, แพ็ค 10: ที่ McMaster.com
  15. ข้อต่อท่อไนล่อนแน่น-ซีลมีหนามทนทาน, Wye for 1/8" Tube ID, White, packs of 10: on McMaster.com
  16. ตามปกติ สายไฟ เครื่องมือบัดกรี ฯลฯ

โพรบความชื้น:

  1. ไม้ชิ้นเล็ก (1/4" x 1/4" x 1")
  2. 2 x เข็มเจาะสิวสแตนเลส: บน Amazon.com
  3. โมดูลเซนเซอร์ตรวจจับความชื้นในดิน: บน Fasttech.com

ขั้นตอนที่ 2: โพรบความชื้นในดิน V1

โพรบวัดความชื้นในดิน V1
โพรบวัดความชื้นในดิน V1
โพรบวัดความชื้นในดิน V1
โพรบวัดความชื้นในดิน V1
โพรบวัดความชื้นในดิน V1
โพรบวัดความชื้นในดิน V1

ความชื้นในดินวัดจากความต้านทานระหว่างโพรบโลหะสองชิ้นที่เสียบเข้ากับพื้น (ห่างกันประมาณ 1 นิ้ว) แผนผังแสดงบนรูปภาพ

โพรบแรกที่ผมลองใช้คือโพรบที่คุณสามารถซื้อได้จากผู้ให้บริการอินเทอร์เน็ตหลายราย (แบบนี้)

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

ขั้นตอนที่ 3: โพรบความชื้นในดิน V2

โพรบวัดความชื้นในดิน V2
โพรบวัดความชื้นในดิน V2
โพรบวัดความชื้นในดิน V2
โพรบวัดความชื้นในดิน V2

โพรบ "รุ่นต่อไป" เป็นแบบบ้านที่ทำจากตะปูสังกะสีสองอัน กระดานไม้ และสายไฟสองสามเส้น

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

ฉันประหลาดใจที่เล็บชุบสังกะสียังกัดเซาะ (แม้ว่าจะช้ากว่าฟอยล์บาง ๆ) แต่ก็ยังเร็วกว่าที่ฉันต้องการ

โพรบอีกอันได้รับการออกแบบโดยใช้เข็มกำจัดสิวแบบสแตนเลส (ดูขั้นตอนต่อไป).

ขั้นตอนที่ 4: โพรบความชื้นในดิน V3 "Katana"

โพรบวัดความชื้นในดิน V3
โพรบวัดความชื้นในดิน V3
โพรบวัดความชื้นในดิน V3
โพรบวัดความชื้นในดิน V3

โพรบสแตนเลส (คล้ายดาบซามูไร ดังนั้นชื่อ) จึงเป็นโพรบที่ใช้อยู่ในปัจจุบัน

ฉันเชื่อว่าการสึกกร่อนอย่างรวดเร็วอาจเกิดจากการที่โพรบอยู่ภายใต้แรงดันไฟฟ้า (24x7) เสมอ ไม่ว่าการวัดจริงจะเกิดขึ้นบ่อยเพียงใด

เพื่อลดปัญหานี้ ฉันเปลี่ยนช่วงการวัดเป็นหนึ่งครั้งใน 1 ชั่วโมง (เพราะนี่ไม่ใช่ระบบเรียลไทม์) และเชื่อมต่อโพรบกับพินดิจิทัลตัวใดตัวหนึ่งแทนที่จะเป็น 5v ถาวร ปัจจุบัน โพรบใช้พลังงานเพียง 16 นาทีต่อวัน แทนที่จะเป็น 24 ชั่วโมง ซึ่งน่าจะเพิ่มอายุการใช้งานได้อย่างมาก

ขั้นตอนที่ 5: ฟังก์ชันพื้นฐาน

ฟังก์ชันพื้นฐาน
ฟังก์ชันพื้นฐาน
ฟังก์ชันพื้นฐาน
ฟังก์ชันพื้นฐาน

APIS ใช้บอร์ด Arduino UNO

APIS วัดความชื้นในดิน 1 ครั้งต่อชั่วโมง และหากต่ำกว่าเกณฑ์ที่กำหนดไว้ล่วงหน้า ให้เปิดปั๊มสำหรับช่วงเวลาที่กำหนดไว้ล่วงหน้า จำนวนครั้งที่กำหนดล่วงหน้าโดยคั่นด้วยช่วง "ความอิ่มตัว"

เมื่อถึงเกณฑ์ความชื้นเป้าหมาย กระบวนการจะกลับไปที่โหมดการวัดชั่วโมงละครั้ง

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

อย่างไรก็ตาม หากไม่สามารถทำได้ถึงขีดจำกัดความชื้นที่ต่ำกว่า จะมีการประกาศเงื่อนไขข้อผิดพลาด (ส่วนใหญ่อาจเป็นปัญหาของโพรบ หรือถังจ่ายน้ำหมด เป็นต้น) ภายใต้เงื่อนไขข้อผิดพลาด เครื่องจะเข้าสู่โหมดสลีปเป็นเวลา 24 ชั่วโมงโดยไม่ทำอะไรเลย จากนั้นจะลองอีกครั้ง

ขั้นตอนที่ 6: 7 เซ็กเมนต์ DISPLAY

จอแสดงผล 7 ส่วน
จอแสดงผล 7 ส่วน
จอแสดงผล 7 ส่วน
จอแสดงผล 7 ส่วน

TM1650 ฐาน 7 ส่วนแสดงผล:

เดิมที APIS ไม่มีความสามารถในการแสดงผล เป็นไปไม่ได้ที่จะบอกระดับความชื้นในดินในปัจจุบันโดยไม่ต้องเชื่อมต่อผ่าน USB

เพื่อแก้ไขว่าฉันได้เพิ่มการแสดงผล 4 หลัก 7 ส่วนในระบบ: บน Fasttech.com

ฉันไม่พบห้องสมุดที่จะทำงานกับโมดูลนี้ได้ทุกที่ (ไม่มีแผ่นข้อมูลสำหรับโมดูลนี้) ดังนั้นหลังจากผ่านไปสองสามชั่วโมงของการตรวจสอบพอร์ตI²Cและการทดลอง ฉันจึงตัดสินใจเขียนไลบรารีไดรเวอร์ด้วยตัวเอง

รองรับการแสดงผลสูงสุด 16 หลัก (โดยที่ 4 เป็นค่าเริ่มต้น) สามารถแสดงอักขระ ASCII พื้นฐานได้ (โปรดทราบว่าอักขระบางตัวไม่สามารถสร้างด้วย 7 เซ็กเมนต์ ดังนั้นจึงไม่นำตัวอักษรเช่น W, M ฯลฯ มาใช้) รองรับทศนิยม แสดงจุดบนโมดูล รันสตริงของอักขระ (เพื่อแสดงมากกว่า 4 ตัวอักษร) และรองรับความสว่าง 16 องศา

ห้องสมุดมีอยู่ในสนามเด็กเล่น arduino.cc ที่นี่ ไลบรารีไดรเวอร์ TM1650

วิดีโอตัวอย่างสามารถดูได้ที่นี่

แอนิเมชั่น:

แอนิเมชั่น 7 เซ็กเมนต์เล็กน้อยถูกใช้งานระหว่างการวิ่งทางน้ำ

  • ในขณะที่ปั๊มทำงาน จุดดิจิตอลบนจอแสดงผลจะทำงานในรูปแบบซ้ายไปขวา ซึ่งเป็นสัญลักษณ์ของกระแสน้ำ: วิดีโอแอนิเมชั่นการรดน้ำ
  • ในช่วง "ความอิ่มตัว" จุดต่างๆ จะวิ่งจากจุดกึ่งกลางของจอแสดงผลออกไปด้านนอก ซึ่งเป็นสัญลักษณ์ของความอิ่มตัว: วิดีโอแอนิเมชั่นความอิ่มตัว

ไม่จำเป็น แต่เป็นสัมผัสที่ดี

ขั้นตอนที่ 7: การควบคุมปั๊มและปั๊ม

ปั๊มและการควบคุมปั๊ม
ปั๊มและการควบคุมปั๊ม
ปั๊มและการควบคุมปั๊ม
ปั๊มและการควบคุมปั๊ม

ปั๊ม

ฉันใช้ปั๊มของเหลว Peristaltic 12v (มีให้ที่นี่) เพื่อรดน้ำต้นไม้ ปั๊มให้พลังงานประมาณ 100 มล./นาที (ซึ่งเท่ากับ 1/2 ของแก้ว - ดีที่จำไว้เมื่อกำหนดค่าเวลาการทำงานของน้ำเพื่อหลีกเลี่ยงไม่ให้น้ำล้น และมันก็เกิดขึ้น 8-))

การควบคุมปั๊ม - L293D

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

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

ขั้นตอนที่ 8: การกำหนดค่าและปุ่ม

การกำหนดค่าและปุ่ม
การกำหนดค่าและปุ่ม
การกำหนดค่าและปุ่ม
การกำหนดค่าและปุ่ม

ปุ่ม:

ฉันใช้สามปุ่มเพื่อกำหนดค่าและควบคุม APIS

การกดปุ่มทั้งหมดจะถูกประมวลผลตามการขัดจังหวะของพิน (ไลบรารี PinChangeInt)

  • สีแดง (ขวาสุด) คือปุ่ม SELECT ทำให้ APIS เข้าสู่โหมดการกำหนดค่าและยังยืนยันค่าต่างๆ
  • ปุ่มซ้ายสุดและกลางสีดำ (PLUS และ MINUS ตามลำดับ) ใช้เพื่อเพิ่ม/ลดค่าที่กำหนดค่าได้ (ในโหมดการกำหนดค่า) หรือแสดงวันที่/เวลาปัจจุบันและข้อมูลการรดน้ำครั้งสุดท้าย (ในโหมดปกติ)

เนื่องจากเวลาส่วนใหญ่ที่หน้าจอปิดอยู่ ปุ่มทั้งหมดจะ "ปลุก" APIS ขึ้นมาก่อน จากนั้นจึงใช้ฟังก์ชันดังกล่าวในการกดครั้งที่สอง

จอแสดงผลจะปิดลงหลังจากไม่มีการใช้งานเป็นเวลา 30 วินาที (เว้นแต่จะมีการรดน้ำ)

APIS ทำงานผ่านพารามิเตอร์การกำหนดค่าเมื่อเริ่มต้นเพื่อตรวจสอบ: video

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

APIS มีโหมดการกำหนดค่าสี่โหมด:

  1. กำหนดค่าพารามิเตอร์การรดน้ำ
  2. ตั้งค่านาฬิกาเรียลไทม์
  3. "แรง" รดน้ำต้นไม้
  4. ทบทวนบันทึกการรดน้ำ

พารามิเตอร์การรดน้ำ:

  1. ความชื้นในดินต่ำ (เริ่มรดน้ำ)
  2. เกณฑ์ความชื้นในดินสูง (หยุดรดน้ำ)
  3. ระยะเวลาของการรดน้ำครั้งเดียว (เป็นวินาที)
  4. จำนวนการรดน้ำในหนึ่งชุด
  5. ระยะเวลาความอิ่มตัวของดินระหว่างการวิ่งภายในหนึ่งชุด (เป็นนาที)
  6. เวลาเปิดใช้งานโหมดกลางคืน (เวลาทหาร ชั่วโมงเท่านั้น)
  7. เวลาสิ้นสุดโหมดกลางคืน (เวลาทหาร ชั่วโมงเท่านั้น)
  8. การปรับสุดสัปดาห์สำหรับเวลาสิ้นสุดของโหมดกลางคืน (เป็นชั่วโมง)

การตั้งค่านาฬิกาตามเวลาจริง:

  1. ศตวรรษ (เช่น 20 ปี 2558)
  2. ปี (เช่น 15 ปี 2558)
  3. เดือน
  4. วัน
  5. ชั่วโมง
  6. นาที

นาฬิกาจะถูกปรับโดยตั้งค่าวินาทีเป็น 00 เมื่อยืนยันนาที

การตั้งค่ามีระยะหมดเวลา 15 วินาที หลังจากนั้นการเปลี่ยนแปลงทั้งหมดจะถูกยกเลิก

เมื่อบันทึก พารามิเตอร์จะถูกบันทึกลงในหน่วยความจำ EEPROM

บังคับให้มีการรดน้ำ:

ยังไม่แน่ใจว่าทำไมฉันถึงใช้มัน แต่มันอยู่ที่นั่น เมื่อเปิดใช้งาน APIS จะเข้าสู่โหมดการรดน้ำ โหมดรดน้ำยังคงขึ้นอยู่กับเกณฑ์ ซึ่งหมายความว่าหากคุณบังคับให้รดน้ำแต่ความชื้นในดินสูงกว่าค่า HIGH การรดน้ำจะสิ้นสุดลงทันที โดยทั่วไปจะใช้ได้ก็ต่อเมื่อความชื้นในดินอยู่ระหว่างเกณฑ์ LOW และ HIGH

การตรวจสอบบันทึกการรดน้ำ:

APIS เก็บบันทึกการรดน้ำ 10 ครั้งล่าสุดในหน่วยความจำ EEPROM ซึ่งผู้ใช้สามารถตรวจสอบได้ เก็บเฉพาะวันที่/เวลาที่รดน้ำเท่านั้น เกณฑ์ (ในขณะนั้น) และจำนวนการรันที่ใช้เพื่อให้ถึงขีดจำกัดสูงจะไม่ถูกจัดเก็บ (แม้ว่าในเวอร์ชันถัดไปอาจเป็น)

ขั้นตอนที่ 9: RTC: นาฬิกาตามเวลาจริง

RTC: นาฬิกาเวลาจริง
RTC: นาฬิกาเวลาจริง

โหมดกลางคืน

เมื่อ APIS ปลุกฉันในตอนกลางคืน แนวคิดในการใช้ "โหมดกลางคืน" ก็ผุดขึ้นมา

โหมดกลางคืนคือเมื่อไม่มีการวัดค่า ปิดหน้าจอ และไม่มีการรดน้ำ

ในวันทำการปกติ APIS "ตื่น" เวลา 7.00 น. (กำหนดค่าได้) และเข้าสู่โหมดกลางคืนเวลา 22.00 น. (กำหนดค่าได้) ในวันหยุด APIS จะใช้การตั้งค่า "การปรับวันหยุดสุดสัปดาห์" เพื่อชะลอการปลุก (เช่น 9.00 น. เป็นต้น), หากปรับวันหยุดสุดสัปดาห์เป็น 2 ชั่วโมง)

RTC BREAKOUT BOARD เทียบกับ "ซอฟต์แวร์" RTC:

ฉันใช้ฮาร์ดแวร์ RTC (มีให้ที่นี่) เพื่อติดตามวันที่/เวลาและเข้า/ออกจากโหมดกลางคืน

เป็นทางเลือกที่จะใช้ เนื่องจากสเก็ตช์สามารถคอมไพล์เพื่อใช้ที่เรียกว่า "ซอฟต์แวร์" RTC (โดยใช้ฟังก์ชันมิลลิวินาที () ของ Arduino)

ข้อเสียของการใช้ซอฟต์แวร์ RTC คือ คุณต้องตั้งเวลาทุกครั้งที่เปิด APIS

ฉันแก้ไขไลบรารี RTC มาตรฐานเพื่อให้ตรงกับ API ทุกประการ และเพื่อแก้ไขปัญหามิลลิวินาทีแบบโรลโอเวอร์ (โปรดดูขั้นตอนการวาดภาพสำหรับการดาวน์โหลด)

ขั้นตอนที่ 10: รวมทุกอย่างเข้าด้วยกัน

วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน

ทั้งระบบ (ยกเว้นโพรบ) รวมทั้งปั๊มจะพอดีกับกล่องขนาดเล็กสำหรับ Arduino Uno

  1. จอแสดงผล TM1650 ใช้อินเทอร์เฟซ TWI ดังนั้นสาย SDA และ SDC จะไปที่ขา Arduino A4 และ A5 ตามลำดับ อีกสองสายคือ +5v และ GND
  2. บอร์ด RTC ใช้อินเทอร์เฟซ TWI เช่นเดียวกับด้านบน (TM1650 และ RTC ใช้พอร์ตต่างกันจึงอยู่ร่วมกันอย่างสันติ) พิน RTC +5v เชื่อมต่อกับพิน Arduino 12 (ขับเคลื่อนผ่านพินดิจิทัลแทน +5v) จำไม่ได้ว่าฉันทำไปทำไม คุณไม่จำเป็นต้องทำ
  3. พิน L293D มีการเชื่อมต่อดังนี้: เปิดใช้งาน (พิน 1) ถึง D5 และพินควบคุมทิศทาง 2 และ 7 ถึงพิน arduino D6 และ D7 ตามลำดับ
  4. ปุ่มเชื่อมต่อกับพิน D2, D8 และ D9 สำหรับ SELECT, PLUS และ MINUS ตามลำดับ (ปุ่มใช้งานกับตัวต้านทาน 10K แบบดึงลง - ในการกำหนดค่า "แอ็คทีฟสูง")
  5. กำลังไฟ +5v ของโมดูล PROBE เชื่อมต่อกับ Arduino pin 10 (เพื่อเปิดใช้งานการวัดเป็นระยะ) และโพรบเชื่อมต่อกับพินอะนาล็อก A1

หมายเหตุ: เพิ่มไฟล์ schematics Fritzing ลงในที่เก็บ github แล้ว

ขั้นตอนที่ 11: สเก็ตช์และอื่น ๆ

สเก็ตช์และอื่นๆ
สเก็ตช์และอื่นๆ

อัปเดตเดือนมีนาคม 2558:

  1. เพิ่มฟังก์ชันการทำงานเพื่อระบายน้ำออกจากท่อหลังจากรดน้ำเพื่อป้องกันไม่ให้เชื้อราขึ้น
  2. การบันทึกที่กว้างขวางยิ่งขึ้นรวมถึงวันที่/เวลาของการเริ่มต้นและสิ้นสุดการรดน้ำ ความชื้นเริ่มต้นและสิ้นสุด และจำนวนครั้งที่ปั๊มทำงานในระหว่างการรดน้ำ
  3. อัปเดตรูทีนข้อผิดพลาดแล้ว: อุปกรณ์จะฮาร์ดรีเซ็ตหลังจากเข้าสู่เงื่อนไขข้อผิดพลาด 24 ชั่วโมง
  4. คอมไพล์ใหม่ด้วย TaskScheduler 2.1.0
  5. แก้ไขข้อผิดพลาดอื่น ๆ อีกมากมาย

เมื่อวันที่ 18 พฤศจิกายน 2558 APIS ได้รับการอัปเกรดด้วยคุณสมบัติเพิ่มเติมดังต่อไปนี้:

  1. การใช้ไลบรารี DirectIO เพื่อการเปลี่ยนแปลงพินที่เร็วและง่ายขึ้น
  2. การใช้ไลบรารีเขตเวลาเพื่อสลับระหว่าง EST และ EDT. อย่างถูกต้อง
  3. เพิ่มตรรกะการดีกลับของปุ่มโดยใช้ TaskScheduler เท่านั้น
  4. เพิ่มฟังก์ชันการทำงานซ้ำของปุ่ม (รอบค่าหากกดปุ่มค้างไว้ โดยความเร็วรอบจะเพิ่มขึ้นหลังจาก 5 รอบ)
  5. คอมไพล์ใหม่ด้วย IDE 1.6.6 AVR 1.6.9 เทียบกับ TaskScheduler 1.8.4
  6. ย้ายไปที่ Github

ห้องสมุด:

APIS ขึ้นอยู่กับไลบรารีต่อไปนี้:

  • EEPROM - ส่วนหนึ่งของ Arduino IDE
  • สายไฟ - ส่วนหนึ่งของ Arduino IDE
  • EnableInterrupt - พร้อมใช้งานบน Github
  • เขตเวลา - พร้อมใช้งานบน Github
  • DirectIO - พร้อมใช้งานบน Github

แก้ไข (แยก) โดยฉัน:

  • เวลา - พร้อมใช้งานบน Github
  • RTClib - พร้อมใช้งานบน Github

พัฒนาโดยฉัน:

  • TM1650 - พร้อมใช้งานบน Github
  • TaskScheduler - พร้อมใช้งานบน Github
  • AvgFilter - พร้อมใช้งานบน Github

ร่าง:

เวอร์ชันล่าสุดของร่าง APIS รวมถึงไฟล์แผนผังแบบ fritzing มีอยู่ใน Github

แผ่นข้อมูล:

  • L293D: ที่นี่
  • กระดานฝ่าวงล้อม RTC: ที่นี่

ขั้นตอนที่ 12: *** เราชนะ !!! ***

*** เราชนะ !!! ***
*** เราชนะ !!! ***

โปรเจ็กต์นี้ได้รับรางวัลรองชนะเลิศในการประกวด Home Automation ซึ่งสนับสนุนโดย Dexter Industries

ตรวจสอบออก! วู้ฮู!!!

ระบบอัตโนมัติในบ้าน
ระบบอัตโนมัติในบ้าน
ระบบอัตโนมัติในบ้าน
ระบบอัตโนมัติในบ้าน

รางวัลที่สองใน Home Automation

แนะนำ: