- Material Diperlukan
- Diagram Sirkuit
- Model Pengumpan Hewan Peliharaan Cetak 3D
- Modul RTC DS3231
- Kode dan Penjelasan
- Cara Kerja Pengumpan Hewan Peliharaan Otomatis
Hari ini kami sedang membangun Pengumpan Hewan Peliharaan Otomatis berbasis Arduino yang dapat secara otomatis menyajikan makanan untuk hewan peliharaan Anda tepat waktu. Ini memiliki Modul DS3231 RTC (Jam Waktu Nyata), yang digunakan untuk mengatur waktu dan tanggal di mana hewan peliharaan Anda harus diberi makanan. Jadi, dengan mengatur waktu sesuai jadwal makan hewan peliharaan Anda, perangkat menjatuhkan atau mengisi mangkuk makanan secara otomatis.
Di sirkuit ini, kami menggunakan LCD 16 * 2 untuk menampilkan waktu menggunakan Modul RTC DS3231 dengan Arduino UNO. Juga, motor servo digunakan untuk memutar kontainer untuk menyediakan makanan dan keypad matriks 4 * 4 untuk mengatur waktu secara manual untuk memberi makan Pet. Anda bisa mengatur sudut rotasi dan durasi buka wadah sesuai dengan jumlah makanan yang ingin Anda sajikan untuk hewan peliharaan Anda. Jumlah makanan juga dapat bergantung pada hewan peliharaan Anda apakah itu anjing, kucing, atau burung.
Material Diperlukan
- Arduino UNO
- 4 * 4 Papan tombol Matriks
- 16 * 2 LCD
- Tekan tombol
- Motor servo
- Penghambat
- Menghubungkan Kabel
- Papan tempat memotong roti
Diagram Sirkuit
Dalam Cat Feeder berbasis Arduino ini, untuk Mendapatkan Waktu dan Tanggal, kami telah menggunakan Modul RTC (Jam Waktu Nyata). Kami telah menggunakan 4 * 4 Matrix Keypad untuk mengatur waktu makan Pet secara manual dengan bantuan LCD 16x2. Motor Servo memutar wadah dan menjatuhkan makanan pada waktu yang ditentukan oleh pengguna. LCD digunakan untuk menampilkan Tanggal dan Waktu. Pekerjaan lengkap dapat ditemukan di Video yang diberikan di bagian akhir.
Model Pengumpan Hewan Peliharaan Cetak 3D
Kami telah mendesain wadah Arduino Pet Feeder ini menggunakan printer 3D. Anda juga dapat mencetak desain yang sama dengan mengunduh file dari sini. Bahan yang digunakan untuk mencetak model ini adalah PLA. Ini memiliki empat Bagian seperti yang ditunjukkan pada gambar di bawah ini:
Rakit keempat bagian dan hubungkan Motor Servo seperti yang ditunjukkan pada gambar di bawah ini:
Jika Anda baru mengenal pencetakan 3D, berikut adalah panduan memulai. Anda bisa mendownload file STL untuk pet feeder ini disini.
Modul RTC DS3231
DS3231 adalah modul RTC (Real Time Clock). Ini digunakan untuk mempertahankan tanggal dan waktu untuk sebagian besar proyek Elektronik. Modul ini memiliki catu daya sel berbentuk koin yang digunakan untuk mempertahankan tanggal dan waktu bahkan ketika daya utama dilepas atau MCU mengalami hard reset. Jadi, begitu kita menyetel tanggal dan waktu dalam modul ini, modul ini akan selalu melacaknya. Di sirkuit kami, kami menggunakan DS3231 untuk memberi makan hewan peliharaan sesuai dengan waktu, yang diatur oleh pemilik Hewan Peliharaan, seperti alarm. Saat, jam mencapai waktu yang ditentukan, ia mengoperasikan motor servo untuk membuka gerbang kontainer dan makanan jatuh di mangkuk makanan Hewan Peliharaan.
Catatan: Saat menggunakan modul ini untuk pertama kalinya Anda harus mengatur tanggal dan waktu. Anda juga dapat menggunakan RTC IC DS1307 untuk membaca waktu dengan Arduino.
Kode dan Penjelasan
Kode Arduino Lengkap Pengumpan Hewan Peliharaan Otomatis diberikan di bagian akhir.
Arduino memiliki perpustakaan default untuk menggunakan motor Servo dan LCD 16 * 2 dengannya. Tetapi untuk menggunakan Modul RTC DS3231 dan Keypad 4 * 4 Matrix dengan Arduino, Anda harus mengunduh dan menginstal perpustakaan. Tautan unduhan untuk kedua perpustakaan diberikan di bawah ini:
- Perpustakaan Modul DS3231 RTC (Jam Waktu Nyata)
- 4 * 4 Perpustakaan Papan Tombol Matriks
Dalam kode di bawah ini, kami mendefinisikan perpustakaan, “#include
#include
Dalam kode di bawah ini, kami mendefinisikan peta kunci untuk keypad matriks 4 * 4 dan menetapkan pin Arduino untuk Baris dan Kolom keypad.
karakter kunci = {{'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 keypad dengan menggunakan perintah di bawah ini dalam kode.
Keypad kpd = Keypad (makeKeymap (kunci), rowPins, colPins, ROWS, COLS);
Menetapkan pin Arduino A4 dan A5 untuk terhubung dengan pin SCL dan SDA DS3231. Juga, menetapkan pin ke LCD dan menginisialisasi motor Servo.
DS3231 rtc (A4, A5); Servo servo_test; // inisialisasi objek servo untuk LCD servo LiquidCrystal yang terhubung (A0, A1, A2, 11, 12, 13); // Membuat objek LC. Parameter: (rs, aktifkan, d4, d5, d6, d7)
Pada kode di bawah ini, kami mendeklarasikan t1 ke t6, key, dan array r, dan feed.
int t1, t2, t3, t4, t5, t6; boolean feed = true; kunci karakter; int r;
Pada kode di bawah ini, kami menyiapkan semua komponen untuk memulai. Seperti dalam kode ini "servo_test.attach (10);" Servo melekat ke 10 th pin Arduino. Mendefinisikan A0, A1 dan A2 sebagai Output Pin dan menginisialisasi modul LCD dan RTC.
batal penyiapan () {servo_test.attach (10); // pasang pin sinyal 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 loop bekerja adalah bagian penting untuk dipahami. Kapanpun Pushbutton ditekan, artinya tinggi 1, yang bisa dibaca oleh “buttonPress = digitalRead (A3)” . Sekarang masuk ke dalam pernyataan 'if' dan memanggil fungsi 'setFeedingTime' . Kemudian membandingkan waktu nyata dan waktu yang dimasukkan oleh pengguna. Jika kondisi benar yang berarti waktu nyata dan waktu yang dimasukkan sama, maka motor Servo berputar ke dan sudut 100 derajat dan setelah penundaan 0,4 detik kembali ke posisi semula.
void loop () {lcd.setCursor (0,0); int buttonPress; buttonPress = digitalRead (A3); jika (buttonPress == 1) setFeedingTime (); lcd.print ("Waktu:"); String 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 ("Tanggal:"); lcd.print (rtc.getDateStr ()); if (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // perintah untuk memutar servo ke penundaan sudut yang ditentukan (400); servo_test.write (55); feed = false; }}
Dalam kode fungsi void setFeedingTime () , Setelah menekan tombol kita dapat memasukkan waktu makan hewan peliharaan, kemudian kita harus Tekan 'D' untuk menghemat waktu itu. Ketika waktu yang disimpan cocok dengan waktu nyata maka servo mulai berputar.
void setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Atur Waktu Makan"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); sementara (1) {key = kpd.getKey (); char j; if (key! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (kunci); r = kunci-48; i ++; j ++; jika (j == 2) {lcd.print (":"); j ++; } penundaan (500); } jika (key == 'D') {key = 0; istirahat; }}}
Cara Kerja Pengumpan Hewan Peliharaan Otomatis
Setelah meng-upload kode ke Arduino Uno, waktu dan tanggal akan ditampilkan pada LCD 16 * 2. Saat Anda menekan tombol tekan akan menanyakan waktu makan Hewan Peliharaan dan Anda harus memasukkan waktu menggunakan Papan tombol matriks 4 * 4. Tampilan akan menunjukkan waktu yang dimasukkan dan saat Anda menekan 'D', ini menghemat waktu. Ketika waktu nyata dan waktu yang Dimasukkan cocok, itu memutar motor servo dari posisi awal 55⁰ ke 100⁰ dan setelah penundaan kembali ke posisi awal. Oleh karena itu, motor servo dihubungkan dengan pintu gerbang Food Container, sehingga saat bergerak maka pintu gerbang akan terbuka dan sejumlah makanan jatuh ke dalam mangkuk atau piring. Setelah penundaan 0,4 detik Motor servo berputar lagi dan menutup pintu gerbang. Seluruh proses selesai dalam beberapa detik. Beginilah cara hewan peliharaan Anda mendapatkan makanan secara otomatis saat Anda masuk.
Ubah waktu dan derajat menurut makanan