11 svi Sustav pametne rasvjete baziran na prisutnosti korisnika
Udruga Mladi informatičari Strahoninca
Sustav 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.
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.
#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.
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.