Arduino smart light switch

Gimnazija Matije Antuna Reljkovića Vinkovci

Arduino koristi lasere da bi detektirao pokret tj. detektira kad se prekine laserska linija.Postavljena su dva lasera jedan s unutarnja strane okvira vrata i jedan s vanjske.Kada osoba ulazi u sobu prvo “zapne” za vanjski pa za unutarnji laser, a kad izlazi obrnuto.Tako možemo znati koliko je točno osoba u sobi.Automatska svjetla najčešće rade na detekciji pokreta što i nije toliko dobro jer ako se osoba ne miče u sobi ona svejedno želi upaljena svjetla, ali s ovim našim sustavom takvih problema nema jer će svjetla ostati upaljena sve dok je ta osoba ili više njih u sobi.Osoba može i sama slobodno paliti i gasiti svjetla pomoću mobitela

Video snimka

Izrada projekta

Arduino MKR 1000,relej(jedan na breadboardu, a drugi je u kutiji of prekidača da bi se visoki izmjenični izolirao of ostale elektronike),zvučnik,otpornici u seriji s foto otpornicima (pojedinačno za svaki laser) stvaraju promjenjivi napon između otpornika i foto otpornika , napon ovisi o tome da li laser pogađa ili ne pogađa foto otpornik jer tada mu se mijenja otpor tj, smanjuje se s većom prisutnošću svjetla.

UPT kabel of internet se koristi da prenosi struju do stolne lampe i da pomoću kabla Arduina prima stanje foto otpornika.

Kabel koji ide prema stolnoj lampi ima napon of 12V i prekida se s relejom koji se nalazi pokraj Arduina.

Foto otpornik se nalazi između vrata i okvira vrata.

Mobilna aplikacija

LCD(V2) se koristi za prikazivanje stanja vrata(otvorena/zatvorena),prikaz vrijednosti(V1) se koristi za prikazivanje broja ljudi tek kad je na nuli svjetla će se ugasiti,tipka sleep mode(V3) služi za gašenje svjetla kada idemo spavati ili jednostavno želimo ugasiti svjetla,level stropno svjetlo(V0) prikazuje stanje stropnog svjetla(upaljeno/ugašeno,1/0),level stolno svjetlo (V5) prikazuje stanje stolnog svjetla(upaljeno/ugašeno,1/0),timer(V4) služi kao budilica start vrijeme postavimo kada se želimo probuditi(tada zvučnik pušta nepodnošljiv zvuk, svjetla se upale), a stop vrijeme postavljamo u vrijeme kada počinje mrak ako nije mrak Arduino neće paliti svjetla da bi štedio električnu energiju.

Shema projekta

Jedina posebnost jest da su foto otpornik i obični(stalne vrijednosti) otpornik spojeni u seriju na vcc (napon 3,3V), a između njih žica ide na analogni ulaz Arduina za svaki senzor.

Shemu ovoga projekta možete preuzeti ovdje.

Arduino program

#define BLYNK_PRINT /*

#define BLYNK_PRINT Serial

#include 
#include 
#include 

int sensorIn = A1;    //unutarnji senzor
int sensorOut = A2;   //vanjski senzor
int magnetSensor = A3;//senzor magneta
int sensorchair= A4;  //senzor za stolicu
int laserIn = 1;      //unutarnji laser 
int laserOut = 2;     //vanjski laser
int relay = 3;        //glavno svjetlo
int speaker = 4;      //zvucnik
int relay2 = 5;       //stolna lampa
int sensorInValue = 470;  //granica unutarnjeg senzora
int sensorOutValue = 460; //granica vanjskog senzora
int sensorChairValue = 800; //granica stolnog senzora
int magnetSensorValue = 630;  //granica senzora magneta
int people = 0;     //broj ljudi
int freq=4450;  //frekvencija zvucnka tj. alarma


bool doorClosed = false;  //varijabla za stanje vrata
bool sleepMode = false;   //varijabla za stanje spavanja/uključivanja
bool night=true;          //postavi varijablu da je noc 

char auth[]="1ca80e766562403faf36fc4d2edc59cf";   //osobni podaci
char ssid[]="Maric";
char pass[]="ivaslatkaje1";

WidgetLCD lcd(V2);     //virtualni pin za lcd

BLYNK_WRITE(V3)    //blynk-sleep mode tipka
{
  int state=param.asInt();  //blynk podatke spremu u integer varijablu state 
  if(state==1)      //ako je tipka uključena  
  {
    digitalWrite(relay,LOW);   //ugašeno glavno(stropno)svjetlo 
    digitalWrite(relay2,LOW);
    digitalWrite(laserIn,LOW); //ugasiti unutarnji laser
    digitalWrite(laserOut,LOW); //ugasiti vanjski laser
    Blynk.virtualWrite(V0,0);  //pokaži korisniku stanje ugašenosti
    sleepMode=true;  //sleep mode uključen
  }
  else 
  {
    if(people>0)   //ako ima ljudi u sobi
    {
      digitalWrite(relay,HIGH);   //upaliti svjetlo
      if(analogRead(sensorchair)>sensorChairValue & sleepMode==false)   //ako je netko za racunalom
      {
        digitalWrite(relay2,HIGH);      //upali stolnu lampu
        Blynk.virtualWrite(V5,1);  //prikazuje da je stolno svjetlo upaljeno na blynku
      }
      Blynk.virtualWrite(V0,1);   //pokaži korisniku stanje upaljenosti (upaljeno)
    }
    digitalWrite(laserIn,HIGH);   //upali unutarnji laser 
    digitalWrite(laserOut,HIGH);  //upali vanjski laser
    sleepMode=false;  //ugasiti sleep mode
  }
}

BLYNK_WRITE(V4)    //budilica na Blynku
{
  int state=param.asInt();  //blynk podatke spremu u integer varijablu state
  if(state==1)          
  {
    digitalWrite(relay,HIGH);   //upali stropno svjetlo
    sleepMode=false;      //sleep mode ugasiti
    Blynk.virtualWrite(V3,0);  //prikazati na Blynku da je sleep mode ugasen
    Blynk.virtualWrite(V0,1);  //prikazati da je upaljeno svjetlo na blynku
    tone(speaker,freq,10000);  //ispustati zvuk preko zvucnika 10 sec
    night=false;  //nije više noć
  }
  else
  {
    night=true;   //noć je
  }
}

void setup() {
    Serial.begin(9600); //zapocinje komunikacija sa serial monitorom na racunalu
    Blynk.begin(auth, ssid, pass);  //zapocinje vezu sa Blynk serverom nas projekt sada je online
    pinMode(magnetSensor,INPUT);    //hall effect senzor koji se nalazi na okviru vrata a na vratima se nalazi magnet te tako mozemo provjeriti jesu li vrata otvorena
    pinMode(sensorIn,INPUT);        //otpornik osjetljiv na svjetlo je povezan u seriju s obicnim otpornikom, a ovaj pin je spoji izmedu ta dva otpornika te dobijamo promjenjivi napon ovisno o jacini svjetlosti
    pinMode(sensorOut,INPUT);       //otpornik osjetljiv na svjetlo je povezan u seriju s obicnim otpornikom, a ovaj pin je spoji izmedu ta dva otpornika te dobijamo promjenjivi napon ovisno o jacini svjetlosti
    pinMode(relay,OUTPUT);          //relej koji pali svjetlo 
    pinMode(laserIn,OUTPUT);        //laser koji svjetli na unutarnji otpornik osjetljiv na svjetlo
    pinMode(laserOut,OUTPUT);       //laser koji svjetli na unutarnji otpornik osjetljiv na svjetlo
    digitalWrite(laserIn,HIGH);     //upali unutarnji laser 
    digitalWrite(laserOut,HIGH);    //upali vanjski laser
    Blynk.run();                    //pokreniti
    Blynk.virtualWrite(V1,0);       //broj ljudi ispisuje na 0
    lcd.clear();                    //čisti lcd
}

void loop() {
  Blynk.run();                 //pokretanje Blynk
  if(doorClosed==false & sleepMode==false & night==true)
  {
    if(analogRead(laserOut)<sensorOutValue)  //ako netko prolazi kroz laser vanjski
    {
      for(int i=0;i<200;i++)   
      {
        if(analogRead(laserIn)<sensorInValue)   //ako prolazi kroz unutarnji laser
        {
          digitalWrite(relay,HIGH);   //pali stropno svjetlo
          people++;   //povecava broj ljudi
          Blynk.virtualWrite(V0,1); //prikazuje stanje svjetla na blynku
          Blynk.virtualWrite(V1,people);  //prikazuje broj ljudi na blynku
          break; 
        }
        delay(10); 
      }
      delay(1000);
    }
    
    if(analogRead(laserIn)<sensorInValue)//ako netko izlazi iz sobe(prolazi kroz unutarnji senzor)
    {
      for(int i=0;i<200;i++)
      {
        if(analogRead(laserOut)<sensorOutValue)   //ako netko izađe iz sobe(prođe kroz vanjski senzor)
        {
          people--;  //smanjuje broj ljudi
          if(people<=0) //ako ima 0 ljudi ili dođe do buga i ima manje od 0 ljudi { digitalWrite(relay,LOW); //gasi stropno svjetlo digitalWrite(relay2,LOW); //gasi stolnu lampu Blynk.virtualWrite(V0,0); //prikazuje da je stropno svjetlo ugašeno na blynku Blynk.virtualWrite(V5,0); //prikazuje da je stolno svjetlo ugašeno na blynku people=0; //broj ljudi:0 } Blynk.virtualWrite(V1,people); //prikazuje broj ljudi na blynku break; } delay(10); } delay(1000); } } if(analogRead(sensorchair)>sensorChairValue & sleepMode==false & night==true)  //ako netko želi sjesti i izvuče stolicu, a noc je
  {
    digitalWrite(relay2,HIGH);  //pali stolno svjetlo
    Blynk.virtualWrite(V5,1);  //prikazuje da je stolno svjetlo ugašeno na blynku
    Serial.println("Upaljeno");
  }
  else
  {
    digitalWrite(relay2,LOW);  //stolno svjetlo je ugašeno
    Blynk.virtualWrite(V5,0);   //prikazuje da je stolno svjetlo upaljeno na blynku
  }
  if(analogRead(magnetSensor)>magnetSensorValue) //ako vrata dođu blizu magneta i vrata se zatvore
  {
    digitalWrite(laserIn,LOW);  //gasi unutarnji senzor
    digitalWrite(laserOut,LOW);  //gasi vanjski senzor
    lcd.print(0,0,"Vrata->zatvorena");  //ispisuje na blynk lcd da su vrata zatvorena
    doorClosed=true;  //vrata zatvorena:istina
  }
  else
  {
    if(sleepMode==false)   //ako je sleep mode iskljucen
    {
      digitalWrite(laserIn,HIGH);  //upaliti unutarnji laser
      digitalWrite(laserOut,HIGH);   //upaliti vanjski laser
    }
    doorClosed=false;                  //varijabla za zatvorena vrata
    lcd.print(0,0,"Vrata->otvorena "); //ispisuje na blynku da su vrata otvorena
  }
}

Arduino program ovoga projekta možete preuzeti ovdje.

Autori

Projekt su izradili Fran Marić i Vittorio Vičević uz mentorstvo Daniela Rakijašića iz Gimnazije Matije Antuna Reljkovića Vinkovci.

Projekt je prijavljen na temu: Internet of Things: Pametna rasvjeta.

Drugi projekti

Pametna rasvjeta – Zastora pomoću mobitela

Pametna rasvjeta – Zastora pomoću mobitela

Sustav pametne rasvjete baziran na prisutnosti korisnika

Sustav pametne rasvjete baziran na prisutnosti korisnika

Vanjska pametna rasvjeta – sensor

Vanjska pametna rasvjeta – sensor

Zvučna rasvjeta

Zvučna rasvjeta

Pametna rasvjeta za stan

Pametna rasvjeta za stan

Ambijetalno svjetlo

Ambijetalno svjetlo

Pametna rasvjeta

Pametna rasvjeta

Solarna energija

Solarna energija

Svjetlo u tami

Svjetlo u tami

Pametna rasvjeta (detektor zvuka)

Pametna rasvjeta (detektor zvuka)

Policijska sirena i oznaka Starta

Policijska sirena i oznaka Starta

Pali – gasi

Pali – gasi

Daljinsko upravljanje rasvjetom

Daljinsko upravljanje rasvjetom

Pametna rasvjeta – Music reacting circuit

Pametna rasvjeta – Music reacting circuit

Anti-theft

Anti-theft

Connect IT Pametni hodnik

Connect IT Pametni hodnik

Protuprovalni sustav

Protuprovalni sustav

Pametni stan

Pametni stan

Pametni tanjurić za šalicu

Pametni tanjurić za šalicu

Pametna kuća s Arduinom

Pametna kuća s Arduinom

Pametna kuća

Pametna kuća

Protuprovalno svjetlo u ormaru

Protuprovalno svjetlo u ormaru

Pametna rasvjeta

Pametna rasvjeta

Pametne osvijetljene stube

Pametne osvijetljene stube

Svijetliš u noći

Svijetliš u noći

Careduino

Careduino

Rainclock

Rainclock

Pljeskalica

Pljeskalica

Zebra

Zebra

Pametna rasvjeta informatika

Pametna rasvjeta informatika

Pametna rasvjeta

Pametna rasvjeta

Signalizacija

Signalizacija

Pametna rasvjeta

Pametna rasvjeta

Svjetlo za ugođaj

Svjetlo za ugođaj

Pametna rasvjeta

Pametna rasvjeta

Snimanje filma s mobitelom uz pomoć pametne rasvjete

Snimanje filma s mobitelom uz pomoć pametne rasvjete

Pametna ulična rasvjeta

Pametna ulična rasvjeta

Neka bude svjetlo

Neka bude svjetlo

Emotion light

Emotion light

Gasi letriku!

Gasi letriku!

Svjetlosni komunikator

Svjetlosni komunikator

iHouse

iHouse

Pametna rasvjeta s Arduinom

Pametna rasvjeta s Arduinom

Pametna rasvjeta kuće

Pametna rasvjeta kuće

Model kuće s pametnom rasvjetom

Model kuće s pametnom rasvjetom

Pametna rasvjeta – Zaštita kuće od provalnika

Pametna rasvjeta – Zaštita kuće od provalnika

Pametna rasvjeta na pljeskalački pogon

Pametna rasvjeta na pljeskalački pogon

Pametna rasvjeta

Pametna rasvjeta

Uređaj za mjerenje količine svjetlosti, vlage i temperature

Uređaj za mjerenje količine svjetlosti, vlage i temperature

Pametna budilica

Pametna budilica

Ambijentalna rasvjeta

Ambijentalna rasvjeta

Pametna garaža

Pametna garaža

Laserski brojač ljudi

Laserski brojač ljudi

Pametna vanjska rasvjeta

Pametna vanjska rasvjeta

Pametna rasvjeta

Pametna rasvjeta

Blynk pametna rasvjeta sa ESP8266

Blynk pametna rasvjeta sa ESP8266

Rasvjeta u igraonici

Rasvjeta u igraonici

Svjetionik

Svjetionik

IoT pametna rasvjeta ovisno o vremenu dana

IoT pametna rasvjeta ovisno o vremenu dana

Arduino smart light switch

Arduino smart light switch

Slabo pokretne osobe

Slabo pokretne osobe

RGB mixer

RGB mixer

Pametna rasvjeta

Pametna rasvjeta

Zujalica i svjetlo na senzor

Zujalica i svjetlo na senzor

Žuta i zelena soba

Žuta i zelena soba

Pametna rasvjeta

Pametna rasvjeta

Ako upališ, ugasi!

Ako upališ, ugasi!

Upozorenje na upaljena svjetla

Upozorenje na upaljena svjetla

GPS rasvjeta

GPS rasvjeta

RGB svjetlo

RGB svjetlo

Pametan parking

Pametan parking

Priprema, pozor, sad

Priprema, pozor, sad

Disco light

Disco light

Aurora Borealis

Aurora Borealis

Pametni hladnjak

Pametni hladnjak

Pametna rasvjeta

Pametna rasvjeta

Pametna rasvjeta u kući

Pametna rasvjeta u kući

Noćna rasvjeta

Noćna rasvjeta

Noćni prozor

Noćni prozor

Otvori me, zatvori me

Otvori me, zatvori me

House and garden lights

House and garden lights

IOT_Rasvjeta_4

IOT_Rasvjeta_4

Smart rasvjeta

Smart rasvjeta

IOT-Stubišni automat

IOT-Stubišni automat

Lego Arduino pametna rasvjeta

Lego Arduino pametna rasvjeta

IOT_Rasvjeta_2

IOT_Rasvjeta_2

IOT_Rasvjeta_1

IOT_Rasvjeta_1

Svjetlo za bicikl

Svjetlo za bicikl