Briga o mačkama

Elektrostrojarska škola Varaždin

Aplikacija „Briga o mačkama“ namijenjena je za davanje hrane (krekera) i pića (vode) kućnim ljubimcima mačkama. U projektu se koristi veliki spremnik s vodom u kojemu se nalazi reed magnetski senzor razine vode (LS1) kojim se detektira niski nivo vode u spremniku. Posuda za vodu za mačke ima senzor za vodu (LT1) koji daje signal razine vode u posudi. Ako razina vode u posudi za mačke padne ispod određene „niske“ razine počinje automatski proces punjenja posude vodom iz spremnika, uz uvjet da ima dovoljno vode u spremniku. Punjenje posude vodom traje tako dugo dok se ne dostigne željena „visoka“ razina u posudi. Ako razina vode u velikom spremniku padne ispod razine senzora za vodu (LS1) automatski se šalje određena e-mail poruka upozorenja te se javlja upozorenje i na Blynk aplikaciji. Hranjenje mačaka se vrši preko Blynk aplikacije tako da korisnik prvo pomoću slider-a („Vrijeme sipanja hrane“) podesi vrijeme doziranja hrane od 1 do 5 sekundi. Nakon toga pritiskom na gumb („Daj hranu“) pokrene sipanje hrane iz spremnika hrane u posudu za mačke. Hrana se nalazi u spremniku u boci koja je preko posebno dizajniranog nosača isprintanog na 3D pisaču montirana na servo motor koji se zakreće kod hranjenja za 45° i tako sipa hranu u posudu. Blynk aplikacija, osim opisanih funkcija, sadrži i prikaz razine vode u posudi te stanje senzora vode u spremniku, te kontrole za „e-mail“ i „upozorenje“.

Video snimka

Izrada projekta

Ova fotografija prikazuje shematski prikaz procesa projekta.

Ova slika prikazuje elektroniku projekta.

Ova slika prikazuje spremnik vode projekta.

Ova slika prikazuje posudu vode za mačke projekta.

Ova slika prikazuje sustav za hranjenje mačaka projekta.

Mobilna aplikacija

Ova fotografija sadrži prikaz Blynk aplikacije s opisom widget-a koji se koriste.

Ova fotografija prikazuje Blynk aplikaciju koja nije u radu. Slider Vrijeme sipanja hrane služi za namještanje vremena sipanja hrane a pritiskom na gumb Daj hranu se pokreće sipanje hrane. Aplikacija prikazuje na Level kontroli nivo vode u posudi te na labeled value kontroli stanje senzora razine vode u spremniku.

Ova fotografija prikazuje Blynk aplikaciju kad je u radu. Aplikacija koristi email i notification kontrolu za slanje email-a i upozorenja o niskoj razini vode u spremniku.

Ova fotografija prikazuje poslani email od strane Blynk aplikacije kod niske razine vode u spremniku.

Shema projekta

Ova slika prikazuje shemu spoja elemenata u Fritzing-u.

Arduino program

#define BLYNK_PRINT /*

// program za doziranje hrane i vode za mačke

// uključivanje potrebnih knjižnica
#include 
#include 
#include 
#include  

// definiranje servo objekta, pinova i varijabli
Servo mojservo;  
int senPosPin = A1;
int senSprPin = 7;
int senSprPwr = 6;
int relayPin = 2;
int val;
int senPosVal = 0;
int senSprVal = 0;
int emailSend = 0;
int sliderValue = 0;

// token za autentifikaciju s Blynk aplikacijom
char auth[] = "d762dbee46154ee784d7ade1019a4276";

// naziv i lozinka WIFI mreže
char ssid[] = "AP_A12";
char pass[] = "UH1seIsP7RbkbwZ";


// početak programa za doziranje hrane

