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.