Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:cghenea:smartlock [2021/05/31 22:05]
violeta.fasui [Smart Lock]
pm:prj2021:cghenea:smartlock [2021/06/02 18:52] (current)
violeta.fasui
Line 1: Line 1:
-{{:​pm:​prj2021:​cghenea:​smart_lock.pdf|}} +====== Smart Lock ======
-====Smart Lock====+
 Nume: Fasui Violeta Alexandra\\ Nume: Fasui Violeta Alexandra\\
 Grupa: 334CA Grupa: 334CA
  
-===Introducere===+====== Introducere ​======
 Tema proiectului propus este o incuietoare inteligenta. Acesta va simula modul de functionare al unei alarme, tinand cont de starea incuietorii. Astfel vor exista doua situatii: Tema proiectului propus este o incuietoare inteligenta. Acesta va simula modul de functionare al unei alarme, tinand cont de starea incuietorii. Astfel vor exista doua situatii:
   * Daca incuietoarea este inchisa si se simte miscare, atunci alarma va semnala acest lucru, folosind un buzzer.   * Daca incuietoarea este inchisa si se simte miscare, atunci alarma va semnala acest lucru, folosind un buzzer.
Line 10: Line 9:
 Pentru a putea inchide si deschide incuietoarea,​ voi utiliza o parola ce presupune introducerea unui cod prin keypad. In permanenta, incuietoarea este conectata la un telefon ce ii poate modifica starea. Pentru a putea inchide si deschide incuietoarea,​ voi utiliza o parola ce presupune introducerea unui cod prin keypad. In permanenta, incuietoarea este conectata la un telefon ce ii poate modifica starea.
  
-===Descriere generala===+====== Descriere generala ​======
 In scopul realizarii acestei incuietori voi utiliza un senzor de miscare, un servomotor, un keypad, un buzzer si modelul bluetooth. Incuietoarea va avea doua stari determinate de codul introdus prin keypad: ​ In scopul realizarii acestei incuietori voi utiliza un senzor de miscare, un servomotor, un keypad, un buzzer si modelul bluetooth. Incuietoarea va avea doua stari determinate de codul introdus prin keypad: ​
   * inchisa: fie atunci cand se introduce #, fie atunci cand se introduce o parola gresita;   * inchisa: fie atunci cand se introduce #, fie atunci cand se introduce o parola gresita;
Line 18: Line 17:
    
  
-===Hardware Design===+====== Hardware Design ​======
 Modul Bluetooth\\ Modul Bluetooth\\
 Modul PIR - senzor de prezenta\\ Modul PIR - senzor de prezenta\\
Line 32: Line 31:
 {{:​pm:​prj2021:​cghenea:​smartlock.jpg?​600|}} {{:​pm:​prj2021:​cghenea:​smartlock.jpg?​600|}}
  
-===Software Design===+====== Software Design ​======
 In scopul realizarii proiectului,​ am utilizat o variabila care monitorizeaza starea incuietorii. Aceasta isi schimba starea astfel: In scopul realizarii proiectului,​ am utilizat o variabila care monitorizeaza starea incuietorii. Aceasta isi schimba starea astfel:
   * este inchisa atunci cand se apasa tasta '#'​ sau atunci cand parola introdusa este gresita. ​   * este inchisa atunci cand se apasa tasta '#'​ sau atunci cand parola introdusa este gresita. ​
Line 40: Line 39:
 In loop, se verifica constant datele primite de la telefon. Acesta poate trimite caracterele '​c'​ pentru a inchide incuietoarea,​ sau '​o'​ pentru a o deschide. In loop, se verifica constant datele primite de la telefon. Acesta poate trimite caracterele '​c'​ pentru a inchide incuietoarea,​ sau '​o'​ pentru a o deschide.
  