BLYNK_WRITE(V0)     // spremanje vrijednosti slajdera "Vrijeme sipanja hrane" s Blynk aplikacije za vrijeme doziranja hrane (od 1 sekunde do 5 sekundi) u varijablu "sliderValue"
{
  sliderValue = param.asInt(); // pridruživanje vrijednosti pina V0 varijabli
}

BLYNK_WRITE(V1)     // uključenje servo motora na kut od 45° za doziranje hrane na vrijeme od "sliderValue" sekundi pritiskom na gumb "Daj hranu" na Blynk aplikaciji
{
  if (param.asInt()){           // ispitivanje vrijednosti pina V1, tj. je li gumb za hranu pritisnut
    val = 45;                   // postavi kut od 45°
    mojservo.write(val);        // aktiviranje sipanja hrane uključenjem servo motora na novi kut
    delay(sliderValue*1000);    // čekaj podešeni broj sekundi
  } else {                      // inače
    val = 90;                   // vrati kut na 90°
    mojservo.write(val);        // deaktiviraj sipanje hrane vraćanjem servo-a u početni položaj
    }
}
// kraj programa za doziranje hrane

void setup()    // funkcija za inicijalizaciju
{
  // inicijalizacija ulaznih i izlaznih pinova
  pinMode(relayPin, OUTPUT);
  pinMode(senSprPwr, OUTPUT);
  pinMode(senSprPin, INPUT);
  
  mojservo.attach(5);   // dodjeljivanje PWM pin-a servo-u
  val = 90;             // početni kut servo motora 90°C
  mojservo.write(val);  // postavljanje servo motora i spremnika za hranu u početni položaj 
  Blynk.begin(auth, ssid, pass);  // povezivanje s Blynk aplikacijom
  Serial.begin(9600);             // inicijalizacija serijske komunikacije
  digitalWrite(senSprPwr, HIGH);  // uključenje signala senzora razine vode u spremniku
}


void loop()   // glavna funkcija
{

  // pokretanje Blynk-a
  Blynk.run();

// početak programa za doziranje vode
  senPosVal = analogRead(senPosPin);  // čitanje vrijednosti senzora razine vode u posudi
  senSprVal = digitalRead(senSprPin); // čitanje stanja senzora razine vode u spremniku
  
  if ((senPosVal < 100) && (senSprVal == 1)) // ako je niska razina vode u posudi i ako ima vode u spremniku { digitalWrite(relayPin, LOW); // uključi relej pumpe (uključuje se na "nisko") i pumpaj vodu u posudu } if ((senPosVal > 500) || (senSprVal == 0))  // voda se pumpa tako dugo dok razina u posudi ne bude dovoljno visoka ili dok se spremnik za vodu ne isprazni
  {
    digitalWrite(relayPin, HIGH);             // tada se isključi relej pumpe (isključi se na "visoko")
  }

  // poruke niske razine u spremniku
  if (senSprVal == 0 && emailSend == 0){      // ako je detektirana niska razina vode u spremniku samo jednom se (u trenutku detekcije)
    Blynk.email("centvz@gmail.com", "Ljubimci upozorenje!", "Nema vode u spremniku!");    // šalje e-mail poruka upozorenja na željenu adresu
    Blynk.notify("Niska razina vode u spremniku!");                                       // i javlja upozorenje na Blynk aplikaciji
    emailSend = 1;
  }
  if (senSprVal == 1 && emailSend == 1)   // kod punjenja spremnika vodom ponovno se omogućava slanje e-mail poruke i Blynk upozorenja kad se spremnik sljedeći put isprazni
    emailSend = 0;
// kraj programa za doziranje vode
   
}


Arduino program ovoga projekta možete preuzeti ovdje.

Autori

Projekt su izradili Rudolf Leon-Filip i Luka Sakač uz mentorstvo Krunoslava Grudičeka iz Elektrostrojarske škole Varaždin.

Projekt je prijavljen na temu: Internet of Things: Kućni ljubimci i domaće životinje.

Drugi projekti