สารบัญ:

เครื่องให้อาหารสุนัขอัตโนมัติ: 6 ขั้นตอน
เครื่องให้อาหารสุนัขอัตโนมัติ: 6 ขั้นตอน

วีดีโอ: เครื่องให้อาหารสุนัขอัตโนมัติ: 6 ขั้นตอน

วีดีโอ: เครื่องให้อาหารสุนัขอัตโนมัติ: 6 ขั้นตอน
วีดีโอ: [รีวิว] การใช้งานเครื่องให้อาหารสัตว์ AUTOBOT Pet Food Feeder มีกล้องในตัว 2024, พฤศจิกายน
Anonim
เครื่องให้อาหารสุนัขอัตโนมัติ
เครื่องให้อาหารสุนัขอัตโนมัติ

นี่คือโครงการของฉันเกี่ยวกับเครื่องให้อาหารสัตว์เลี้ยงอัตโนมัติ ชื่อของฉันคือ Parker ฉันอยู่เกรด 11 และฉันได้ทำโครงการนี้เมื่อวันที่ 11 พฤศจิกายน 2020 เป็น CCA (กิจกรรมปิดท้ายหลักสูตร) ในโครงการนี้ ฉันจะแสดงให้คุณเห็นถึงวิธีการสร้างเครื่องให้อาหารสัตว์เลี้ยงอัตโนมัติด้วย Arduino UNO คุณสามารถเลือกเวลาที่คุณสามารถเปลี่ยนได้ อาหารจะจ่ายผ่านสว่านและให้อาหารสัตว์เลี้ยงของคุณ!

เสบียง

อิเล็กทรอนิกส์:

  • Arduino UNO
  • L298N - 10$ - ควบคุม Nema 17
  • NEMA 17 - 10$ - หมุนสว่านเพื่อให้อาหารกระจาย
  • RTC (DS1307) - 10$ - ให้เวลา
  • แหล่งจ่ายไฟ 12V - 5$ - ขับเคลื่อนทุกอย่าง
  • Mini Breadboard - สำหรับพื้นที่เดินสายไฟเพิ่มเติม
  • สายจัมเปอร์ - เชื่อมต่อทุกอย่าง
  • สายหญิงกับชาย - เชื่อมต่อทุกอย่าง

ฮาร์ดแวร์:

  • เส้นใยพิมพ์ 3 มิติ - สำหรับเครื่องพิมพ์ 3 มิติ
  • 2 M4 Bolts - ยึดแผ่นฐานเข้าที่
  • น็อต Nema 17 4 ตัว - กด nema ค้างไว้
  • PVC T 48 มม. ขนาดภายใน 66 มม. ขนาดภายนอก - 3$

เครื่องมือ:

  • เครื่องพิมพ์ 3 มิติ
  • เจาะ
  • ปืนบัดกรี

ขั้นตอนที่ 1: ภาพรวมของการออกแบบ

ภาพรวมของการออกแบบ
ภาพรวมของการออกแบบ
ภาพรวมของการออกแบบ
ภาพรวมของการออกแบบ
ภาพรวมของการออกแบบ
ภาพรวมของการออกแบบ
ภาพรวมของการออกแบบ
ภาพรวมของการออกแบบ

การออกแบบเครื่องให้อาหารสัตว์เลี้ยงนั้นง่ายมาก ฮอปเปอร์จะไปที่ด้านบนของ PVC T จากนั้นมีฝาปิดที่ด้านหลังของ PVC T (ดังแสดงในรูปภาพ) โดยที่ Nema 17 ติดอยู่ จากนั้น Nema 17 จะถูกดันเข้าไปที่ด้านหลังของสว่านซึ่งสามารถมองเห็นได้ด้านบน และโบลต์จะไปที่ด้านข้างเพื่อยึดเข้าที่เพื่อไม่ให้รูที่ด้านบนเห็นบิดเบี้ยว!

จากนั้นสว่านก็จะดันอาหารออกจากท่อและใส่ชาม!

ขั้นตอนที่ 2: ภาพรวมของ Code

ภาพรวมของรหัส
ภาพรวมของรหัส
ภาพรวมของรหัส
ภาพรวมของรหัส
ภาพรวมของรหัส
ภาพรวมของรหัส

RTC & The stepper มี libary ชื่อ RTClib.h และ Stepper.h ซึ่งเพิ่มโค้ดแบบง่ายสำหรับ RTC & Stepper คำสั่ง if นั้นง่ายมาก มันบอกว่าถ้าชั่วโมง & นาทีเท่ากับเวลาดังกล่าว มันจะหมุน nema ซึ่งจะจ่ายอาหาร รหัสที่เหลือนั้นเข้าใจง่ายมากแม้กระทั่งกับคนที่มีประสบการณ์มาทั้งวัน

