โปรเจคของพี่นี้ออกแบบมาเพื่อช่วยให้คนเลี้ยงสัตว์หลายๆ คนได้ให้อาหารน้องๆ ในเวลาเดิมทุกวัน และปริมาณที่แม่นยำทุกครั้ง งานนี้จัดไปวัยรุ่น ใช้ได้กับสัตว์เลี้ยงหลายชนิดเลย ไม่ว่าจะเป็นแมว หมา ปลา นกแก้ว และอื่นๆ อีกเพียบ
ตัวที่ทำนี่พี่สร้างขึ้นมาให้บ่อปลาและปลาคาร์พสุดที่รักของพี่โดยเฉพาะ เพราะมันต้องวางอยู่ข้างนอก เลยต้องกันน้ำได้ด้วย
ในวิดีโอด้านบนน้องจะเห็นตัวต้นแบบเวอร์ชันอัลฟ่าในการทดสอบครั้งแรกเลย น้องสามารถตั้งเวลาให้อาหารเป็นชั่วโมง นาที และวินาทีได้ แถมยังสั่งให้อาหารด้วยรีโมทได้เมื่อไหร่ก็ได้ที่อยากให้ การสั่งให้อาหารด้วยรีโมทจะยกเลิกการให้อาหารครั้งถัดไปที่ตั้งเวลาไว้
Redundant Mechanics: เครื่องให้อาหารสัตว์อัตโนมัติ
การออกแบบกลไกให้มันตักอาหารแล้วเทลงพื้นเนี่ย ง่ายจะตายไป แต่การทำให้กลไกมัน ติดขัดไม่ได้, ให้อาหารซ้ำไม่ได้, และต้องทำงานต่อได้แม้ไฟดับ นี่สิ ต้องใช้วิศวกรรมที่แน่นหนาจริงจัง Smart Pet Feeder ตัวนี้เลยเป็นแบบฝึกหัดในการสร้างระบบที่ซ้ำซ้อนและล้มเหลวไม่ได้ โดยใช้ชิ้นส่วนอย่าง DS3231 RTC และเซอร์โวแบบหนักๆ
กำจัดจุดบอดเรื่อง "การติดขัด"
จุดอ่อนใหญ่ของเครื่องให้อาหาร DIY หลายๆ เครื่องคือการใช้ประตูแบบเลื่อนเปิด-ปิด เม็ดอาหารแข็งๆ เม็ดนึงไปติดค้างระหว่างประตูกับกรอบ เซอร์โวก็พยายามปิดจนมอเตอร์ไหม้ แล้วอาหารในถังก็เทลงพื้นหมดเกลี้ยง!
- กลไกแบบล้อหมุน (Wheel Mechanism): ทางออกคือการออกแบบ "ล้อใบพัด (Paddle Wheel)" หรือล้อหมุนแนวนอนที่มีช่องว่าง
- เซอร์โว MG996R แบบเกียร์โลหะ จะหมุนล้อนี้ทีละ 45 องศาพอดี
- ช่องที่บรรจุอาหารจะมาอยู่ตรงกับรูออกพอดี ไม่มีประตูให้ติดขัด! อาหารก็จะหล่นลงมาเองด้วยแรงโน้มถ่วง
การทำงานของเวลาแบบไร้ที่ติ (The RTC Interlock)
ห้ามใช้ delay() เป็นอันขาด ต้องใช้การตั้งเวลาแบบเรียลไทม์
- โมดูล DS3231 RTC I2C ที่เสถียรมากๆ จะรักษาเวลาได้แม่นยำ
- ภายใน
loop()เราจะดึงค่าชั่วโมงมา:int currentHour = rtc.now().hour(); - ระบบธงสั่งงานครั้งเดียว (Single-Trigger Flag):
if (currentHour == 8 && feedStatus == false) { DeployFoodServo(); // เปิดมอเตอร์แค่ครั้งเดียว feedStatus = true; // ล็อกระบบทางกายภาพ! } if (currentHour == 9) { feedStatus = false; // รีเซ็ตระบบหลังจากผ่านไป 1 ชั่วโมง } - กับดักบูลีนนี้รับประกันว่า แม้ Arduino จะรีเซ็ตแบบสุ่มตอน 8:05 น. มันก็จะไม่เผลอให้อาหารสัตว์เป็นมื้อเช้าครั้งที่สอง!
ข้อกำหนดเพื่อความปลอดภัยเมื่อระบบล้มเหลว
- Arduino Uno/Nano
- โมดูล DS3231 RTC (จำเป็นมาก แบตเตอรี่สำรองจะปกป้องตารางการให้อาหารตอนไฟกระชาก)
- เซอร์โว MG996R แบบแรงบิดสูง เกียร์โลหะ เซอร์โวพลาสติกทั่วไปจะพังทันทีเมื่อเจอกับอาหารแข็ง
- เครื่องพิมพ์ 3D สำหรับสร้างถังอาหารแบบล้อใบพัดหมุนป้องกันการติดขัด
- พาวเวอร์แบงค์สำรองฉุกเฉิน สำหรับจ่ายไฟให้ Arduino ถ้าไฟหลักดับ ห้ามช็อตนะตัวนี้