Mục lục:

Auto Dog Feeder: 6 bước
Auto Dog Feeder: 6 bước

Video: Auto Dog Feeder: 6 bước

Video: Auto Dog Feeder: 6 bước
Video: How to Program HoneyGuaridan A36 Automatic Pet Feeder 2024, Tháng mười một
Anonim
Auto Dog Feeder
Auto Dog Feeder

Đây là dự án của tôi về Máy cấp liệu tự động cho thú cưng. Tên tôi là Parker, tôi học lớp 11 và tôi đã thực hiện dự án này vào ngày 11 tháng 11 năm 2020 với tư cách là CCA (Hoạt động kết thúc khóa học). Trong dự án này, tôi sẽ hướng dẫn bạn cách tạo Máy nạp vật nuôi tự động với Arduino UNO. Bạn có thể chọn thời gian mà bạn có thể thay đổi. Thức ăn sẽ được phân phối thông qua máy khoan và cho vật nuôi của bạn ăn!

Quân nhu

Thiết bị điện tử:

  • Arduino UNO
  • L298N - 10 $ - Điều khiển Nema 17
  • NEMA 17 - 10 $ - Xoay máy khoan để thức ăn phân phát
  • RTC (DS1307) - 10 $ - Cung cấp thời gian
  • Nguồn điện 12V - 5 $ - Cung cấp năng lượng cho mọi thứ
  • Mini Breadboard - Để có thêm không gian đi dây
  • Jumper Wires - Kết nối mọi thứ
  • Dây từ Nữ đến Nam - Kết nối mọi thứ

Phần cứng:

  • Dây tóc in 3D - dành cho máy in 3D
  • 2 Bu lông M4 - Giữ tấm đế tại chỗ
  • 4 bu lông Nema 17 - Giữ nema xuống
  • PVC T 48mm kích thước bên trong 66mm kích thước bên ngoài - 3 $

Công cụ:

  • máy in 3D
  • Máy khoan
  • Súng hàn

Bước 1: Tổng quan về thiết kế

Tổng quan về thiết kế
Tổng quan về thiết kế
Tổng quan về thiết kế
Tổng quan về thiết kế
Tổng quan về thiết kế
Tổng quan về thiết kế
Tổng quan về thiết kế
Tổng quan về thiết kế

Thiết kế của máng ăn cho vật nuôi rất đơn giản. Một cái phễu đi lên trên cùng của PVC T. Sau đó, một nắp đậy ở mặt sau của PVC T (như trong hình) với Nema 17 được gắn vào nó. Sau đó, Nema 17 sẽ được đẩy vào phía sau của Auger có thể được nhìn thấy ở trên và một bu lông sẽ đi vào bên để giữ nó đúng vị trí để nó không làm biến dạng lỗ có thể nhìn thấy ở trên!

Sau đó, máy khoan sẽ chỉ đơn giản là đẩy thức ăn ra khỏi đường ống và vào một cái bát!

Bước 2: Tổng quan về mã

Tổng quan về mã
Tổng quan về mã
Tổng quan về mã
Tổng quan về mã
Tổng quan về mã
Tổng quan về mã

RTC & Stepper có một libary được gọi là RTClib.h và Stepper.h bổ sung mã đơn giản cho RTC & Stepper. Câu lệnh if rất đơn giản, nó nói rằng nếu giờ & phút bằng với thời gian đã nói, nó sẽ quay nema sẽ phân phối thức ăn. Phần còn lại của mã rất dễ hiểu ngay cả đối với những người có một ngày kinh nghiệm.

Bước 3: Gắn Nema 17 vào Base Plate & Auger

Gắn Nema 17 vào Base Plate & Auger
Gắn Nema 17 vào Base Plate & Auger
Gắn Nema 17 vào Base Plate & Auger
Gắn Nema 17 vào Base Plate & Auger
Gắn Nema 17 vào Base Plate & Auger
Gắn Nema 17 vào Base Plate & Auger

Trước tiên, bạn muốn lấy tấm nền của mình và gắn nó vào Nema 17 bằng cách sử dụng các lỗ được tạo sẵn trên tấm nền. Sau khi hoàn thành, bạn muốn gắn mũi khoan vào Nema bằng cách sử dụng lỗ phía sau trên đó. Sau đó, kết nối tấm nền với mũi khoan và Nema được gắn vào sau đó vặn các bu lông M2 vào mỗi bên.

Bước 4: Đấu dây L298N & RTC

Dây L298N & RTC
Dây L298N & RTC
Dây L298N & RTC
Dây L298N & RTC

Bước này sẽ cho bạn biết cách đấu dây L298N & RTC

Chúng tôi sẽ bắt đầu với các chân 8, 9, 10, 11 đến L298N

  • Chân 8 (Trắng) sang IN1
  • Pin 9 (Tím) sang IN2
  • Ghim 10 (Hồng) sang IN3
  • Mã PIN 11 (Vàng) thành IN4

Tiếp theo, chúng tôi sẽ kết nối Nema 17 với L298N

  • OUT1 đến 1 trên NEMA
  • OUT2 đến 2 trên NEMA
  • OUT3 đến 3 trên NEMA
  • OUT4 đến 4 trên NEMA

Kết nối 12v và Arduino với L298N (Không thể tìm thấy 12V nên hãy tưởng tượng pin 9V như nguồn điện)

  • Vôn đến 12V
  • Mặt đất đến GND
  • 5V đến 5V trên Breadboard