ขั้นตอนที่ 3: การติด Nema 17 เข้ากับ Base Plate & Auger

การติด Nema 17 เข้ากับ Base Plate & Auger
การติด Nema 17 เข้ากับ Base Plate & Auger
การติด Nema 17 เข้ากับ Base Plate & Auger
การติด Nema 17 เข้ากับ Base Plate & Auger
การติด Nema 17 เข้ากับ Base Plate & Auger
การติด Nema 17 เข้ากับ Base Plate & Auger

ขั้นแรก คุณต้องนำเพลทฐานของคุณและติดเข้ากับ Nema 17 ของคุณโดยใช้รูที่ทำไว้ล่วงหน้าบนเพลทฐาน เมื่อเสร็จแล้วคุณต้องการแนบสว่านกับ Nema โดยใช้รูด้านหลัง จากนั้นเชื่อมต่อแผ่นฐานกับสว่านและ Nema ที่แนบมาจากนั้นขันสลักเกลียว M2 ลงในแต่ละด้าน

ขั้นตอนที่ 4: การเดินสายไฟ L298N & RTC

เดินสายไฟ L298N & RTC
เดินสายไฟ L298N & RTC
เดินสายไฟ L298N & RTC
เดินสายไฟ L298N & RTC

ขั้นตอนนี้จะบอกวิธีการต่อสาย L298N & RTC

เราจะเริ่มต้นด้วยพิน 8, 9, 10, 11 ถึง L298N

  • พิน 8 (สีขาว) ถึง IN1
  • ปักหมุด 9 (สีม่วง) ถึง IN2
  • ปักหมุด 10 (สีชมพู) ถึง IN3
  • PIN 11 (สีเหลือง) ถึง IN4

ต่อไปเราจะเชื่อมต่อ Nema 17 กับ L298N

  • OUT1 ต่อ 1 ใน NEMA
  • OUT2 ถึง 2 บน NEMA
  • OUT3 ถึง 3 บน NEMA
  • OUT4 ถึง 4 บน NEMA

กำลังเชื่อมต่อ 12v และ Arduino กับ L298N (ไม่พบ 12V ดังนั้นลองนึกภาพแบตเตอรี่ 9V เป็นพลังงาน)

  • โวลต์ เป็น 12V
  • กราวด์ไปที่ GND
  • 5V ถึง 5V บน Breadboard

การเชื่อมต่อ RTC กับ Arduino

  • GND เป็น GND
  • 5V ถึง 5V บน Breadboard
  • SDA เป็น A5
  • SCL ถึง A4

หมุดจัมเปอร์

หมุดจัมเปอร์ทั้งหมดควรจะอยู่บน L298N

ขั้นตอนที่ 5: การเข้ารหัสด้วยความคิดเห็น

การเข้ารหัสด้วยความคิดเห็น
การเข้ารหัสด้วยความคิดเห็น
การเข้ารหัสด้วยความคิดเห็น
การเข้ารหัสด้วยความคิดเห็น
การเข้ารหัสด้วยความคิดเห็น
การเข้ารหัสด้วยความคิดเห็น

รหัสชัดเจนในภาพด้านบน

// ชื่อ: Parker Frederick

// ชื่อโครงการ: Auto Pet Feeder // วันที่: วันอังคารที่ 10 พฤศจิกายน 2020 // ครู: M. Bonisteel // คำอธิบาย: ให้อาหารสัตว์เลี้ยงของคุณตามเวลาที่กำหนด!

// Libaries สำหรับสิ่งที่ฉันใช้ #include #include #include "RTClib.h"

RTC_DS1307 rtc; //บอกว่าฉันกำลังใช้ RTC อะไรอยู่

// นี่คือที่ที่คุณตั้งเวลาสำหรับอาหาร

// ชั่วโมง int mornFeedTime = 12; int nightFeedTime = 7; //นาที int mornFeedTimeM = 29; int nightFeedTimeM = 00; //วินาที int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7][12] = {"วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์"}; // ทำให้วันธรรมดากลายเป็นวันของสัปดาห์

const int feed = 200; // นี่คือขั้นตอนของคุณ ดังนั้นคุณต้องการให้หมุนกี่ครั้ง

Stepper myStepper(ฟีด, 8, 9, 10, 11); // หมุดของคุณสำหรับ Nema 17 และสเต็ปเปอร์อื่นๆ ส่วนใหญ่

