فهرست مطالب:

تغذیه کننده سگ خودکار: 6 مرحله
تغذیه کننده سگ خودکار: 6 مرحله

تصویری: تغذیه کننده سگ خودکار: 6 مرحله

تصویری: تغذیه کننده سگ خودکار: 6 مرحله
تصویری: مردی متوجه شد که سگ اش هر شب او را در هنگام خواب تماشا میکند سپس به حقیقت دلخراشی پی برد!!! 2024, نوامبر
Anonim
تغذیه کننده سگ خودکار
تغذیه کننده سگ خودکار

این پروژه من از تغذیه کننده حیوان خانگی خودکار است. نام من پارکر است و من در کلاس 11 هستم و این پروژه را در 11 نوامبر 2020 به عنوان CCA (فعالیت درخشان کننده دوره) در این پروژه ساختم ، من به شما نحوه ساخت یک تغذیه کننده خودکار حیوان خانگی با Arduino UNO را نشان خواهم داد. شما می توانید زمانی را که می توانید تغییر دهید انتخاب کنید. غذا از طریق چاقو پخش می شود و حیوانات خانگی شما را تغذیه می کند!

تدارکات

الکترونیک:

  • آردوینو UNO
  • L298N - 10 $ - Nema 17 را کنترل می کند
  • NEMA 17 - 10 $ - چنگال را می چرخاند تا غذا از بین برود
  • RTC (DS1307) - 10 $ - زمان می دهد
  • منبع تغذیه 12 ولت - 5 دلار - همه چیز را تامین می کند
  • Mini Breadboard - برای فضای سیم کشی اضافی
  • Jumper Wires - همه چیز را متصل می کند
  • سیم های زن به مرد - همه چیز را متصل می کند

سخت افزار:

  • رشته چاپ سه بعدی - برای چاپگرهای سه بعدی
  • 2 پیچ M4 - صفحه پایه را در جای خود نگه دارید
  • 4 پیچ Nema 17 - پیچ نما را پایین نگه دارید
  • PVC T 48mm ابعاد داخلی 66mm بعد خارج - 3 دلار

ابزارها:

  • چاپگر سه بعدی
  • مته
  • تفنگ لحیم کاری

مرحله 1: مرور کلی بر طراحی

مروری بر طراحی
مروری بر طراحی
مروری بر طراحی
مروری بر طراحی
مروری بر طراحی
مروری بر طراحی
مروری بر طراحی
مروری بر طراحی

طراحی تغذیه کننده حیوانات خانگی بسیار ساده است. یک قیف به بالای PVC T. می رود سپس یک جلد در پشت PVC T (همانطور که در تصویر نشان داده شده است) با نمای 17 متصل شده است. سپس Nema 17 به پشت Auger فشار داده می شود که در بالا دیده می شود و یک پیچ به طرف آن می رود تا آن را در جای خود نگه دارد تا سوراخی را که در بالا دیده می شود تغییر شکل ندهد!

سپس چنگال غذا را به سادگی از لوله خارج کرده و داخل یک کاسه قرار می دهد!

مرحله 2: مرور کلی کد

مروری بر کد
مروری بر کد
مروری بر کد
مروری بر کد
مروری بر کد
مروری بر کد

RTC & Stepper دارای کتابخانه ای به نام RTClib.h و Stepper.h هستند که کد ساده شده ای را برای RTC & Stepper اضافه می کند. عبارات if بسیار ساده است اگر ساعت و دقیقه برابر با زمان گفته شده باشد ، نما را می چرخاند که غذا را پخش می کند. درک بقیه کد حتی برای افرادی که یک روز تجربه دارند بسیار آسان است.

مرحله 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 خود وصل کنید. پس از اتمام کار ، می خواهید با استفاده از سوراخ پشتی آن را به نما وصل کنید. سپس صفحه پایه را با چنگال و نما متصل کرده و سپس پیچ و مهره های 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 وصل کنید
  • پین 11 (زرد) تا IN4

در مرحله بعد Nema 17 را به L298N متصل می کنیم

  • OUT1 تا 1 در NEMA
  • OUT2 تا 2 در NEMA
  • OUT3 تا 3 در NEMA
  • OUT4 تا 4 در NEMA

اتصال 12v و آردوینو به L298N (12 ولت پیدا نشد بنابراین باتری 9 ولت را به عنوان قدرت تصور کنید)

  • ولتاژ تا 12 ولت
  • زمین به GND
  • 5V تا 5V در Breadboard

اتصال RTC به آردوینو

  • GND به GND
  • 5V تا 5V در Breadboard
  • SDA تا A5
  • SCL تا A4

پین های بلوز

همه پین های جهنده قرار است روی L298N باشند

مرحله 5: کدگذاری با نظرات

برنامه نویسی با نظرات
برنامه نویسی با نظرات
برنامه نویسی با نظرات
برنامه نویسی با نظرات
برنامه نویسی با نظرات
برنامه نویسی با نظرات

کد در تصاویر بالا واضح تر است

// نام: پارکر فردریک

// نام پروژه: تغذیه کننده حیوان خانگی خودکار // تاریخ: سه شنبه ، 10 نوامبر 2020 // معلم: M. Bonisteel // Desc: در زمان گفته شده از حیوانات خانگی خود تغذیه کنید!

