- Nepieciešams materiāls
- Ķēdes shēma
- 3D drukāts lolojumdzīvnieku barotavas modelis
- DS3231 RTC modulis
- Kods un skaidrojums
- Automātiskās lolojumdzīvnieku barotavas darbība
Šodien mēs būvējam Arduino bāzes automātisko lolojumdzīvnieku barotavu, kas var savlaicīgi automātiski pasniegt ēdienu jūsu pet. Tam ir DS3231 RTC (reālā laika pulksteņa) modulis, kas izmantoja, lai noteiktu laiku un datumu, kurā jūsu mājdzīvniekam jādod barība. Tātad, nosakot laiku atbilstoši mājdzīvnieka ēšanas grafikam, ierīce automātiski nomet vai aizpilda pārtikas trauku.
Šajā ķēdē mēs izmantojam 16 * 2 LCD, lai parādītu laiku, izmantojot DS3231 RTC moduli ar Arduino UNO. Arī servomotors tiek izmantots, lai pagrieztu traukus, lai nodrošinātu pārtiku un 4 * 4 matricas tastatūru, lai manuāli iestatītu laiku Pet barošanai. Jūs varat iestatīt rotācijas leņķi un konteinera atvēršanas ilgumu atbilstoši barības daudzumam, kuru vēlaties pasniegt savam mājdzīvniekam. Pārtikas daudzums var būt atkarīgs arī no jūsu pet, vai tas ir suns, kaķis vai putns.
Nepieciešams materiāls
- Arduino UNO
- 4 * 4 Matricas tastatūra
- 16 * 2 LCD
- Uzspied pogu
- Servo motors
- Rezistors
- Vadu savienošana
- Maizes dēlis
Ķēdes shēma
Šajā Arduino bāzētajā kaķu padevējā laika un datuma iegūšanai mēs izmantojām RTC (reālā laika pulksteņa) moduli. Mēs esam izmantojuši 4 * 4 Matrix tastatūru, lai manuāli iestatītu mājdzīvnieka ēšanas laiku ar 16x2 LCD palīdzību. Servo motors pagriež trauku un nomet ēdienu lietotāja noteiktajā laikā. LCD tiek izmantots datuma un laika parādīšanai. Pilnīgu darbu var atrast videoklipā, kas sniegts beigās.
3D drukāts lolojumdzīvnieku barotavas modelis
Mēs esam izstrādājuši šo Arduino Pet Feeder konteineru, izmantojot 3D printeri. Varat arī izdrukāt to pašu dizainu, lejupielādējot failus no šejienes. Šī modeļa drukāšanai izmantotais materiāls ir PLA. Tam ir četras daļas, kā parādīts zemāk esošajā attēlā:
Salieciet četras daļas un pievienojiet servomotoru, kā parādīts zemāk esošajā attēlā:
Ja 3D drukāšana jums ir jauna, šeit ir sākuma rokasgrāmata. Šīs lolojumdzīvnieku barotavas STL failus varat lejupielādēt šeit.
DS3231 RTC modulis
DS3231 ir RTC (Real Time Clock) modulis. To izmanto, lai saglabātu datumu un laiku lielākajai daļai elektronikas projektu. Šim modulim ir savs monētu elementu barošanas avots, izmantojot kuru tas saglabā datumu un laiku pat tad, ja galvenā barošana tiek noņemta vai MCU ir veikta rūpīga atiestatīšana. Tāpēc, kad šajā modulī būsim iestatījuši datumu un laiku, tas vienmēr to sekos. Mūsu ķēdē mēs izmantojam DS3231, lai barotu mājdzīvnieku atbilstoši mājdzīvnieka īpašnieka uzstādītajam laikam, piemēram, trauksmes signālu. Pulkstenim sasniedzot noteikto laiku, tas darbojas ar servomotoru, lai atvērtu konteinera vārtus, un ēdiens nokrīt lolojumdzīvnieku barības bļodā.
Piezīme: Lietojot šo moduli pirmo reizi, ir jāiestata datums un laiks. Varat arī izmantot RTC IC DS1307 laika nolasīšanai ar Arduino.
Kods un skaidrojums
Automatics Pet Feeder pilnais Arduino kods ir norādīts beigās.
Arduino ir noklusējuma bibliotēkas Servo motora un LCD 16 * 2 izmantošanai. Bet, lai ar Arduino izmantotu DS3231 RTC moduli un 4 * 4 Matrix tastatūru, jums ir jālejupielādē un jāinstalē bibliotēkas. Zemāk ir norādīta abu bibliotēku lejupielādes saite:
- DS3231 RTC (reālā laika pulksteņa) moduļu bibliotēka
- 4 * 4 Matrix tastatūras bibliotēka
Zemāk esošajā kodā mēs definējam bibliotēkas “#include
# iekļaut
Zemāk esošajā kodā mēs definējam 4 * 4 matricas tastatūras taustiņu karti un piešķiram Arduino tapas tastatūras rindai un kolonnām.
char taustiņi = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; baitu rindaPins = {2, 3, 4, 5}; baits colPins = {6, 7, 8, 9};
Šeit mēs izveidojam tastatūru, izmantojot zemāk esošo kodu.
Tastatūra kpd = Tastatūra (makeKeymap (taustiņi), rowPins, colPins, ROWS, COLS);
Piešķirot A4 un A5 Arduino tapas, lai izveidotu savienojumu ar DS3231 SCL un SDA tapām. Arī piespraužot tapas LCD un inicializējot servomotoru.
DS3231 rtc (A4, A5); Servo servo_tests; // inicializēt servo objektu savienotajam servo LiquidCrystal lcd (A0, A1, A2, 11, 12, 13); // Izveido LC objektu. Parametri: (rs, iespējot, d4, d5, d6, d7)
Zemāk esošajā kodā mēs deklarējam t1 līdz t6, atslēgu un masīvu r, kā arī plūsmu.
int t1, t2, t3, t4, t5, t6; būla padeve = true; char taustiņš; int r;
Zemāk esošajā kodā mēs iestatām visus starta komponentus. Tāpat kā šajā kodā “servo_test.attach (10);” Servo ir piestiprināta pie 10 th pin no Arduino. Definēt A0, A1 un A2 kā izejas tapu un inicializēt LCD un RTC moduli.
void setup () {servo_test.attach (10); // pievienojiet servo signāla tapu arduino rtc.pin9 sākumam (); lcd.begin (16,2); servo_test.write (55); Sērijas sākums (9600); pinMode (A0, OUTPUT); pinMode (A1, OUTPUT); pinMode (A2, OUTPUT); }
Tagad svarīgi ir saprast, kā darbojas cilpa. Ikreiz, kad tiek nospiesta poga, tā iet uz augšu nozīmē 1, ko var nolasīt ar “buttonPress = digitalRead (A3)” . Tagad tas iet iekšā 'if' un izsauc funkciju 'setFeedingTime' . Tad tas salīdzina reālo laiku un lietotāja ievadīto laiku. Ja nosacījums ir patiess, kas nozīmē, ka reālais laiks un ievadītais laiks ir vienāds, tad Servo motors pagriežas līdz 100 grādu leņķim un pēc 0,4 sekunžu kavēšanās atgriežas sākotnējā stāvoklī.
void loop () {lcd.setCursor (0,0); int poga Nospiediet; buttonPress = digitalRead (A3); if (buttonPress == 1) setFeedingTime (); lcd.print ("Laiks:"); Virkne 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 ("Datums:"); lcd.print (rtc.getDateStr ()); ja (t1 == r && t2 == r && t3 == r && t4 == r && t5 <1 && t6 <3 && feed == true) {servo_test.write (100); // komanda pagriezt servo uz norādīto leņķa aizturi (400); servo_test.write (55); feed = false; }}
Jo spēkā setFeedingTime () funkcijas kodu, pēc nospiežot Pushbutton mēs varam iekļūt pet barošanas laiku, tad mums ir jānospiež 'D', lai ietaupītu šo laiku. Kad ietaupītais laiks sakrīt ar reālo laiku, servo sāk rotēt.
void setFeedingTime () {feed = true; int i = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("Iestatīt padeves laiku"); lcd.clear (); lcd.print ("HH: MM"); lcd.setCursor (0,1); while (1) {atslēga = kpd.getKey (); char j; if (atslēga! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (atslēga); r = atslēga-48; i ++; j ++; ja (j == 2) {lcd.print (":"); j ++; } kavēšanās (500); } if (atslēga == 'D') {atslēga = 0; pārtraukums; }}}
Automātiskās lolojumdzīvnieku barotavas darbība
Pēc koda augšupielādes ierīcē Arduino Uno laiks un datums tiks parādīti 16 * 2 LCD ekrānā. Nospiežot pogu, tiek prasīts mājdzīvnieka barošanas laiks, un jums jāievada laiks, izmantojot 4 * 4 matricas tastatūru. Displejā tiks parādīts ievadītais laiks, un, nospiežot taustiņu D, tas ietaupa laiku. Kad reālais laiks un ievadītais laiks sakrīt, tas pagriež servomotoru no sākotnējās pozīcijas 55⁰ līdz 100⁰ un pēc kavēšanās atkal atgriežas sākotnējā stāvoklī. Tāpēc Servo motors ir savienots ar Pārtikas konteinera vārtiem, tāpēc, pārvietojoties, vārti tiks atvērti un bļodā vai plāksnē nokritīs zināms daudzums pārtikas. Pēc kavēšanās 0,4 sekundes servomotors atkal griežas un aizver vārtus. Viss process tiek pabeigts dažu sekunžu laikā. Tas ir tas, kā jūsu pet automātiski saņem barību tajā laikā, kad ievadījāt.
Mainiet laiku un pakāpi atkarībā no ēdiena