Table of Contents

Smart light with bluethooth

Nume: Avram Alina Ionela

Grupa: 334CA

Introducere

Proiectul pe care l-am ales va reprezenta o lampa inteligenta. Aceasta se va aprinde automat atunci cand in camera in care se afla este intuneric si exista miscare. Totodata lampa va putea fi controlata si prin functia de bluethooth, pentru cazul in care vrem sa aprindem lampa manual pentru un plus de lumina.

Descriere generală

Pentru a realiza acest proiect ma voi folosi de un senzor de lumina si unul de miscare. Lampa va fi setata sa se aprinda doar atunci cand ambii senzori vor fi activati, altfel ledul va ramane stins. Totodata, voi putea aprinde acest led manual, cu ajutorul modulului bluetooth atunci cand imi doresc ca lampa sa se aprinda fara a tine cont de senzori.

Hardware Design

Componente necesare:
Led
Rezistor
Breadboar
Arduino
Modul pir
Modul bluethooth
Modul senzor lumina

Software Design

Am folosit ARDUINO IDE. Pentru inceput am setat pinii necesari: ledul - 13, senzor pir - 2, senzor lumina - 8. Am facut setup-ul necesar si in blucla de loop am implementat logica proictului. Vom citi datele transmise de senzori si in functie de acestea vom aprinde ledul. Daca atat valoarea citita de sezorul de lumina, cat si cea a senzorului PIR sunt egale cu 1, atunci setam ledul pe HIGH, altfel ledul se va stinge setandu-l pe LOW. Pentru buna functionare o bluetooth-ului citesc de la tastatura un caracter de tip char. Daca se citeste “a” (aprinde) atunci vom aprinde ledul si va ramane aprins pana cand il vom stinge prin comanda “s” (stinge).

CODUL SURSA

CODUL SURSA

#include <SoftwareSerial.h>

SoftwareSerial Bluetooth(0,1);
int led = 13; // ledul este setat la 13
int sensor = 2; // senzorul PIR este setat la 2
int light_sensor = 8; // senzorul de lumina setat la 8

void setup() {
  pinMode(led, OUTPUT);
  pinMode(sensor, INPUT);
  pinMode(light_sensor,INPUT);
  Serial.begin(9600);
}

char light;

// functie aprindere pentr un timp in functie de timer
unsigned long duration = 0;
byte i = 0;
void myfun() {
    digitalWrite(led, HIGH);
    Serial.println("led aprins pentru ");
    Serial.println(duration);
    delay(duration);
    digitalWrite(led, LOW);
}


void loop() {
  // se citeste sensorul pir
  int sensorval = digitalRead(sensor);
  int temp=digitalRead(light_sensor);
  
  Serial.println(sensorval);    // printeaza val senzor pentru pir 1 = miscare 0=altfel
  Serial.println(temp);         // printeaza val senzor lumina 1 = intuneric 0 = lumina

  // citim date de la bluetooth Lista: 
  // a-aprinde
  // s-stinge
  // t = folosim timer
  char data= Serial.read();    
  Serial.println(data);
  
   if(data == 'a') {
    light = 'a';
   } else if(data == 's') {
    light = 's';
   }
   // daca senzorul a fost setat aprins din blutooth atunci ledul ramane aprins
   // sau daca este intuneric si miscare
   // altfel
   // daca am setat senzorul sa fie stins sau in camera este lumina sau nu este miscare
   if ((sensorval == HIGH && temp == HIGH) || light == 'a' ) {
        digitalWrite(led, HIGH);
        Serial.println("led aprins");
   } else if (sensorval != HIGH || temp != HIGH || light == 's'){
        digitalWrite(led, LOW);
        Serial.println("led stins");
   } 
          
  char dataArray[10];
  // pentru TIMER        
  Serial.println("la timer");
  while(Serial.available() > 0) {
    dataArray[i] = Serial.read();
    Serial.println(dataArray[i]);
    if(dataArray[i] == '#'){
      Serial.println(i);
      duration = 0;
      duration = atol(dataArray); // se converteste vectorul de char in long
      Serial.println(duration);
      i = 0;
      myfun();
      break;
   }
   i++;
 }
   delay(1000);  
}

Rezultate Obţinute

Am obtinut rezultatul dorit. Aici este un exemplu:

Concluzii

Pentru o exemplificare mai ampla voi atasa mai jos urmatorul link catre demo:

https://www.youtube.com/watch?v=iWokTGAoYlM&ab_channel=MariaCiont%C3%AEc

Bibliografie

https://create.arduino.cc/projecthub/mayooghgirish/arduino-bluetooth-basic-tutorial-d8b737 https://play.google.com/store/apps/details?id=com.appsvalley.bluetooth.arduinocontroller&hl=ro&gl=US

Jurnal

smart_light_with_bluethooth2.pdf final.pdf