Kết nối RTC với Arduino

  • GND sang GND
  • 5V đến 5V trên Breadboard
  • SDA đến A5
  • SCL sang A4

Jumper Pins

Tất cả các chân jumper được cho là trên L298N

Bước 5: Mã hóa với nhận xét

Mã hóa với nhận xét
Mã hóa với nhận xét
Mã hóa với nhận xét
Mã hóa với nhận xét
Mã hóa với nhận xét
Mã hóa với nhận xét

Mã rõ ràng hơn trong hình ảnh ở trên

// Tên: Parker Frederick

// Tên dự án: Auto Pet Feeder // Ngày: Thứ Ba, ngày 10 tháng 11 năm 2020 // Giáo viên: M. Bonisteel // Mô tả: Cho vật nuôi của bạn ăn vào một thời điểm nhất định!

// Libaries cho những thứ tôi đã sử dụng #include #include #include "RTClib.h"

RTC_DS1307 rtc; // Nói những gì tôi đang sử dụng RTC

// Đây là nơi bạn đặt thời gian cho món ăn

// Giờ int mornFeedTime = 12; int nightFeedTime = 7; // Phút int mornFeedTimeM = 29; int nightFeedTimeM = 00; // Giây int mornFeedTimeS = 20; int nightFeedTimeS = 00;

char daysOfTheWeek [7] [12] = {"Chủ Nhật", "Thứ Hai", "Thứ Ba", "Wedsneday", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"}; // Biến những ngày bình thường thành những ngày trong tuần

const int nguồn cấp dữ liệu = 200; // Đây là các bước của bạn nên bạn muốn nó quay bao nhiêu lần

Bước myStepper (nguồn cấp dữ liệu, 8, 9, 10, 11); // Chân của bạn cho Nema 17 và hầu hết các bước khác

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

while (! nối tiếp); // Nếu RTC không hoạt động, nó sẽ hiển thị nó trong màn hình nối tiếp if (! Rtc.begin ()) {Serial.println ("Không thể tìm thấy RTC"); trong khi (1); }

// Điều này sẽ cho bạn biết Đồng hồ thời gian thực có đang chạy hay không và nó sẽ hiển thị trên màn hình nối tiếp if (! Rtc.isrunning ()) {Serial.println ("RTC đang chạy!");

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Điều này sẽ làm mất thời gian máy tính của bạn và sử dụng nó trên RTC

// Nếu bạn muốn đặt thời gian thay vì thời gian trên máy tính, bạn có thể thực hiện tại đây //rtc.adjust(DateTime(2020, 10, 29, 8, 28, 0)); // Năm / Tháng / Ngày / Giờ / Phút / Giây} myStepper.setSpeed (200); // Tốc độ bạn muốn nó quay tại}

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

// Điều này sẽ biến các biến này thành giờ hiện tại vv int hr = now.hour (); int mi = now.minute (); int se = ngay.second ();

// Mã để tại thời điểm đã đặt, nó sẽ phân phát thức ăn và nó sẽ quay 5 lần, điều này nếu cho thức ăn buổi sáng

if (hr == mornFeedTime && mi == mornFeedTimeM && mornFeedTimeS == se) {Serial.println ("Bữa sáng!"); myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

}

// Mã để vào thời gian đã đặt, nó sẽ phân phát thức ăn và nó sẽ quay 5 lần, đây là cho thức ăn ban đêm

if (hr == nightFeedTime && mi == nightFeedTimeM && nightFeedTimeS == se) {Serial.println ("Bữa tối!"); myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700);

myStepper.step (-feed); chậm trễ (700); }

// Điều này sẽ hiển thị NĂM, THÁNG, NGÀY, GIỜ, PHÚT, GIÂY trong chuỗi

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 (); }

Trang web tôi đã sử dụng cho RTC Tôi đã xóa hầu hết những thứ khác ngoài các câu lệnh if cho biết RTC đang bật hay tắt. Tôi chủ yếu sử dụng trang web này để học cách lập trình RTC

Trang web tôi đã sử dụng cho Động cơ bước, điều này đã giúp tôi hiểu cách lập trình bước để chạy. Tôi thực sự không giữ bất cứ điều gì với nó. Nó chỉ giúp tôi hiểu cách viết mã nó

Bước 6: Sự cố và cách tôi khắc phục

Các vấn đề và cách tôi sửa chữa chúng!
Các vấn đề và cách tôi sửa chữa chúng!

Một số vấn đề tôi đã gặp phải

  • Tôi cần nguồn điện 12v, tôi chỉ có pin 9v, tôi đã tìm thấy một cái và nó đã được giải quyết nhanh chóng.
  • Khi kết nối L298N với NEMA 17, tôi đã mắc sai dây trên A và A- khiến nó hơi chập chờn. Tôi chỉ đơn giản là sửa nó bằng cách thay đổi dây theo cách khác.
  • Cố gắng làm cho mã đơn giản hơn vì trong câu lệnh if myStepper.step (-feed); lặp đi lặp lại trông lộn xộn. Vì vậy, tôi đã phải thay đổi nó trở lại.
  • Tôi đã có tấm đế sai kích thước như trong hình nên tôi phải in 3D một tấm mới một chút và nó vừa vặn hoàn hảo!
  • Vấn đề tôi gặp phải là nó bị kẹt vì mũi khoan nhỏ nên nó bị kẹt, cách đơn giản tôi có thể khắc phục là bằng cách phóng to mũi khoan lên một lượng nhỏ!

Đề xuất: