จะสร้างระบบให้อาหารอัตโนมัติสำหรับสัตว์เลี้ยงของคุณได้อย่างไร?

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

วิธีการตั้งค่าอุปกรณ์และทำให้เป็นอัตโนมัติโดยใช้ Arduino

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

ขั้นตอนที่ 1: ส่วนประกอบที่ต้องการ (ฮาร์ดแวร์)

ขั้นตอนที่ 2: ส่วนประกอบที่จำเป็น (ซอฟต์แวร์)

ก่อนประกอบวงจรบนฮาร์ดแวร์ควรจำลอง หลังจากการจำลองเรามารู้ว่าวงจรของเราจะทำงานได้อย่างถูกต้องหรือไม่ ดังนั้นฉันได้รวมการจำลองซอฟต์แวร์ไว้ด้านล่างและสำหรับสิ่งนั้นซอฟต์แวร์ที่จำเป็นคือ Proteus Professional

ขั้นตอนที่ 3: หลักการทำงานของระบบสูบน้ำอัตโนมัติ

ในบรรดาส่วนประกอบทั้งหมดส่วนประกอบที่สำคัญที่สุดคือทรานซิสเตอร์ BC 547 มีทรานซิสเตอร์ทั้งหมด 7 ตัวและพวกมันจะตรวจจับระดับน้ำ LED จะตรวจสอบระดับน้ำในคอนเทนเนอร์ เมื่อน้ำขึ้นเซ็นเซอร์จะเริ่มสัมผัสกับน้ำและทรานซิสเตอร์จะทำงานและมีความคืบหน้าของกระแสในทรานซิสเตอร์ทำให้ไฟ LED สว่างขึ้น มีตัวต้านทาน จำกัด กระแสที่เกี่ยวข้องระหว่างทรานซิสเตอร์และ LED และป้องกันแรงดันไฟฟ้าที่สูงขึ้นเพื่อเข้าสู่ LED ท่อยางจะเชื่อมต่อกับถังเหนือศีรษะและจะรับผิดชอบในการเติมภาชนะเนื่องจากระดับจะลดลงต่ำกว่าเกณฑ์ที่กำหนด เมื่อน้ำลดลงต่ำกว่าเกณฑ์ปั๊มน้ำจะเริ่มทำงานและภาชนะจะเริ่มเต็ม ด้วยวิธีนี้ไม่จำเป็นต้องเติมภาชนะด้วยตนเองและสัตว์เลี้ยงจะได้รับน้ำอย่างต่อเนื่อง เพื่อความสะดวกของคุณฉันจะอธิบายรายละเอียดเกี่ยวกับการทำงานของ LED ไฟ LED ที่ติดตั้งในวงจรมีสี่ประเภทของสี แดงเหลืองเขียวและน้ำเงิน สีแดงแสดงว่าไม่มีน้ำในภาชนะบรรจุและไม่มีเซ็นเซอร์ใดสัมผัสกับน้ำและจำเป็นต้องเติมภาชนะ ไฟ LED สีเหลืองแสดงถึง 1/4 ของน้ำในภาชนะ ไฟ LED สีเขียวแสดงว่าภาชนะเต็มไปด้วยน้ำครึ่งหนึ่งและไฟ LED สีฟ้าแสดงว่าภาชนะนั้นเต็มไปด้วยน้ำ

ขั้นตอนที่ 4: จำลองวงจร

  1. หลังจากคุณดาวน์โหลดและติดตั้งซอฟต์แวร์ Proteus แล้วให้เปิดขึ้นมา เปิดแผนผังใหม่โดยคลิกที่ไฟล์ ISISไอคอนบนเมนู
  2. เมื่อแผนผังใหม่ปรากฏขึ้นให้คลิกที่ไฟล์ ไอคอนบนเมนูด้านข้าง เพื่อเปิดช่องให้คุณเลือกส่วนประกอบทั้งหมดที่จะใช้
  3. ตอนนี้พิมพ์ชื่อของส่วนประกอบที่จะใช้ในการสร้างวงจร ส่วนประกอบจะปรากฏในรายการทางด้านขวา
  4. ในทำนองเดียวกันข้างต้นให้ค้นหาส่วนประกอบทั้งหมดตามด้านบน พวกเขาจะปรากฏในไฟล์ อุปกรณ์ รายการ.

ขั้นตอนที่ 5: สร้างเค้าโครง PCB