-**Codul ​sursa al proiectului** +<spoiler Cod sursa
-<note>note</note>+<​code>​ 
 +#include <​Servo.h>​ 
 +#include <​Keypad.h>​ 
 + 
 +#define delay_time 100 
 + 
 +Servo servo1; 
 +String pass = "​1234";​ 
 +int lock = 0; 
 + 
 +String password; 
 +const byte Rows = 4; 
 +const byte Cols = 4; 
 + 
 +int pir = 12; 
 +int move = 0; 
 +char phone_data;​ 
 +int buzzer = 13; 
 + 
 +char keys[Rows][Cols] = { 
 +  {'​1','​2','​3','​A'​},​ 
 +  {'​4','​5','​6','​B'​},​ 
 +  {'​7','​8','​9',​ '​C'​},​ 
 +  {'*','​0','#','​D'​} 
 +}; 
 + 
 +byte rowPins[Rows] = {9, 8, 7, 6}; 
 +byte colsPins[Cols] = {5, 4, 3, 2}; 
 + 
 +Keypad keypad = Keypad(makeKeymap(keys),​ rowPins, colsPins, Rows, Cols); 
 + 
 +void setup() { 
 +  Serial.begin(9600);​ 
 +  servo1.attach(11);​ 
 +  keypad.addEventListener(keypadEvent);​ 
 +  pinMode(pir,​ INPUT); 
 +  Serial.println("​==== Incuietoare deschisa ====="​);​ 
 +  servo1.write(180);​ 
 +  pinMode (buzzer, OUTPUT) ; 
 +
 + 
 +void loop() { 
 +  keypad.getKey();​ 
 +  move = digitalRead(pir);​ 
 +  Serial.println("​Senzor PIR:"​);​ 
 +  Serial.println(move);​ 
 +  delay(delay_time);​ 
 +  Serial.println(keypad.getKey());​ 
 +  if(lock == 1 && move == 1) 
 +  { 
 +    Serial.println("​==== SUNA ALARMA ===="​);​ 
 +    for (int i = 0; i <10; i++) 
 +    { 
 +      digitalWrite (buzzer, HIGH) ; 
 +      delay (2) ; 
 +      digitalWrite (buzzer, LOW) ; 
 +      delay (2) ; 
 +    } 
 +  } 
 +  phone_data = Serial.read();​ 
 +  if(phone_data == '​c'​) 
 +  { 
 +      lock = 1; 
 +      servo1.write(0);​ 
 +  } else if(phone_data == '​o'​) 
 +    { 
 +      lock = 0; 
 +      servo1.write(180);​ 
 +    } 
 +
 + 
 +void keypadEvent(KeypadEvent ekey) { 
 +  switch(keypad.getState()) 
 +  { 
 +    case PRESSED: 
 +      switch (ekey) 
 +      { 
 +        case '*': checkPassword();​ break; 
 +        case '#'​ : password = "";​ lock = 1; servo1.write(0);​ Serial.println("​==== INCUIETOARE INCHISA ===="​);​ break;  
 +        default: password += ekey; 
 +      } 
 +  } 
 +
 + 
 +void checkPassword() 
 +
 +  Serial.println(password);​ 
 +  if(password.compareTo(pass)) 
 +  { 
 +    password = "";​ 
 +    servo1.write(0);​ 
 +    lock = 1; 
 +  Serial.println("​!!!! PAROLA INTRODUSA ESTE GRESITA !!!!"​);​ 
 +  } else 
 +  { 
 +    servo1.write(180);​ 
 +    password = "";​ 
 +    lock = 0; 
 +    Serial.println("​!!!! PAROLA INTRODUSA ESTE CORECTA !!!!"​);​ 
 +  } 
 +
 + 
 +</code> 
 +</spoiler> 
 + 
 + 
 + 
 +====== Rezultate Obţinute ====== 
 + 
 +Proiectul simuleaza functionarea unei alarme. Acest lucru este evidentiiat atat in demo, cat si in urmatoarele imagini: 
 +  * Incuietoare inchisa 
 +{{:​pm:​prj2021:​cghenea:​inchis.jpg?​200|}} 
 + 
 +  * Incuietoare deschisa 
 + 
 +{{:​pm:​prj2021:​cghenea:​deschis.jpg?​200|}} 
 + 
 +[[https://​youtu.be/​QhZYxrSIBnA]] 
 + 
 +====== Concluzii ====== 
 +Proiectul a necesitat atat acumularea cunostintelor prezentate la laborator, cat si creativitatea fiecaruia. Consider ca proiectul a fost unul practic, cu o utilitate reala, ce poate fi privit ca o experienta constructiva.
  
 +====== Jurnal ======
 +25 aprilie: am ales tema a proiectului\\
 +29 aprilie: am modificat ideea de inceput, am ales piesele si am creat aceasta pagina\\
 +10 mai: am comandat piesele suplimentare de care aveam nevoie\\
 +14 mai: implementare proiect\\
 +26 mai: finalizare proiect\\
  
-===Rezultate Obţinute=== 
  
-===Concluzii===+====== ​Resurse / Bibliografie ====== 
 +[[https://​ardushop.ro/​ro/​home/​29-placa-de-dezvoltare-uno-r3.html?​search_query=arduino+uno&​results=242]] 
 +[[https://​ocw.cs.pub.ro/​courses/​pm]]
  
-===Download== 
  
-===Jurnal=== 
 {{:​pm:​prj2021:​cghenea:​smart_lock.pdf|}} {{:​pm:​prj2021:​cghenea:​smart_lock.pdf|}}
 +{{:​pm:​prj2021:​cghenea:​smartlock.pdf|}}
  
pm/prj2021/cghenea/smartlock.1622487951.txt.gz · Last modified: 2021/05/31 22:05 by violeta.fasui
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0