- Kinakailangan na Materyal
- Diagram ng Circuit
- Modelong Tagapagpakain ng 3D na Naka-print
- Module ng DS3231 RTC
- Code at Paliwanag
- Paggawa ng Awtomatikong Pagpapakain ng Alagang Hayop
Ngayon ay nagtatayo kami ng isang batay sa Arduino na Awtomatikong Pagpapakain ng Alagang Hayop na maaaring awtomatikong maghatid ng pagkain sa iyong alagang hayop nang napapanahon. Mayroon itong Module ng DS3231 RTC (Real Time Clock), na dating upang magtakda ng oras at petsa kung saan dapat bigyan ng pagkain ang iyong alaga. Kaya, sa pamamagitan ng pagse-set up ng oras alinsunod sa iskedyul ng pagkain ng iyong alagang hayop, awtomatikong ihuhulog o pupunan ng aparato ang mangkok ng pagkain.
Sa circuit na ito, gumagamit kami ng isang 16 * 2 LCD upang maipakita ang oras gamit ang DS3231 RTC Module kasama ang Arduino UNO. Gayundin, ginagamit ang isang servo motor upang paikutin ang mga lalagyan upang maibigay ang pagkain at 4 * 4 matrix keypad upang manu-manong i-set up ang oras para sa pagpapakain ng Alaga. Maaari mong itakda ang anggulo ng pag-ikot at tagal ng pagbubukas ng lalagyan ayon sa dami ng pagkain na nais mong ihatid sa iyong alaga. Ang dami ng pagkain ay maaari ring nakasalalay sa iyong alagang hayop kung ito ay aso, pusa o ibon.
Kinakailangan na Materyal
- Arduino UNO
- 4 * 4 Matrix Keypad
- 16 * 2 LCD
- Push Button
- Servo Motor
- Resistor
- Mga Koneksyon sa Mga Wires
- Breadboard
Diagram ng Circuit
Sa Arduino based Cat Feeder na ito, para sa Pagkuha ng Oras at Petsa, ginamit namin ang RTC (Real Time Clock) Module. Ginamit namin ang 4 * 4 Matrix Keypad upang maitakda nang manu-mano ang oras ng pagkain ng Alaga sa tulong ng 16x2 LCD. Paikutin ng Servo motor ang lalagyan at ihuhulog ang pagkain sa oras na itinakda ng gumagamit. Ginagamit ang LCD para sa pagpapakita ng Petsa at Oras. Ang kumpletong pagtatrabaho ay matatagpuan sa Video na ibinigay sa huli.
Modelong Tagapagpakain ng 3D na Naka-print
Idinisenyo namin ang lalagyan ng Arduino Pet Feeder na ito gamit ang 3D-printer. Maaari mo ring mai-print ang parehong disenyo sa pamamagitan ng pag-download ng mga file mula dito. Ang materyal na ginamit para sa pagpi-print ng modelong ito ay PLA. Mayroon itong apat na Bahagi tulad ng ipinakita sa imahe sa ibaba:
Ipunin ang apat na bahagi at ikonekta ang Servo Motor tulad ng ipinakita sa larawan sa ibaba:
Kung bago ka sa pag-print sa 3D dito ang panimulang gabay. Maaari mong i-download ang mga STL file para sa pet feeder dito.
Module ng DS3231 RTC
Ang DS3231 ay isang RTC (Real Time Clock) na module. Ginagamit ito upang mapanatili ang petsa at oras para sa karamihan ng mga proyekto sa Elektronika. Ang module na ito ay may sariling coin cell power supply na ginagamit kung saan pinapanatili nito ang petsa at oras kahit na ang pangunahing lakas ay tinanggal o ang MCU ay dumaan sa isang hard reset. Kaya't sa sandaling itinakda namin ang petsa at oras sa modyul na ito ay susubaybayan ito palagi. Sa aming circuit, gumagamit kami ng DS3231 upang pakainin ang alagang hayop alinsunod sa oras, na-set up ng may-ari ng Alaga, tulad ng isang alarma. Tulad ng, naabot ng orasan sa itinakdang oras, pinapatakbo nito ang servo motor upang buksan ang gate ng lalagyan at ang mga patak ng pagkain sa mangkok ng pagkain ng Alagang Hayop.
Tandaan: Kapag ginagamit ang modyul na ito sa kauna-unahang pagkakataon kailangan mong itakda ang petsa at oras. Maaari mo ring gamitin ang RTC IC DS1307 para sa pagbabasa ng oras sa Arduino.
Code at Paliwanag
Ang Kumpletong Arduino Code ng Mga Tagapagpakain ng Alagang Hayop ay ibinibigay sa dulo.
Ang Arduino ay may mga default na aklatan para sa paggamit ng Servo motor at LCD 16 * 2 kasama nito. Ngunit para sa paggamit ng DS3231 RTC Module at 4 * 4 Matrix Keypad sa Arduino, kailangan mong i-download at i-install ang mga aklatan. Ang link sa pag-download para sa parehong mga aklatan ay ibinibigay sa ibaba:
- DS3231 RTC (Real Time Clock) Module Library
- 4 * 4 Matrix Keypad Library
Sa code sa ibaba, tinutukoy namin ang mga aklatan, "# isama
# isama
Sa code sa ibaba, tinutukoy namin ang keymap para sa 4 * 4 matrix keypad at pagtatalaga ng mga pin ng Arduino para sa Row at Column ng keypad.
char key = {{'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};
Dito, lumilikha kami ng keypad sa pamamagitan ng paggamit ng utos sa ibaba sa code.
Keypad kpd = Keypad (makeKeymap (key), rowPins, colPins, ROWS, COLS);
Ang pagtatalaga ng mga A4 at A5 Arduino na pin upang kumonekta sa SCL at SDA na mga pin ng DS3231. Gayundin, pagtatalaga ng mga pin sa LCD at pagsisimula ng motor na Servo.
DS3231 rtc (A4, A5); Servo servo_test; // ipasimula ang isang object ng servo para sa konektadong servo LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Lumilikha ng isang bagay na LC. Mga Parameter: (rs, paganahin, d4, d5, d6, d7)
Sa code sa ibaba, ipinapahayag namin ang t1 sa t6, key, at array r, at ang feed.
int t1, t2, t3, t4, t5, t6; feed ng boolean = totoo; char key; int r;
Sa code sa ibaba, inaayos namin ang lahat ng mga bahagi para sa pagsisimula. Tulad ng sa code na ito na "servo_test.attach (10);" Ang Servo ay nakakabit sa ika- 10 na pin ng Arduino. Pagtukoy sa A0, A1 at A2 bilang Output Pin at pagsisimula ng module ng LCD at RTC.
void setup () {servo_test.attach (10); // ikabit ang signal pin ng servo sa pin9 ng arduino rtc.begin (); lcd.begin (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, OUTPUT); pinMode (A1, OUTPUT); pinMode (A2, OUTPUT); }
Ngayon, kung paano gumagana ang loop ay ang mahalagang bahagi upang maunawaan. Tuwing ang Pushbutton ay pinindot, ito ay mataas na nangangahulugang 1, na maaaring mabasa ng "buttonPress = digitalRead (A3)" . Ngayon ay pumupunta ito sa loob ng pahayag na 'kung' at tinawag ang pagpapaandar na 'setFeedingTime' . Pagkatapos ihinahambing nito ang totoong oras at ang ipinasok na oras ng gumagamit. Kung ang kundisyon ay totoo na nangangahulugang ang real time at ang ipinasok na oras ay pareho, pagkatapos ay ang Servo motor ay umiikot sa at anggulo ng 100 degree at pagkatapos ng 0.4seconds ng pagkaantala babalik ito sa paunang posisyon nito.
void loop () {lcd.setCursor (0,0); int buttonPress; buttonPress = digitalRead (A3); kung (buttonPress == 1) setFeedingTime (); lcd.print ("Oras:"); 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 ("Petsa:"); lcd.print (rtc.getDateStr ()); kung (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // utos na paikutin ang servo sa tinukoy na pagkaantala ng anggulo (400); servo_test.write (55); feed = false; }}
Sa void setFeedingTime () code ng pag-andar, Pagkatapos ng pagpindot sa pushbutton ay nakapasok kami sa oras ng pagpapakain ng alagang hayop, pagkatapos ay kailangan nating Pindutin ang 'D' upang mai-save ang oras na iyon. Kapag tumutugma ang nai-save na oras sa real time pagkatapos magsimulang umikot ang servo.
void setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Itakda ang Oras ng pagpapakain"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); habang (1) {key = kpd.getKey (); char j; kung (key! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (key); r = key-48; ako ++; j ++; kung (j == 2) {lcd.print (":"); j ++; } pagkaantala (500); } kung (key == 'D') {key = 0; pahinga; }}}
Paggawa ng Awtomatikong Pagpapakain ng Alagang Hayop
Matapos i-upload ang code sa Arduino Uno, ang oras at petsa ay ipapakita sa 16 * 2 LCD. Kapag pinindot mo ang pushbutton humihingi ito ng oras sa pagpapakain ng Alaga at kailangan mong ipasok ang oras gamit ang 4 * 4 matrix Keypad. Ipapakita ng display ang nakapasok na oras at habang pinindot mo ang 'D' nakakatipid ito ng oras. Kapag tumutugma ang totoong oras at ang oras na Pinasok, paikutin nito ang servo motor mula sa paunang posisyon na 55⁰ hanggang 100⁰ at pagkatapos ng pagkaantala ay bumalik muli sa paunang posisyon. Samakatuwid, ang Servo motor ay konektado sa gate ng Food Container, kaya't gumagalaw ito, magbubukas ang gate at ang ilang halaga ng pagkain ay nahuhulog sa mangkok o plato. Pagkatapos ng pagkaantala 0.4 segundo umiikot muli ang Servo motor at isara ang gate. Nakumpleto ang buong proseso sa loob ng ilang segundo. Ito ay kung paano awtomatikong makukuha ng iyong alaga ang pagkain sa oras na iyong ipinasok.
Baguhin ang oras at degree ayon sa pagkain