- Bahan Diperlukan
- Rajah Litar
- Model Pengumpan Haiwan Peliharaan Bercetak 3D
- Modul RTC DS3231
- Kod dan Penjelasan
- Kerja Pengumpan Pet Automatik
Hari ini kami sedang membina Automatic Pet Feeder yang berpusat di Arduino yang secara automatik dapat menyediakan makanan kepada haiwan kesayangan anda tepat pada masanya. Ia memiliki Modul DS3231 RTC (Waktu Sebenar), yang digunakan untuk menetapkan waktu dan tarikh di mana haiwan kesayangan anda harus diberi makanan. Oleh itu, dengan menetapkan waktu mengikut jadual makan haiwan kesayangan anda, peranti menjatuhkan atau mengisi mangkuk makanan secara automatik.
Di litar ini, kami menggunakan LCD 16 * 2 untuk memaparkan waktu menggunakan Modul RTC DS3231 dengan Arduino UNO. Juga, motor servo digunakan untuk memutar bekas untuk menyediakan makanan dan papan kekunci matriks 4 * 4 untuk mengatur waktu untuk memberi makan kepada Pet secara manual. Anda boleh menetapkan sudut putaran dan tempoh pembukaan bekas mengikut kuantiti makanan yang ingin anda sajikan kepada haiwan kesayangan anda. Kuantiti makanan juga bergantung pada haiwan kesayangan anda sama ada anjing, kucing atau burung.
Bahan Diperlukan
- Arduino UNO
- Pad Kekunci 4 * 4 Matriks
- LCD 16 * 2
- Tekan butang
- Motor Servo
- Perintang
- Wayar Penyambung
- Papan roti
Rajah Litar
Dalam Pengumpan Kucing berasaskan Arduino ini, untuk Mendapatkan Masa dan Tarikh, kami telah menggunakan Modul RTC (Jam Masa Sebenar). Kami telah menggunakan Keypad Matriks 4 * 4 untuk mengatur waktu makan Haiwan Peliharaan secara manual dengan bantuan LCD 16x2. Motor Servo memutarkan bekas dan menjatuhkan makanan pada masa yang ditetapkan oleh pengguna. LCD digunakan untuk memaparkan Tarikh dan Waktu. Kerja lengkap boleh didapati di Video yang diberikan di akhir.
Model Pengumpan Haiwan Peliharaan Bercetak 3D
Kami telah merancang bekas Arduino Pet Feeder ini menggunakan pencetak 3D. Anda juga boleh mencetak reka bentuk yang sama dengan memuat turun fail dari sini. Bahan yang digunakan untuk mencetak model ini ialah PLA. Ia mempunyai empat Bahagian seperti yang ditunjukkan dalam gambar di bawah:
Pasang keempat bahagian dan sambungkan Servo Motor seperti yang ditunjukkan dalam gambar di bawah:
Sekiranya anda baru dalam percetakan 3D di sini adalah panduan permulaan. Anda boleh memuat turun fail STL untuk pengumpan haiwan kesayangan ini di sini.
Modul RTC DS3231
DS3231 adalah modul RTC (Real Time Clock). Ia digunakan untuk mengekalkan tarikh dan masa untuk kebanyakan projek Elektronik. Modul ini mempunyai bekalan kuasa sel duit syiling sendiri yang menggunakannya mengekalkan tarikh dan masa walaupun kuasa utama dikeluarkan atau MCU telah melalui tetapan semula keras. Oleh itu, setelah kita menetapkan tarikh dan masa dalam modul ini, ia akan sentiasa melacaknya. Di litar kami, kami menggunakan DS3231 untuk memberi makan haiwan kesayangan mengikut waktu, yang disiapkan oleh pemilik Haiwan Peliharaan, seperti penggera. Seperti, jam mencapai waktu yang ditentukan, ia mengoperasikan motor servo untuk membuka gerbang kontena dan makanan jatuh ke dalam mangkuk makanan Pet.
Catatan: Semasa menggunakan modul ini untuk pertama kalinya anda mesti menetapkan tarikh dan waktu. Anda juga boleh menggunakan RTC IC DS1307 untuk membaca waktu bersama Arduino.
Kod dan Penjelasan
Kod Arduino Lengkap Feeder Pet Feed diberikan pada akhir.
Arduino mempunyai perpustakaan lalai untuk menggunakan motor Servo dan LCD 16 * 2 dengannya. Tetapi untuk menggunakan DS3231 RTC Module dan 4 * 4 Matrix Keypad dengan Arduino, anda harus memuat turun dan memasang perpustakaan. Pautan muat turun untuk kedua-dua perpustakaan diberikan di bawah:
- Perpustakaan Modul DS3231 RTC (Jam Masa Sebenar)
- Perpustakaan Pad Kekunci 4 * 4 Matrix
Dalam kod di bawah, kami mendefinisikan perpustakaan, "#include
#sertakan
Dalam kod di bawah, kami mendefinisikan peta kunci untuk papan kekunci matriks 4 * 4 dan menetapkan pin Arduino untuk papan kekunci Row dan Lajur.
kunci char = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {2, 3, 4, 5}; byte colPins = {6, 7, 8, 9};
Di sini, kami membuat papan kekunci dengan menggunakan arahan di bawah dalam kod.
Pad kekunci kpd = Pad Kekunci (makeKeymap (kunci), baris pin, colPins, ROWS, COLS);
Menetapkan pin Arduino A4 dan A5 untuk dihubungkan dengan pin SCL dan SDA DS3231. Juga, menetapkan pin ke LCD dan memulakan motor Servo.
DS3231 rtc (A4, A5); Servo_test servo; // memulakan objek servo untuk servo yang disambungkan LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Membuat objek LC. Parameter: (rs, aktifkan, d4, d5, d6, d7)
Dalam kod di bawah, kita menyatakan t1 hingga t6, kunci, dan array r, dan umpan.
int t1, t2, t3, t4, t5, t6; umpan boolean = benar; kunci char; int r;
Dalam kod di bawah, kami menyediakan semua komponen untuk permulaan. Seperti dalam kod ini "servo_test.attach (10);" Servo dilekatkan pada pin ke- 10 Arduino. Mendefinisikan A0, A1 dan A2 sebagai Pin Output dan memulakan modul LCD dan RTC.
batal persediaan () {servo_test.attach (10); // pasangkan pin isyarat servo ke pin9 dari arduino rtc.begin (); lcd.begin (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, OUTPUT); pinMode (A1, OUTPUT); pinMode (A2, OUTPUT); }
Sekarang, bagaimana gelung berfungsi adalah bahagian penting untuk difahami. Apabila Pushbutton ditekan, ia pergi cara tinggi 1, yang boleh dibaca oleh "buttonPress = digitalRead (A3)" . Sekarang masuk ke dalam pernyataan 'if' dan memanggil fungsi 'setFeedingTime' . Kemudian membandingkan masa sebenar dan masa yang dimasukkan oleh pengguna. Sekiranya keadaan itu benar yang bermaksud masa nyata dan masa yang dimasukkan adalah sama, maka motor Servo berputar ke dan sudut 100 darjah dan setelah kelewatan 0.4 saat ia kembali ke kedudukan awalnya.
gelung void () {lcd.setCursor (0,0); butang int Tekan; butang Tekan = digitalRead (A3); jika (buttonPress == 1) setFeedingTime (); lcd.print ("Masa:"); Rentetan t = ""; 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 ("Tarikh:"); lcd.print (rtc.getDateStr ()); jika (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // perintah untuk memutar servo ke kelewatan sudut yang ditentukan (400); servo_test.write (55); suapan = palsu; }}
Dalam kod fungsi setFeedingTime void () , Setelah menekan butang tekan, kita dapat memasukkan waktu makan haiwan peliharaan, maka kita harus Tekan 'D' untuk menjimatkan masa itu. Apabila masa yang dijimatkan sesuai dengan masa nyata maka servo mula berputar.
batal setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Tetapkan Waktu makan"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); sementara (1) {key = kpd.getKey (); char j; jika (kunci! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (kunci); r = kunci-48; saya ++; j ++; jika (j == 2) {lcd.print (":"); j ++; } kelewatan (500); } jika (kunci == 'D') {kunci = 0; rehat; }}}
Kerja Pengumpan Pet Automatik
Setelah memuat naik kod ke Arduino Uno, waktu dan tarikh akan dipaparkan pada LCD 16 * 2. Apabila anda menekan butang tekan, ia meminta masa makan Haiwan Peliharaan dan anda harus memasukkan waktu menggunakan Pad Kekunci 4 * 4. Paparan akan menunjukkan masa yang dimasukkan dan semasa anda menekan 'D' ia akan menjimatkan masa. Apabila masa nyata dan waktu yang Dimasukkan sepadan, ia memutar motor servo dari kedudukan awal 55⁰ hingga 100⁰ dan setelah kelewatan kembali kembali ke kedudukan awalnya. Oleh itu, motor Servo disambungkan ke pintu Food Container, sehingga ketika bergerak, pintu akan terbuka dan sejumlah makanan jatuh ke dalam mangkuk atau pinggan. Selepas kelewatan 0.4 saat Motor servo berputar lagi dan tutup pintu pagar. Seluruh proses selesai dalam beberapa saat. Ini adalah bagaimana haiwan kesayangan anda mendapatkan makanan secara automatik pada waktu anda memasukkan.
Tukar masa dan darjah mengikut makanan