ในขณะที่เรากำลังจะสร้างไฟล์ วงจรฮาร์ดแวร์ บน PCB เราจำเป็นต้องสร้างเค้าโครง PCB สำหรับวงจรนี้ก่อน

  1. ในการสร้างเค้าโครง PCB บน Proteus อันดับแรกเราต้องกำหนดแพ็คเกจ PCB ให้กับทุกส่วนประกอบบนแผนผัง ในการกำหนดแพ็กเกจให้คลิกเมาส์ขวาที่ส่วนประกอบที่คุณต้องการกำหนดแพ็กเกจแล้วเลือก เครื่องมือบรรจุภัณฑ์
  2. คลิกที่ตัวเลือก ARIES บนเมนูด้านบนเพื่อเปิดแผนผัง PCB
  3. จากรายการส่วนประกอบวางส่วนประกอบทั้งหมดบนหน้าจอในการออกแบบที่คุณต้องการให้วงจรของคุณมีลักษณะ
  4. คลิกที่โหมดติดตามและเชื่อมต่อหมุดทั้งหมดที่ซอฟต์แวร์บอกให้คุณเชื่อมต่อโดยชี้ลูกศร

ขั้นตอนที่ 6: แผนภาพวงจร

หลังจากประกอบส่วนประกอบและเดินสายไฟแล้วแผนภาพวงจรควรมีลักษณะดังนี้:

ขั้นตอนที่ 7: หลักการทำงานของระบบจัดหาอาหารอัตโนมัติ

หลักการทำงานของระบบจ่ายอาหารนั้นง่ายมากและองค์ประกอบที่สำคัญที่สุดในวงจรนี้คือ โมดูลนาฬิกาแบบเรียลไทม์ (DS3231)ซึ่งเราสามารถกำหนดวันที่และเวลาที่จะเสิร์ฟอาหารให้กับสัตว์เลี้ยงของเราได้ โมดูล LCD จะแสดงวันที่และเวลาและ เซอร์โวมอเตอร์ จะหมุนชามที่จะประกอบไปด้วยอาหาร ฉันได้รวมปุ่มกด 4 × 4 เพื่อตั้งเวลาให้อาหารสัตว์เลี้ยงด้วยตนเอง ฉันใช้เซอร์โวมอเตอร์เพื่อให้ชามที่ใส่อาหารสามารถหมุนได้และสามารถทิ้งลงในชามด้านล่างเพื่อให้สัตว์เลี้ยงสามารถกินได้ อาหารจะถูกทิ้งลงในชามด้านล่างตามช่วงเวลาที่คุณกำหนดไว้ในรหัส คุณสามารถกำหนดปริมาณอาหารได้เองโดยดูจากพฤติกรรมการกินของสุนัขแมวนกแก้ว ฯลฯ

ขั้นตอนที่ 8: จำลองวงจร

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

  • ส่วนประกอบจะปรากฏในไฟล์ อุปกรณ์ รายการ.

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

ขั้นตอนที่ 9: แผนภาพวงจร

แผนภาพวงจรของ Proteus ควรมีลักษณะดังนี้:

ขั้นตอนที่ 10: เริ่มต้นกับ Arduino

หากคุณไม่คุ้นเคยกับ Arduino IDE มาก่อนไม่ต้องกังวลเพราะด้านล่างนี้คุณสามารถดูขั้นตอนการเขียนโค้ดบนบอร์ดไมโครคอนโทรลเลอร์ได้อย่างชัดเจนโดยใช้ Arduino IDE คุณสามารถดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดได้จากที่นี่และทำตามขั้นตอนด้านล่าง:

  1. เมื่อบอร์ด Arduino เชื่อมต่อกับพีซีของคุณแล้วให้เปิด“ แผงควบคุม” และคลิกที่“ ฮาร์ดแวร์และเสียง” จากนั้นคลิกที่“ อุปกรณ์และเครื่องพิมพ์” ค้นหาชื่อของพอร์ตที่บอร์ด Arduino ของคุณเชื่อมต่ออยู่ ในกรณีของฉันมันคือ “ COM14” แต่อาจแตกต่างกันบนพีซีของคุณ
  2. ตอนนี้เปิด Arduino IDE จาก Tools ให้ตั้งค่าบอร์ด Arduino เป็น Arduino / Genuino UNO
  3. จากเมนูเครื่องมือเดียวกันให้ตั้งค่าหมายเลขพอร์ตที่คุณเห็นในแผงควบคุม
  4. ดาวน์โหลดรหัสที่แนบด้านล่างและคัดลอกไปยัง IDE ของคุณ ในการอัปโหลดรหัสให้คลิกที่ปุ่มอัปโหลด

คุณสามารถดาวน์โหลดรหัสได้จากที่นี่

ขั้นตอนที่ 11: ทำความเข้าใจรหัส

รหัสที่ใช้ในโครงการนี้ง่ายมากและแสดงความคิดเห็นได้ดี แม้ว่ามันจะอธิบายตัวเองได้ แต่ก็มีการอธิบายสั้น ๆ ด้านล่างดังนั้นหากคุณใช้บอร์ด Arduino อื่นเช่นนาโนเมกะ ฯลฯ คุณสามารถแก้ไขโค้ดได้อย่างถูกต้องแล้วเบิร์นลงบนบอร์ดของคุณ

  1. ที่ด้านบนจะมีไลบรารีต่าง ๆ รวมอยู่ด้วยเพื่อให้ไมโครคอนโทรลเลอร์สามารถควบคุมปุ่มกด, LCD, RTC IC และเซอร์โวมอเตอร์ได้