// کتابخانه برای مواردی که استفاده کردم #شامل #شامل #شامل #شامل "RTClib.h"

RTC_DS1307 rtc؛ // می گوید RTC از چه چیزی استفاده می کنم

// اینجاست که زمان غذا را تعیین می کنید

// Hours int mornFeedTime = 12؛ int nightFeedTime = 7 ؛ // دقیقه int mornFeedTimeM = 29؛ int nightFeedTimeM = 00؛ // Seconds int mornFeedTimeS = 20؛ int nightFeedTimeS = 00؛

char daysOfTheWeek [7] [12] = {"یکشنبه" ، "دوشنبه" ، "سه شنبه" ، "Wedsneday" ، "پنجشنبه" ، "جمعه" ، "شنبه"}؛ // باعث می شود روزهای عادی به روزهای هفته تبدیل شوند

const int feed = 200؛ // این مراحل شماست تا چند بار بخواهید بچرخد

Stepper myStepper (خوراک ، 8 ، 9 ، 10 ، 11) ؛ // سنجاق های شما برای Nema 17 و بیشتر استپرهای دیگر

void setup () {Serial.begin (9600)؛

در حالی که (! سریال) ؛ // اگر RTC کار نمی کند ، آن را در صفحه سریال (if!! rtc.begin ()) {Serial.println ("RTC پیدا نشد") نمایش می دهد. در حالی که (1) ؛ }

// این به شما می گوید که آیا ساعت واقعی در حال اجرا است یا خیر و اگر (! rtc.isrunning ()) {Serial.println ("RTC در حال اجرا است!") آن را در صفحه سریال نمایش می دهد.

rtc.adjust (DateTime (F (_ DATE_) ، F (_ TIME_))) ؛ // این کار زمان کامپیوتر شما را می گیرد و از آن در RTC استفاده می کند

// اگر می خواهید به جای زمان کامپیوتر زمان مشخصی داشته باشید ، می توانید این کار را در اینجا انجام دهید //rtc.adjust(DateTime(2020، 10، 29، 8، 28، 0))؛ // سال/ماه/روز/ساعت/دقیقه/ثانیه} myStepper.setSpeed (200) ؛ // سرعتی که می خواهید در آن بچرخد}

void loop () {DateTime now = rtc.now ()؛

// این باعث می شود این متغیرها در ساعت فعلی و غیره int int hr = now.hour ()؛ int mi = now.minute ()؛ int se = now.second ()؛

// کدگذاری کنید تا در زمان تعیین شده غذا پخش شود و 5 بار بچرخد ، این برای خوراک صبح است

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("صبحانه!") ؛ myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

}

// کدگذاری کنید تا در زمان تعیین شده غذا پخش شود و 5 بار بچرخد ، این برای تغذیه شبانه است

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("شام!") ؛ myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛

myStepper.step (-feed) ؛ تاخیر (700) ؛ }

// این نشان می دهد سال ، ماه ، روز ، ساعت ، دقیقه ، ثانیه در سریال

Serial.print (now.year ()، DEC)؛ Serial.print ('/')؛ Serial.print (now.month ()، DEC)؛ Serial.print ('/')؛ Serial.print (now.day () ، DEC) ؛ Serial.print ("(") ؛ Serial.print (daysOfTheWeek [now.dayOfTheWeek ()]) ؛ Serial.print (")") ؛ Serial.print (now.hour () ، DEC) ؛ Serial.print (':')؛ Serial.print (now.minute () ، DEC) ؛ Serial.print (':')؛ Serial.print (now.second ()، DEC)؛ Serial.println ()؛ }

وب سایتی که برای RTC استفاده کردم اکثر موارد غیر از عبارت های if که می گویند RTC روشن یا خاموش است را حذف کردم. من عمدتا از این وب سایت برای یادگیری نحوه برنامه ریزی RTC استفاده کردم

وب سایتی که برای استپر موتور استفاده کردم این به من کمک کرد تا بفهمم چگونه استپر را برای اجرا برنامه ریزی کنم. این فقط به من کمک کرد تا نحوه کدگذاری آن را درک کنم

مرحله 6: مشکلات و راه حل آنها

مشکلات و چگونه آنها را برطرف کردم!
مشکلات و چگونه آنها را برطرف کردم!

چند مشکل داشتم

  • من به منبع تغذیه 12 ولت نیاز داشتم ، فقط یک باتری 9 ولت داشتم که یک دستگاه پیدا کردم و سریع حل شد.
  • هنگام اتصال L298N با NEMA 17 سیم های A و A اشتباه بود که باعث کمی تکان خوردن آن شد. من به سادگی با تغییر سیم ها به روش دیگر آن را برطرف کردم.
  • سعی کردم کد را ساده تر کنم زیرا در دستور if myStepper.step (-feed) ؛ بارها و بارها آشفته به نظر می رسید. بنابراین مجبور شدم دوباره آن را عوض کنم.
  • همانطور که در تصویر مشاهده می شود اندازه صفحه اشتباه بود ، بنابراین مجبور شدم یک صفحه جدید را کمی چاپ کنم و کاملاً مناسب باشد!
  • مشکلی که من دارم این است که از آنجا که سنباده کوچک است ، گیر می کند ، بنابراین می توانم آن را به هم بریزم. راه ساده ای که می توانم آن را برطرف کنم این است که حجم را کمی بزرگتر کنم!

توصیه شده: