Differences

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

Link to this comparison view

pm:prj2022:robert:laser-tripwire-alarm [2022/05/26 21:13]
mario_gabriel.mosor [Laser Tripwire Alarm]
pm:prj2022:robert:laser-tripwire-alarm [2022/05/27 20:52] (current)
mario_gabriel.mosor [Jurnal]
Line 34: Line 34:
 | 10 Pc. Jumper Wire Kit, 10 cm Long     ​| ​   10    |  | 10 Pc. Jumper Wire Kit, 10 cm Long     ​| ​   10    | 
  
 +==Electric Scheme==
  
 +{{:​pm:​prj2022:​robert:​wiring.png|}}
 ===== Software Design ===== ===== Software Design =====
  
  
-<note tip+Am lucrat in IDE oferit de Arduino. 
-Descrierea codului aplicaţiei ​(firmware): + 
-  ​* mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR+Biblioteci folosite: 
-  * librării şsurse 3rd-party ​(e.g. Procyon AVRlib+keypad.h ​ (https://​github.com/​Chris--A/​Keypad) 
-  algoritmi şi structuri pe care plănuiţi să le implementaţi + 
-  ​(etapa 3surse şi funcţii implementate +Codul de acces este stocat într-o matrice, am ales un cod de 4 cifre, îl putem face mai lung sau mai scurt, doar modificam dimensiunea matricei și adăugam sau eliminam valori. 
-</note>+ 
 +<code cpp
 +short code[4]={'​1','​3','​6','​6'​};​ 
 +</​code>​ 
 + 
 +Pentru a opri alarma, trebuie să apăsam pe „*” de pe tastatură, apoi să introducem numerele 1, 3, 6, 6, codul va fixa soneria într-o singură frecvență ​(deranjantăpână când introducem 4 cifre, dacă acestea sunt corecte alarma se va opri, altfel se va declanșa din nou. 
 + 
 +<code cpp> 
 +void Getpass(){ ​  
 +tone(13,2000);   
 +for(short i=0 ; i<4 ; i++)            
 + ​{ ​                         
 +      char keypressed = myKeypad.waitForKey(); ​             
 +      if (keypressed==code[i])  
 +      a++;            
 + } 
 +
 +</​code>​ 
 + 
 +De fiecare dată când introducem o cifră corectăvaloarea „a” crește, dacă este == 4, codul este considerat corect, altfel numărul nu va fi niciodată egal cu 4. 
 + 
 +<code cpp> 
 + ​if(a==4){          
 +   noTone(13); ​        
 +   ​a=0; ​         
 +   ​detection=false;​ 
 +         } 
 +</​code>​ 
 + 
 +==CODUL== 
 +<code cpp> 
 +#include <​Keypad.h>​ 
 + 
 +#define Rec 0 
 +#define Laser 2 
 +#define Button 3 
 + 
 +bool detection;​ 
 +short a=0; 
 +short code[4]={'​1','​3','​6','​6'​}; ​ //codul de acces este stocat într-o matrice, îl putem face mai lung sau mai scurt 
 +                                   
 + 
 +const byte numRows= 4;            //​Rândurile și coloanele tastaturii 
 +const byte numCols= 4; 
 +  
 +char keymap[numRows][numCols]= ​   //Harta tastaturii 
 +          { 
 +          {'​1',​ '​2',​ '​3',​ '​A'​},​  
 +          {'​4',​ '​5',​ '​6',​ '​B'​},​  
 +          {'​7',​ '​8',​ '​9',​ '​C'​},​ 
 +          {'*', '​0',​ '#',​ '​D'​} 
 +          }; 
 + 
 +byte rowPins[numRows] = {11,​10,​9,​8};​ //Keypad 8 pins 
 +byte colPins[numCols]= {7,6,5,4};  
 + 
 +Keypad myKeypad= Keypad(makeKeymap(keymap),​ rowPins, colPins, numRows, numCols); 
 + 
 +void setup() { 
 +   
 +  pinMode(Laser,​ OUTPUT); 
 +  digitalWrite(Laser,​ HIGH); 
 +  delay(2000);​ 
 +
 + 
 +void loop() { 
 + 
 + short Detect = analogRead(Rec); ​                //​Citirea constantă a valorii senzorului, pentru a detecta dacă cineva trece 
 + 
 + 
 +    if(Detect < 500) 
 +        detection = true; 
 + 
 +    if(detection==true)  
 +        {                                       //​Secvența de alarmă șașteptare constantă ca „*” să fie apăsat 
 +         tone(13,1000); 
 +         ​delay(50);​ 
 +         ​tone(13,​200);​ 
 +         ​delay(50);​ 
 +         char keypressed = myKeypad.getKey(); 
 +         if (keypressed == '*'​) ​                  //dacă este apăsat „*” acceseaza funcția Getpass 
 +         ​Getpass();​ 
 +          } 
 +     
 +     ​if(a==4){ ​                                  //​dacă a==4 înseamnă că codul este corect, alarma este oprită 
 +         ​noTone(13);​ 
 +         ​a=0; ​                                  //​setam a la 0, altfel alarma se va opri automat 
 +         ​detection=false;​ 
 +         } 
 +  
 +  ​ 
 +
 + 
 +void Getpass(){               //​Obținerea ​funcției de parolă 
 +  tone(13,​2000); ​             //Sunet cu frecvență constantă în timp ce introducem codul 
 +  for(short i=0 ; i<4 ; i++) 
 +            { 
 +               
 +           char keypressed = myKeypad.waitForKey();​ 
 +              if (keypressed==code[i]) ​  //​Dacă secvența este corectă, a crește (4) înseamnă că toate valorile sunt corecte 
 +              a++; 
 +            } 
 +
 + 
 +</code>
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 53: Line 159:
  
 ===== Concluzii ===== ===== Concluzii =====
 +Având un start mai lent decât ceilalți colegi (au întârziat destul de mult anumite piese), acest proiect s-a dovedit a fi o provocare unde 
 +am învățat cum sa lucrez util într-un timp scurt. Acest dispozitiv este folosit pentru securizarea anumitor obiecte, alertând proprietarul cu ajutorul unui buzzer. Proiectul funcționează corespunzător dorințelor mele fiind util pentru oricine si in orice mediu.
  
 +Sursa inspirației mele fiind filmul Oceans Twelve ​  
 + 
 ===== Download ===== ===== Download =====
 +*{{:​pm:​prj2022:​robert:​laser_tripwire_alarm_keypad.7z|Source Code}}
  
-<note warning>​ +*{{:pm:prj2022:robert:wiring.png?linkonly|Electric diagram}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +
- +
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * Săptămâna 1: Am început să fac cercetări pentru tema proiectului ​și să aleg pe cea care m-a atras cel mai mult  
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul ​proiectului+  * Săptămâna 2: Am plasat comanda pentru piesele necesare  
-</​note>​ +  * Săptămâna 3: Începutul ​proiectului ​propriu-zis (Completare pagina wiki || +inca asteptam senzorul de lumina) 
 +  * Săptămâna 4: Terminarea proiectului si prezentarea proiectului la laborator
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
- +[[https://​ardushop.ro/​ro/​home/​89-modul-buzzer.html?​gclid=CjwKCAjw7cGUBhA9EiwArBAvooFcSrWbhKVi24jDsyeEdWovjSsRJ1dfju0rWZYueQ2UHNw3YCHWNBoCtTUQAvD_BwE]] 
-<​note>​ +https://​www.sigmanortec.ro/​Modul-dioda-laser-KY-008-p126265142?​gclid=CjwKCAjw7cGUBhA9EiwArBAvosYIsk3VPmFXy06tMPde5yQvnzRVQsOup2G6UDXkm6JZ9l3N184ogRoCCwEQAvD_BwE 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+[[https://​www.seeedstudio.com/​Grove-Light-Sensor-p-746.html]]
-</note>+
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/robert/laser-tripwire-alarm.1653588834.txt.gz · Last modified: 2022/05/26 21:13 by mario_gabriel.mosor
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