Automatické krmítko pro zvířata

V tomto návodu si ukážeme automatické krmítko pro zvířata, které dokáže samo dávkovat jídlo pro Vaše miláčky v nastavených intervalech. Pro pojem o času obsahuje toto zařízení RTC obvod DS3231 (obvod reálného času), který dokáže uchovat informace o času i datu. Po správném nastavení se pak vždy uvolní dávka jídla automaticky.

Automatic Pet Feeder using Arduino

Pro zobrazovaní údajů obsahuje zařízení také LCD displej 16×2 znaky společně se servo motorem pro pohyb zásobníku s jídlem. A dalším prvkem je také 4×4 maticová klávesnice, pomocí které lze nastavit čas krmení, úhel otočení krytky dávkovače a prodleva otevření krytky dávkovače. Díky těmto vlastnostem pak můžete jednoduše nastavit dávkovač podle vašich potřeb pro psa, kočku či ptáka.

Seznam součástek:

  • Arduino UNO
  • 4×4 maticová klávesnice
  • 16×2 LCD displej
  • Tlačítko
  • Servo motor
  • Odpor
  • Propojovací drátky
  • Nepájivé kontaktní pole

Schéma zapojení

Automatic Pet Feeder circuit diagram using Arduino

Automatic Pet Feeder using Arduino circuit hardware

3D tisk krmítka

Konstrukce krmítka byla navrhnuta jako 3D model, který je následně vytištěn na 3D tiskárně. Pokud byste chtěli vyrobit stejný design krmítka, můžete najít veškeré soubory zde. Pro tisk ukázky byl použit materiál PLA a model je složen ze čtyř součástí.

3D-printed Pet Feeder model Parts

Pokud spojíte všechny části dohromady, dostanete tento tvar krmítka.

3D-printed Pet Feeder model

Funkce automatického krmítka

Po nahrání níže uvedeného zdrojového kódu do Arduina, čas a datum budou zobrazeny na LCD displeji. Pokud stisknete připojené tlačítko, Arduino se zeptá na čas krmení, který zadáte pomocí připojené 4×4 klávesnice. Displej bude zadaný čas zobrazovat a pomocí tlačítka D čas uložíte do paměti. Když jsou poté zadaný čas a reálný čas ve shodě, servo motor se nastaví z výchozí polohy 55° do polohy 100° a po zadaném zpoždění se opět vrátí do původní polohy. Díky tomu, že je servo motor napojený na krytku krmítka, tak se po jejím odstranění uvolní dané množství potravy, které vypadne do misky či talíře. Po zpoždění 0,4 sekundy se servo motor otočí zpět do původní polohy a tím se zastaví přísun jídla.

Ve zdrojovém kódu tedy stačí pouze změnit čas a úhel otevření dle vašich potřeb.

Zdrojový kód

#include 
#include 
#include 
#include 

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns

// Define the Keymap

char keys[ROWS][COLS] = {

  {'1','2','3','A'},

  {'4','5','6','B'},

  {'7','8','9','C'},

  {'*','0','#','D'}

};

// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.

byte rowPins[ROWS] = { 2, 3, 4, 5 };

// Connect keypad COL0, COL1 and COL2 to these Arduino pins.

byte colPins[COLS] = { 6, 7, 8, 9 };

//  Create the Keypad
  Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

 

DS3231  rtc(A4, A5);
Servo servo_test;      //initialize a servo object for the connected servo  
LiquidCrystal lcd(A0, A1, A2, 11, 12, 13); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)

 //int angle = 0;    
// int potentio = A0;      // initialize the A0analog pin for potentiometer
 int t1, t2, t3, t4, t5, t6;

 
boolean feed = true; // condition for alarm

 char key;
 int r[6];
 
 void setup() 
 { 
  servo_test.attach(10);   // attach the signal pin of servo to pin9 of arduino
  rtc.begin();
  lcd.begin(16,2);
  servo_test.write(55); 
  Serial.begin(9600);
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  
 } 
 
 void loop() 
 { 

lcd.setCursor(0,0);
int buttonPress;
buttonPress = digitalRead(A3);

if (buttonPress==1)
 setFeedingTime();
 

//Serial.println(buttonPress);

 lcd.print("Time:  ");
 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("Date: ");
 lcd.print(rtc.getDateStr());
 
 if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5

Video

Převzato a přeloženo z:
https://circuitdigest.com/microcontroller-projects/automatic-pet-feeder-using-arduino

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

Luboš