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.