- Potreban materijal
- Kružni dijagram
- 3D model ispisa za kućne ljubimce
- DS3231 RTC modul
- Šifra i objašnjenje
- Rad automatskog ulagača kućnih ljubimaca
Danas gradimo automatsku hranilicu za kućne ljubimce zasnovanu na Arduinu, koja može automatski pravovremeno poslužiti hranu vašem ljubimcu. Ima DS3231 RTC (sat u stvarnom vremenu) modul, koji se koristi za postavljanje vremena i datuma na koji bi vaš ljubimac trebao dobiti hranu. Dakle, podešavanjem vremena prema rasporedu prehrane vašeg ljubimca, uređaj automatski ispušta ili puni posudu s hranom.
U ovom krugu koristimo LCD 16 * 2 za prikaz vremena pomoću DS3231 RTC modula s Arduino UNO. Također, servo motor koristi se za okretanje spremnika kako bi se osigurala hrana i matrična tipkovnica 4 * 4 za ručno podešavanje vremena hranjenja ljubimca. Kut rotacije i trajanje otvaranja posude možete postaviti prema količini hrane koju želite poslužiti svom ljubimcu. Količina hrane također može ovisiti o vašem ljubimcu, bilo da se radi o psu, mački ili ptici.
Potreban materijal
- Arduino UNO
- Matrična tipkovnica 4 * 4
- LCD LCD od 16 * 2
- Pritisnite tipku
- Servo motor
- Otpornik
- Spajanje žica
- Breadboard
Kružni dijagram
U ovom feedu mačaka koji se temelji na Arduinu, za dobivanje vremena i datuma koristili smo RTC (sat u stvarnom vremenu) modul. Upotrijebili smo matričnu tipkovnicu 4 * 4 za ručno postavljanje vremena za jelo ljubimca uz pomoć LCD zaslona 16x2. Servo motor okreće posudu i ispušta hranu u vrijeme koje je odredio korisnik. LCD se koristi za prikaz datuma i vremena. Kompletni rad možete pronaći u videozapisu datom na kraju.


3D model ispisa za kućne ljubimce
Dizajnirali smo ovaj Arduino spremnik za kućne ljubimce pomoću 3D pisača. Također možete ispisati isti dizajn preuzimanjem datoteka odavde. Materijal koji se koristi za tisak ovog modela je PLA. Ima četiri dijela kao što je prikazano na donjoj slici:

Sastavite četiri dijela i spojite servo motor kako je prikazano na donjoj slici:

Ako ste novi u 3D ispisu, ovo je početni vodič. STL datoteke za ovu hranilicu možete preuzeti ovdje.
DS3231 RTC modul
DS3231 je RTC (sat u stvarnom vremenu) modul. Koristi se za održavanje datuma i vremena za većinu projekata Elektronike. Ovaj modul ima vlastiti izvor napajanja ćelije pomoću kojeg održava datum i vrijeme, čak i kad je glavno napajanje uklonjeno ili je MCU prošao kroz hard reset. Dakle, nakon što postavimo datum i vrijeme u ovom modulu, on će ih uvijek pratiti. U našem krugu koristimo DS3231 za hranjenje kućnog ljubimca prema vremenu, postavljenom od strane vlasnika ljubimca, poput alarma. Kako sat doseže postavljeno vrijeme, on upravlja servo motorom da otvori vrata spremnika i hrana padne u zdjelicu za hranu ljubimca.