การตั้งค่าเป็นโมฆะ () { Serial.begin (9600);

ในขณะที่ (!ซีเรียล); // หาก RTC ไม่ทำงาน RTC จะแสดงในหน้าจออนุกรมถ้า (! rtc.begin()) { Serial.println("ไม่พบ RTC"); ในขณะที่ (1); }

// สิ่งนี้จะบอกคุณว่า Real Time Clock กำลังทำงานอยู่หรือไม่ และมันจะแสดงบนหน้าจออนุกรมถ้า (! rtc.isrunning()) { Serial.println("RTC is running!");

rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // การดำเนินการนี้จะใช้เวลาคอมพิวเตอร์ของคุณและใช้กับ RTC

// หากคุณต้องการตั้งเวลาแทนเวลาที่คอมพิวเตอร์ คุณสามารถทำได้ที่นี่ //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // ปี/เดือน/วัน/ชั่วโมง/นาที/วินาที } myStepper.setSpeed(200); // ความเร็วที่คุณต้องการให้เลี้ยว }

วงเป็นโมฆะ () { DateTime ตอนนี้ = rtc.now ();

// สิ่งนี้จะทำให้ตัวแปรเหล่านี้เป็นชั่วโมงที่เป็นอยู่ในขณะนี้ ฯลฯ int hr = now.hour(); int mi = ตอนนี้นาที (); int se = ตอนนี้วินาที ();

// รหัสดังนั้นเมื่อถึงเวลาที่กำหนด มันจะจ่ายอาหารและมันจะหมุน 5 ครั้ง นี่ถ้าเป็นอาหารตอนเช้า

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) { Serial.println ("อาหารเช้า!"); myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

}

// รหัสดังนั้นเมื่อถึงเวลาที่กำหนด มันจะจ่ายอาหาร และจะหมุน 5 ครั้ง นี่คือการป้อนอาหารเวลากลางคืน

ถ้า (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) { Serial.println ("Dinner!"); myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700);

myStepper.step(-ฟีด); ล่าช้า (700); }

// จะแสดง YEAR, MONTH, DAY, HOUR, MINUTE, SECOND ในซีเรียล

Serial.print (ตอนนี้ปี (), ธ.ค.); Serial.print('/'); Serial.print(now.month(), ธ.ค.); Serial.print('/'); Serial.print(now.day(), ธ.ค.); Serial.print(" ("); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(" ("); Serial.print(daysOfTheWeek[ตอนนี้.dayOfTheWeek()]); Serial.print(now.hour(), ธ.ค.); Serial.print(':'); Serial.print(now.minute(), ธ.ค.); Serial.print(':'); Serial.print (ตอนนี้วินาที (), ธ.ค.); Serial.println(); }

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

เว็บไซต์ที่ฉันใช้สำหรับ Stepper motor ช่วยให้ฉันเข้าใจวิธีตั้งโปรแกรม stepper ให้ทำงาน ฉันไม่ได้เก็บอะไรไว้เลย มันช่วยให้ฉันเข้าใจวิธีเขียนโค้ด

ขั้นตอนที่ 6: ปัญหาและฉันจะแก้ไขได้อย่างไร

ปัญหาและวิธีแก้ปัญหา!
ปัญหาและวิธีแก้ปัญหา!

ปัญหาเล็กน้อยที่ฉันมี

  • ฉันต้องการแหล่งจ่ายไฟ 12v ฉันมีแบตเตอรี่ 9v เท่านั้น ฉันพบหนึ่งก้อนและมันได้รับการแก้ไขอย่างรวดเร็ว
  • เมื่อเชื่อมต่อ L298N กับ NEMA 17 ฉันมีสายไฟผิดที่ A และ A- ซึ่งทำให้กระวนกระวายใจเล็กน้อย ฉันเพียงแค่แก้ไขโดยเปลี่ยนสายไฟเป็นอย่างอื่น
  • พยายามทำให้โค้ดง่ายขึ้นเพราะในคำสั่ง if myStepper.step(-feed); ซ้ำแล้วซ้ำเล่าดูยุ่งเหยิง เลยต้องเปลี่ยนกลับ
  • ฉันมีเพลทฐานผิดขนาดตามที่เห็นในรูปภาพ ดังนั้นฉันจึงต้องพิมพ์ 3D ใหม่เล็กน้อยและมันลงตัวพอดี!
  • ปัญหาที่ฉันมีคือมันติดขัดเนื่องจากสว่านมีขนาดเล็กดังนั้นมันจึงติดขัด วิธีง่ายๆ ที่ฉันสามารถแก้ไขได้คือขยายสว่านให้ใหญ่ขึ้นเล็กน้อย!

แนะนำ: