This is an old revision of the document!
De asemenea, pentru mine reprezintă un proiect cu utilitate în viața de zi cu zi și poate fi implementat cu puține costuri ceea ce este un avantaj în creșterea securității.
Acesta se bazează pe un emițător LASER, care trimite în mod constant fascicule către senzorul de lumină, iar când cineva/ceva trece, senzorul nu va primi fasciculele, iar alarma este declanșată și nu se va opri până când nu o restabiliți (butonul/parola).
Name | Quantity |
---|---|
Pulsivo Arduino Uno | 1 |
Light sensor GROVE v1.2 | 1 |
ky 008 Laser emitter | 1 |
Buzzer module | 1 |
4×4 keypad matrix | 1 |
10 Pc. Jumper Wire Kit, 10 cm Long | 10 |
Am lucrat in IDE oferit de Arduino.
Biblioteci folosite: keypad.h (https://github.com/Chris--A/Keypad)
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.
short code[4]={'1','3','6','6'};
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.
void Getpass(){ tone(13,2000); for(short i=0 ; i<4 ; i++) { char keypressed = myKeypad.waitForKey(); if (keypressed==code[i]) a++; } }
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.
if(a==4){ noTone(13); a=0; detection=false; }
#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ă și 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++; } }
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.
*https://ardushop.ro/ro/home/89-modul-buzzer.html?gclid=CjwKCAjw7cGUBhA9EiwArBAvooFcSrWbhKVi24jDsyeEdWovjSsRJ1dfju0rWZYueQ2UHNw3YCHWNBoCtTUQAvD_BwE *https://www.sigmanortec.ro/Modul-dioda-laser-KY-008-p126265142?gclid=CjwKCAjw7cGUBhA9EiwArBAvosYIsk3VPmFXy06tMPde5yQvnzRVQsOup2G6UDXkm6JZ9l3N184ogRoCCwEQAvD_BwE *https://www.seeedstudio.com/Grove-Light-Sensor-p-746.html