Napomena: Kada prvi put koristite ovaj modul, morate postaviti datum i vrijeme. Također možete koristiti RTC IC DS1307 za očitavanje vremena s Arduinom.
Šifra i objašnjenje
Na kraju je dat cjeloviti Arduino kod automatskog ulagača kućnih ljubimaca.
Arduino ima zadane knjižnice za upotrebu Servo motora i LCD 16 * 2 s njim. Ali za upotrebu DS3231 RTC modula i matrične tipkovnice 4 * 4 s Arduinom, morate preuzeti i instalirati knjižnice. Poveznica za preuzimanje za obje knjižnice data je u nastavku:
- Biblioteka modula DS3231 RTC (sat u stvarnom vremenu)
- Biblioteka matrične tipkovnice 4 * 4
U donjem kodu definiramo knjižnice, "#include
#include
U donjem kodu definiramo kartu tipkovnice za matričnu tipkovnicu 4 * 4 i dodjeljujemo Arduino pribadače za red i stupce tipkovnice.
char tipke = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; bajt rowPins = {2, 3, 4, 5}; bajt colPins = {6, 7, 8, 9};
Ovdje stvaramo tipkovnicu pomoću naredbe dolje u kodu.
Tipkovnica kpd = tipkovnica (makeKeymap (tipke), rowPins, colPins, ROWS, COLS);
Dodjeljivanje A4 i A5 Arduino pribadača za povezivanje s SCL i SDA pribadačama DS3231. Također, dodjeljivanje pinova LCD-u i inicijalizacija servo motora.
DS3231 rtc (A4, A5); Servo servo_test; // inicijaliziramo servo objekt za povezani servo LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Stvara LC objekt. Parametri: (rs, enable, d4, d5, d6, d7)
U donjem kodu deklariramo t1 do t6, ključ i niz r i feed.
int t1, t2, t3, t4, t5, t6; boolean feed = true; tipka char; int r;
U donjem kodu postavljamo sve komponente za početak. Kao u ovom kodu "servo_test.attach (10);" Servo vezana na 10 om igla od Težak. Definiranje A0, A1 i A2 kao izlaznog pina i inicijalizacija LCD i RTC modula.
void setup () {servo_test.attach (10); // pričvrstimo signalni pin servoa na pin9 arduina rtc.begin (); lcd.početak (16,2); servo_test.write (55); Serial.begin (9600); pinMode (A0, IZLAZ); pinMode (A1, IZLAZ); pinMode (A2, IZLAZ); }
Sada je važan dio razumijevanja kako funkcionira petlja. Kad god pritisnete tipku, ona prelazi u srednju vrijednost 1, što se može pročitati pomoću "buttonPress = digitalRead (A3)" . Sada ulazi u naredbu 'if' i poziva funkciju 'setFeedingTime' . Zatim uspoređuje stvarno vrijeme i uneseno vrijeme od strane korisnika. Ako je uvjet istinit što znači da je stvarno vrijeme i uneseno vrijeme isto, tada se servo motor okreće za kut od 100 stupnjeva i nakon 0,4 sekunde kašnjenja vraća se u početni položaj.
petlja void () {lcd.setCursor (0,0); int buttonPress; buttonPress = digitalRead (A3); if (buttonPress == 1) setFeedingTime (); lcd.print ("Vrijeme:"); Niz 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 ("Datum:"); lcd.print (rtc.getDateStr ()); if (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // naredba za okretanje servoa na određeno kašnjenje kuta (400); servo_test.write (55); feed = false; }}
U funkcijskom kodu void setFeedingTime () , Nakon pritiska na tipku možemo unijeti vrijeme hranjenja kućnog ljubimca, a zatim moramo pritisnuti 'D' da to vrijeme uštedimo. Kada se spremljeno vrijeme podudara sa stvarnim vremenom, tada se servo počinje okretati.
void setFeedingTime () {feed = točno; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Postavi vrijeme hranjenja"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); while (1) {key = kpd.getKey (); char j; if (ključ! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (ključ); r = ključ-48; i ++; j ++; if (j == 2) {lcd.print (":"); j ++; } kašnjenje (500); } if (ključ == 'D') {ključ = 0; pauza; }}}
Rad automatskog ulagača kućnih ljubimaca
Nakon prijenosa koda na Arduino Uno, vrijeme i datum prikazat će se na LCD zaslonu 16 * 2. Kad pritisnete tipku, traži se vrijeme hranjenja ljubimca, a vrijeme morate unijeti pomoću matrične tipkovnice 4 * 4. Zaslon će prikazati uneseno vrijeme i pritiskom na 'D' štedi vrijeme. Kada se stvarno vrijeme i uneseno vrijeme podudaraju, on okreće servo motor iz početnog položaja 55⁰ na 100⁰ i nakon odgode ponovno se vraća u početni položaj. Stoga je servo motor povezan s vratima spremnika za hranu, pa će se, dok se kreće, vrata otvoriti i neka količina hrane padne u posudu ili tanjur. Nakon kašnjenja 0,4 sekunde Servo motor se ponovno okreće i zatvara vrata. Cijeli postupak završava u roku od nekoliko sekundi. Tako vaš ljubimac automatski dobiva hranu u vrijeme kada ste ga unijeli.
Promijenite vrijeme i stupanj prema hrani
