Briga o mačkama
Elektrostrojarska škola VaraždinAplikacija „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
Mobilna aplikacija
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.
Shema projekta
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.










