Careduino
Poštanska i telekomunikacijska škola ZagrebIdeja projekta je da nakon napuštanja stana, na Blynk aplikaciji se uključi stanje Nisam u kući, te ako senzor detektira pokret, pali se svjetlo te automatski se šalje poruka na aplikaciju Detektirano je kretanje ili na mail, te se nakon 10 sekundi svjetlo automatski ugasi u cilju uštede energije dok nismo u stanu.
Izrada projekta
Mobilna aplikacija
Shema projekta
Careduino se spaja senzor pokretan na Arduino MKR 1000,zatim na relej koji je namješten na 10 s svijetljenja te koji nakon upaljenog stanja šalje poruku o detektiranom pokretu. Na kraju je spojena lampica s relejom.
Shemu ovoga projekta možete preuzeti ovdje.
Arduino program
#define BLYNK_PRINT /*
#define BLYNK_PRINT Serial // Kada se napise 'Serial' aktivira se BLYNK_PRINT
#include // Dodaje SPI
#include // Dodaje WiFi101
#include // Dodaje Blynk za Arduino MKR1000
char auth[] = "vas Blynk auth token"; // Variabla koja zadrzi Blynkov Auth Token
char ssid[] = "ime mreze"; // Variabla koja sadrzi ime mreze na koju se zelite spojiti
char pass[] = "lozinka mreze"; // Variabla koja sadrzi lozinku imreze na koju se zelite spojiti
char mail[] = "vasEmail@Email.com"; // Vasa Email adresa (ovo je opcionalno)
#define led 6 // 'led' se definira kao broj 6 (na pin-u broj 6 se palila LED dioda)
#define sensor 7 // 'sensor' se definira kao broj 7 (na pin-u 7 se prikljuci senzor)
#define blynk_signal 1 // 'blynk_signal' se definira kao broj 1 (na pin-u 1 Blynk salje signal ako niste doma)
//#define blynk_email 0 // 'blynk_email' se definira kao broj 0 (na pin-u 0 Blynk salje signal ako zelite da vam se obavjesti salju na email)
int blynk_email; // U ovu variablu ('blynk_email') Blynk ce poslati mjesto gdje zelite da vam se salju obavjesti (na Blynk ili vas Email)
int light_time = 0; // U ovu variablu ('light_time') sprema se vrijeme; kolko je dugo svjetlo upaljeno
int led_state = LOW; // U ovu variablu ('led_state') sprema se stanje pin-a 6 (prije je ovdje bila prikljucena LED dioda)
void setup() {
Serial.begin(9600); // Postavlja brzinu prijenosa podataka u bitovima u sekundi, u ovom slucaju 9600
pinMode(led, OUTPUT); // Postavlja mod pin-a 6 na OUTPUT (salje signal)
pinMode(sensor, INPUT); // Postavlja mod pin-a 7 na INPUT (prima signal)
Blynk.begin(auth, ssid, pass); // Povezuje Arduino na internet i na vasu Blynk aplikaciju
}
BLYNK_WRITE(V0) { // Dopusta Blynku da posalje podatke na pin 0
switch(param.asInt()) { // Podatke pretvara u int (broj)
case 1: // Ako je se dobije 1:
blynk_email = 1; // 'blynk_email' se postavi kao 1
break; // Funkcija se prekine
case 2: // Ako je se dobije 1:
blynk_email = 2; // 'blynk_email' se postavi kao 2
break; // Funkcija se prekine
default: // Inace:
Serial.println("Error"); // Posalji poruku "Error"
}
}
void loop() {
Blynk.run(); // Pokrece Blynk
if ((digitalRead(sensor) == HIGH) && (digitalRead(blynk_signal) == HIGH)){ // Ako pin-ovi 7 i 1 dobe signal:
if (blynk_email == 2) { // Ako je 'blynk_email' jednak 2:
Blynk.email(mail, "UPOZORENJE", "Detektirano kretanje u vasem domu!"); // Posalje se Email preko Blynka
} else { // Inace:
Blynk.notify("UPOZORENJE: Detektirano kretanje u vasem domu!"); // Salje se notifikacija na Blynk
}
}
if ((digitalRead(sensor) == HIGH) && (led_state == LOW)) { // Ako pin 7 dobi signal i stanje pin-a 6 je LOW (ako je iskljucen):
led_state = HIGH; // Stanje pin-a 6 se postavi na HIGH (ukljuci se)
digitalWrite(led, led_state); // Posalje se signal na pin 6
delay(8000); // Program se pauzira na 7s; ako se ovo ne ucini pin 6 se pali i gasi jer senzor konstantno salje signal u nasem slucaju signal se slao 7s
}
if ((digitalRead(sensor) == HIGH) && (led_state == HIGH)) { // Ili ako pin 7 dobi signal i stanje pin-a 6 je HIGH (ako je ukljucen):
led_state = LOW; // Stanje pin-a 6 se postavi na LOW (iskljuci se)
digitalWrite(led, led_state); // Posalje se signal na pin 6 (ako se ovo ne ucini signal se ne ce osvjeziti i pin 6 ce biti upaljen kad ne bi trebao)
delay(8000); // - || -
}
if (led_state == HIGH) { // Ako je stanje pin-a 6 HIGH:
light_time += 1; // Zbroji 'light_time' sa brojem 1
} else { // Inace:
light_time = 0; // 'light_time' stavi na 0
}
if (light_time == 3600000) { // Ako je 'light_time' jednak 3600000 (3600s tj. 1h):
if (blynk_email == 2) {
Blynk.email(mail, "PODSJETNIK", "Vase svjetlo je upaljeno vec 60 min.");
} else {
Blynk.notify("PODSJETNIK: Vase svjetlo je upaljeno vec 60 min."); // Posalji notifikaciju na Blynk
}
}
digitalWrite(led, led_state); // Posalje se signal pin-u 6; zbog ovoga pin 6 ostaje upaljen ili ugasen
}
Arduino program ovoga projekta možete preuzeti ovdje.
Autori
Projekt su izradili David Reca i Deni Dugošija uz mentorstvo Petra Trlajića iz Poštanske i telekomunikacijske škole Zagreb.
Projekt je prijavljen na temu: Internet of Things: Pametna rasvjeta.



