- المواد المطلوبة
- مخطط الرسم البياني
- نموذج تغذية الحيوانات الأليفة المطبوع ثلاثي الأبعاد
- وحدة DS3231 RTC
- الكود والشرح
- عمل وحدة تغذية الحيوانات الأليفة الأوتوماتيكية
اليوم نقوم ببناء وحدة تغذية الحيوانات الأليفة الأوتوماتيكية القائمة على Arduino والتي يمكنها تقديم الطعام تلقائيًا إلى حيوانك الأليف في الوقت المناسب. تحتوي على وحدة DS3231 RTC (ساعة الوقت الحقيقي) ، والتي تستخدم لضبط الوقت والتاريخ اللذين يجب فيهما تقديم الطعام لحيوانك الأليف. لذلك ، من خلال ضبط الوقت وفقًا لجدول طعام حيوانك الأليف ، يسقط الجهاز أو يملأ وعاء الطعام تلقائيًا.
في هذه الدائرة ، نستخدم شاشة LCD مقاس 16 * 2 لعرض الوقت باستخدام وحدة DS3231 RTC مع Arduino UNO. أيضًا ، يتم استخدام محرك سيرفو لتدوير الحاويات لتوفير الطعام ولوحة مفاتيح مصفوفة 4 * 4 لضبط وقت تغذية الحيوانات الأليفة يدويًا. يمكنك ضبط زاوية الدوران ومدة فتح الحاوية وفقًا لكمية الطعام التي تريد تقديمها لحيوانك الأليف. قد تعتمد كمية الطعام أيضًا على حيوانك الأليف سواء كان كلبًا أو قطة أو طائرًا.
المواد المطلوبة
- اردوينو UNO
- لوحة مفاتيح ماتريكس 4 * 4
- 16 * 2 LCD
- اضغط الزر
- أجهزة السيارات
- المقاوم
- توصيل الأسلاك
- اللوح
مخطط الرسم البياني
في وحدة تغذية Cat التي تعتمد على Arduino ، للحصول على الوقت والتاريخ ، استخدمنا وحدة RTC (ساعة الوقت الحقيقي). لقد استخدمنا لوحة المفاتيح المصفوفة 4 * 4 لضبط وقت أكل الحيوانات الأليفة يدويًا بمساعدة شاشة LCD مقاس 16 × 2. يقوم محرك سيرفو بتدوير الحاوية وإسقاط الطعام في الوقت الذي حدده المستخدم. تُستخدم شاشة LCD لعرض التاريخ والوقت. يمكن العثور على العمل الكامل في الفيديو المقدم في النهاية.
نموذج تغذية الحيوانات الأليفة المطبوع ثلاثي الأبعاد
لقد صممنا حاوية Arduino Pet Feeder هذه باستخدام الطابعة ثلاثية الأبعاد. يمكنك أيضًا طباعة نفس التصميم عن طريق تنزيل الملفات من هنا. المواد المستخدمة لطباعة هذا النموذج هي PLA. تتكون من أربعة أجزاء كما هو موضح في الصورة أدناه:
قم بتجميع الأجزاء الأربعة وتوصيل محرك سيرفو كما هو موضح في الصورة أدناه:
إذا كنت جديدًا في الطباعة ثلاثية الأبعاد ، فإليك دليل البداية. يمكنك تنزيل ملفات STL لوحدة تغذية الحيوانات الأليفة من هنا.
وحدة DS3231 RTC
DS3231 هو وحدة نمطية RTC (ساعة الوقت الحقيقي). يتم استخدامه للحفاظ على التاريخ والوقت لمعظم مشاريع الإلكترونيات. تحتوي هذه الوحدة على مصدر طاقة خلية العملة المعدنية الخاص بها والتي تحافظ باستخدامه على التاريخ والوقت حتى عند إزالة الطاقة الرئيسية أو إعادة تعيين وحدة MCU. لذلك بمجرد أن نحدد التاريخ والوقت في هذه الوحدة ، سوف نتابعها دائمًا. في دائرتنا ، نستخدم DS3231 لإطعام الحيوانات الأليفة وفقًا للوقت ، الذي تم إعداده بواسطة مالك الحيوانات الأليفة ، مثل جهاز الإنذار. عندما تصل الساعة إلى الوقت المحدد ، فإنها تقوم بتشغيل محرك سيرفو لفتح بوابة الحاوية ويسقط الطعام في وعاء طعام الحيوانات الأليفة.
ملاحظة: عند استخدام هذه الوحدة لأول مرة ، عليك ضبط التاريخ والوقت. يمكنك أيضًا استخدام RTC IC DS1307 لقراءة الوقت باستخدام Arduino.
الكود والشرح
يتم إعطاء كود Arduino الكامل لـ Automatics Pet Feeder في النهاية.
لدى Arduino مكتبات افتراضية لاستخدام محرك Servo وشاشة LCD 16 * 2 معها. ولكن لاستخدام DS3231 RTC Module و 4 * 4 Matrix Keypad مع Arduino ، يجب عليك تنزيل المكتبات وتثبيتها. يوجد رابط التنزيل لكلتا المكتبتين أدناه:
- مكتبة الوحدة النمطية DS3231 RTC (ساعة الوقت الحقيقي)
- مكتبة لوحة مفاتيح ماتريكس 4 * 4
في الكود أدناه ، نحدد المكتبات ، “#include
#تضمن
في الكود أدناه ، نحدد خريطة المفاتيح للوحة مفاتيح المصفوفة 4 * 4 ونخصص دبابيس Arduino للصف وأعمدة لوحة المفاتيح.
مفاتيح char = {{'1'، '2'، '3'، 'A'}، {'4'، '5'، '6'، 'B'}، {'7'، '8'، ' 9 '،' C '}، {' * '،' 0 '،' # '،' D '}} ؛ بايت rowPins = {2، 3، 4، 5} ؛ البايت colPins = {6، 7، 8، 9} ؛
هنا ، نقوم بإنشاء لوحة المفاتيح باستخدام الأمر أدناه في الكود.
Keypad kpd = لوحة المفاتيح (makeKeymap (مفاتيح) ، rowPins ، colPins ، ROWS ، COLS) ؛
تعيين دبابيس A4 و A5 Arduino للاتصال بدبابيس SCL و SDA من DS3231. أيضًا ، تعيين دبابيس على شاشة LCD وتهيئة محرك سيرفو.
DS3231 rtc (A4 ، A5) ؛ مؤازرة servo_test ؛ // تهيئة كائن مؤازر لوحدة LCD المؤازرة LiquidCrystal المتصلة (A0 ، A1 ، A2 ، 11 ، 12 ، 13) ؛ // ينشئ كائن LC. المعلمات: (rs، enable، d4، d5، d6، d7)
في الكود أدناه ، نعلن عن t1 إلى t6 ، والمفتاح ، والمصفوفة r ، والخلاصة.
int t1 ، t2 ، t3 ، t4 ، t5 ، t6 ؛ تغذية منطقية = صحيح ؛ مفتاح شار الباحث ص
في الكود أدناه ، نقوم بإعداد جميع المكونات للبدء. مثل هذا الرمز "servo_test.attach (10) ؛" ويرد المؤازرة إلى 10 عشر دبوس من اردوينو. تحديد A0 و A1 و A2 على أنها دبوس الإخراج وتهيئة وحدة LCD و RTC.
إعداد باطل () {servo_test.attach (10) ؛ // قم بإرفاق دبوس إشارة المؤازرة بـ pin9 من arduino rtc.begin () ؛ lcd.begin (16.2) ؛ servo_test.write (55) ؛ Serial.begin (9600) ؛ pinMode (A0 ، الإخراج) ؛ pinMode (A1 ، الإخراج) ؛ pinMode (A2 ، الإخراج) ؛ }
الآن ، كيف تعمل الحلقة هو الجزء المهم الذي يجب فهمه. عندما يتم الضغط على زر الضغط ، فإنه يرتفع يعني 1 ، والذي يمكن قراءته بواسطة "buttonPress = digitalRead (A3)" . الآن يدخل داخل عبارة "if" ويستدعي وظيفة "setFeedingTime" . ثم يقارن الوقت الحقيقي والوقت الذي أدخله المستخدم. إذا كان الشرط صحيحًا ، مما يعني أن الوقت الفعلي والوقت الذي تم إدخاله هو نفسه ، فإن محرك سيرفو يدور بزاوية 100 درجة وبعد 0.4 ثانية من التأخير يعود إلى موضعه الأولي.
حلقة باطلة () {lcd.setCursor (0،0) ، زر int buttonPress = digitalRead (A3) ؛ إذا (buttonPress == 1) setFeedingTime () ؛ 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 ()) ؛ إذا (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100)؛ // الأمر لتدوير المؤازرة إلى تأخير الزاوية المحدد (400) ؛ servo_test.write (55) ؛ تغذية = خطأ ؛ }}
في رمز الوظيفة setFeedingTime () الباطل ، بعد الضغط على زر الضغط ، يمكننا إدخال وقت تغذية الحيوانات الأليفة ، ثم يتعين علينا الضغط على "D" لتوفير ذلك الوقت. عندما يتطابق الوقت المحفوظ مع الوقت الحقيقي ، تبدأ المؤازرة في الدوران.
setFeedingTime () باطلة {feed = true؛ كثافة العمليات أنا = 0 ؛ lcd.clear () ؛ lcd.setCursor (0،0) ؛ lcd.print ("ضبط وقت التغذية") ؛ lcd.clear () ؛ lcd.print ("HH: MM") ؛ lcd.setCursor (0،1) ؛ بينما (1) {key = kpd.getKey () ؛ شار ي if (key! = NO_KEY) {lcd.setCursor (j، 1)؛ lcd.print (مفتاح) ؛ ص = مفتاح 48 ؛ أنا ++ ؛ ي ++ ؛ إذا (j == 2) {lcd.print (":") ؛ ي ++ ؛ } تأخير (500)؛ } إذا (key == 'D') {key = 0 ؛ استراحة؛ }}}
عمل وحدة تغذية الحيوانات الأليفة الأوتوماتيكية
بعد تحميل الكود على Arduino Uno ، سيتم عرض الوقت والتاريخ على شاشة LCD مقاس 16 * 2. عندما تضغط على زر الضغط ، فإنه يطلب وقت تغذية الحيوانات الأليفة وعليك إدخال الوقت باستخدام لوحة مفاتيح المصفوفة 4 * 4. ستعرض الشاشة الوقت الذي تم إدخاله ، وعندما تضغط على "D" ، فإنها توفر الوقت. عندما يتطابق الوقت الحقيقي والوقت الذي تم إدخاله ، فإنه يقوم بتدوير محرك المؤازرة من موضعه الأولي 55 درجة إلى 100 درجة وبعد تأخير يعود مرة أخرى إلى موضعه الأولي. لذلك ، يتم توصيل محرك سيرفو ببوابة حاوية الطعام ، لذلك أثناء تحركها ، ستفتح البوابة وتسقط كمية من الطعام في الوعاء أو اللوحة. بعد تأخير 0.4 ثانية ، يدور محرك سيرفو مرة أخرى ويغلق البوابة. تكتمل العملية برمتها في غضون ثوان قليلة. هذه هي الطريقة التي يحصل بها حيوانك الأليف على الطعام تلقائيًا في الوقت الذي أدخلته.
قم بتغيير الوقت والدرجة وفقًا للطعام