Sustav pametne rasvjete baziran na prisutnosti korisnika
Udruga Mladi informatičari StrahonincaSustav pametne rasvjete baziran na prisutnosti korisnika osmišljen je kao
autonomni sustav koji nadzire prisutnost osoba ili objekata i prema potrebi pali i
gasi svijetlo.
Prototip koji smo izradili pomoću dva ultrazvučna senzora broji koliko je osoba u
sobi i na temelju toga se pali ili gasi svijetlo. Broj osoba prikazuje se i na
mobilnom uređaju pomoću alata Blynk, kako bi mogli pratiti stanje s udaljene
lokacije.
Sustav se može koristiti u bilo kojoj prostoriji kuće ili neke ustanove kao što je
prikazano u prototipu. Jednako tako sustav je primjenjiv i u drugim područjima,
kao što je javna rasvjeta ili pametno grijanje.
Video snimka
Izrada projekta
Glavni dio projekta uz “mozak” kojeg predstavlja Arduino MKR1000 su 2
ultrazvučna senzora i led dioda koja predstavlja rasvjetu. Najveći izazov bilo je
programiranje, usklađivanje i istovremena obrada podataka iz dva izvora.
Mobilna aplikacija
Shema projekta
Kako smo u projektu koristili hc-sr04 ultrazvučne senzore dobro je napomenuti kako se oni spajaju i kako rade. Senzor se sastoji od 4 pina – 2 služe za napajanje, zatim echo i trig pinovi koji služe za slanje ultrazvučnog signala i bilježenja trenutka u kojem se signal vratio. Senzor emitira ultrazvučne valove (kao šišmiš i radar) i ako val pogodi objekt on se vraća te se na temelju bryine zvuka i vremena koliko je signal putovao računa udaljenost ili u našem slučaju prolaz kroz vrata.
Arduino program
#include #include #include #include #define BLYNK_PRINT SerialUSB #define PIN_SVJETLO 7 // Pin na koji je spojena led dioda #define PRAG 11 #define DEBUG false // provjera za senzore #define SONAR_NUM 2 // broj senzora #define MAX_DISTANCE 50 // Maximalna duljina (cm) char auth[] = "authtoken iz blynk aplikacije"; char ssid[] = "wifi ap naziv"; char pass[] = "wifi lozinka"; byte broj_ljudi; // broj ljudi u sobi byte tablica_stanja[7][4] = { // tablica svih mogucih stanja {0, 1, 4, 0}, {0, 1, 2, 1}, {3, 1, 2, 1}, {0, 0, 0, 0}, {0, 5, 4, 4}, {6, 5, 4, 4}, {0, 0, 0, 0} }; byte trenutno_stanje = 0; // trenutno stanje stanja NewPing sonar[SONAR_NUM] = { NewPing(0, 1, MAX_DISTANCE), // trigger, echo pin, maximalna duljina NewPing(2, 3, MAX_DISTANCE) // trigger, echo pin, maximalna duljina }; void upaliSvijetlo() { //palimo svijetlo na pinu PIN_SVIJETLO digitalWrite(PIN_SVJETLO, HIGH); } void ugasiSvijetlo() { //gasimo svijetlo na pinu PIN_SVIJETLO digitalWrite(PIN_SVJETLO, LOW); } byte ocitajSenzore() { //vraca stanje senzora; 0 = nista, 1 = prvi, 2 = drugi, 3 = oba byte senzori = 0; int u1, u2; u1 = sonar[0].ping_cm(); // ocita senzor if (u1 < PRAG) { senzori += 1; } delay(50); // ceka 50 milisekundi u2 = sonar[1].ping_cm(); // ocita senzor if (u2 < PRAG) { senzori += 2; } delay(50); // ceka 50 milisekundi if (DEBUG) { // ispis za provjeru stanja Serial.print(u1); Serial.print(", "); Serial.print(u2); Serial.print(", "); Serial.print(senzori); Serial.print(", "); Serial.print(broj_ljudi); Serial.print(", "); Serial.println(trenutno_stanje); } return senzori; } void osvjeziStanje() { byte ocitano = ocitajSenzore(); // ocitamo senzore trenutno_stanje = tablica_stanja[trenutno_stanje][ocitano]; // uzimamo podatke iz tablice stanja } void osvjeziLampu() { // pali ili gasi ledicu if (broj_ljudi > 0) { upaliSvijetlo(); } else { ugasiSvijetlo(); } } void setup() { Serial.begin(115200); // ukljucuje serial SerialUSB.begin(9600); Blynk.begin(auth, ssid, pass); } void loop() { // broji ljudi u sobi osvjeziStanje(); if(trenutno_stanje == 3) { broj_ljudi++; } if(trenutno_stanje == 6 && broj_ljudi > 0) { broj_ljudi--; } Blynk.virtualWrite(V5, broj_ljudi); osvjeziLampu(); Blynk.run(); }
Arduino program ovoga projekta možete preuzeti ovdje.
Autori
Projekt su izradili Šimun Bilas i Fran Železnjak uz mentorstvo Viktora Lazara iz Udruge Mladi informatičari Strahoninca.
Projekt je prijavljen na temu: Internet of Things: Pametna rasvjeta.