# รวม  # รวม  # รวม  # รวม 

2. จากนั้นแถวและคอลัมน์ของปุ่มกดจะเริ่มต้นพินของ Arduino ที่พวกเขาจะเชื่อมต่อจากนั้นปุ่มกดทั้งหมดจะถูกสร้างขึ้น

const byte ROWS = 4; // สี่แถว const byte COLS = 4; // สามคอลัมน์ // กำหนดคีย์อักขระของคีย์แมป [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; ไบต์ rowPins [ROWS] = {2, 3, 4, 5}; // เชื่อมต่อปุ่มกด ROW0, ROW1, ROW2 และ ROW3 กับหมุด Arduino เหล่านี้ ไบต์ colPins [COLS] = {6, 7, 8, 9}; // เชื่อมต่อปุ่มกด COL0, COL1 และ COL2 กับหมุด Arduino เหล่านี้ ปุ่มกด kpd = ปุ่มกด (makeKeymap (คีย์), rowPins, colPins, ROWS, COLS); // สร้างปุ่มกด

3. จากนั้น RTC IC เซอร์โวมอเตอร์และ Liquid LCD จะเริ่มทำงานและมีการประกาศตัวแปรบางตัวที่จะใช้สำหรับการคำนวณรันไทม์

DS3231 rtc (A4, A5); เซอร์โว servo_test; // เริ่มต้นเซอร์โวอ็อบเจ็กต์สำหรับเซอร์โว LiquidCrystal lcd ที่เชื่อมต่อ (A0, A1, A2, 11, 12, 13); // สร้างวัตถุ LC พารามิเตอร์: (rs, enable, d4, d5, d6, d7) // int angle = 0; // int potentio = A0; // เริ่มต้นพิน A0analog สำหรับโพเทนชิออมิเตอร์ int t1, t2, t3, t4, t5, t6; ฟีดบูลีน = จริง; // เงื่อนไขสำหรับปุ่มถ่านปลุก; int r [6]; 

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

การตั้งค่าเป็นโมฆะ () {servo_test.attach (10); // แนบพินสัญญาณของเซอร์โวเข้ากับพิน 9 ของ arduino rtc.begin (); lcd.begin (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, เอาท์พุท); PinMode (A1, เอาท์พุท); PinMode (A2, เอาท์พุท); }

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

ห่วงเป็นโมฆะ () {lcd.setCursor (0,0); ปุ่ม int กด; buttonPress = digitalRead (A3); ถ้า (buttonPress == 1) setFeedingTime (); //Serial.println(buttonPress); lcd.print ("เวลา:"); สตริง t = ""; เสื้อ = rtc.getTimeStr (); t1 = t.charAt (0) -48; t2 = t.charAt (1) -48; t3 = t.charAt (3) -48; t4 = t.charAt (4) -48; t5 = t.charAt (6) -48; t6 = t.charAt (7) -48; lcd.print (rtc.getTimeStr ()); lcd.setCursor (0,1); lcd.print ("วันที่:"); lcd.print (rtc.getDateStr ()); if (t1 == r [0] && t2 == r [1] && t3 == r [2] && t4 == r [3] && t5 <1 && t6 <3 && feed == จริง) {servo_test. เขียน (100); // คำสั่งหมุนเซอร์โวไปที่ความล่าช้าของมุมที่ระบุ (400); servo_test.write (55); ฟีด = เท็จ; }}

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

เป็นโมฆะ setFeedingTime () {feed = true; int ผม = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("ตั้งเวลาให้อาหาร"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); ในขณะที่ (1) {key = kpd.getKey (); ถ่าน j; ถ้า (คีย์! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (คีย์); r [i] = คีย์ -48; ผม ++; j ++; ถ้า (j == 2) {lcd.print (":"); j ++; } ล่าช้า (500); } ถ้า (คีย์ == 'D') {คีย์ = 0; หยุดพัก; }}}

ขั้นตอนที่ 12: การออกแบบฮาร์ดแวร์ของระบบสูบน้ำ

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

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

ขั้นตอนที่ 13: การออกแบบฮาร์ดแวร์ของระบบจ่ายอาหารอัตโนมัติ

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

นั่นคือทั้งหมดสำหรับวันนี้ อย่าลืมแบ่งปันประสบการณ์ของคุณหลังจากเสร็จสิ้นโครงการนี้และหากคุณมีปัญหาใด ๆ ในขณะที่อย่าลังเลที่จะถามในส่วนความคิดเห็น

Facebook Twitter Google Plus Pinterest