This shows you the differences between two versions of the page.
pm:prj2021:apredescu:door_knock_locker [2021/04/29 11:56] cosmin.pascu1902 |
pm:prj2021:apredescu:door_knock_locker [2021/05/28 13:21] (current) cosmin.pascu1902 [Download] |
||
---|---|---|---|
Line 10: | Line 10: | ||
===== Descriere Generala ===== | ===== Descriere Generala ===== | ||
- | {{ :pm:prj2021:apredescu:schema_bloc_door_locker.png |{{:pm:prj2021:apredescu:schema_bloc_door_locker.png|}} | + | {{ :pm:prj2021:apredescu:schema_bloc_door_locker_2.png |}} |
- | * Senzorul Piezo receptioneaza sunetele batailor, transmite datele catre Arduino, acolo se va analiza pattern-ul. In cazul in care pattern-ul este corect, va fi activat servomotorul care va debloca incuietoarea si se va aprinde becul verde. In cazul in care pattern-ul nu este corect si va aprinde doar ledul rosu. | + | * Senzorul Piezo receptioneaza sunetele batailor, transmite datele catre Arduino, acolo se va analiza pattern-ul. In cazul in care pattern-ul este corect, se va deschide incuitoarea electrica si se va aprinde becul verde. In cazul in care pattern-ul nu este corect si va aprinde doar ledul rosu. |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
+ | Schema electrica: | ||
+ | {{ :pm:prj2021:apredescu:pascu_cosmin_331cc_circuit_electric_2.jpg |}} | ||
+ | |||
+ | Lista piese: | ||
- Arduino UNO | - Arduino UNO | ||
- | - Servomotor | + | - Incuietoare electrica |
- Buton | - Buton | ||
- | - Speaker Piezo | + | - Senzor Piezo |
- Leduri RGB | - Leduri RGB | ||
- Tranzistor | - Tranzistor | ||
Line 25: | Line 29: | ||
- Baterie | - Baterie | ||
- Breadboard | - Breadboard | ||
+ | - Releu | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Pentru implementare am folosit pentru input un pin analog(pentru senzorul Piezo), un pin digital pentru butonul de inregistrare si, iar pentru output-uri am folosit 3 pini digitali (1-led Rosu, 1-led Verde, 1-pentru incuietoare). | ||
+ | Ideea principala a implementarii consta in compararea a doi vectori ce contin intervalele de timp intre batai. In functia de //loop()// ascult pentru o bataie (o vibratie care depaseste o sensibilitate selectata) si verific daca este apasat butonul de inregistrare. Daca a fost sesizata o bataie, atunci apelez functia ce inregistreaza bataile //listenToSecretKnock()//. | ||
+ | In functia //listenToSecretKnock()// salvez noile batai si in functie daca este apasat butonul de inregistrare sau nu, fie verific daca bataile respecta pattern-ul de deblocare, fie actualizez noul pattern. Pentru fiecare tip de actiune aprind ledurile intr-un anumit mod pentru a oferi si un feedback vizual. | ||
+ | |||
+ | Pentru partea de comparare intre cei 2 vectori voi face o diferenta in modul intre valori si de fiecare data verific cu o constanta pentru a putea accepta micile diferente si adun aceste dieferente intr-o variabila pentru ca la final suma erorilor sa nu depaseasca o anumita valoare(care este si ea o constanta). Cele 2 constante precizate anterior pot fi modificate in cod ptr a avea o toleranta mai mica sau mai mare la erori. | ||
===== Rezultate Obtinute ===== | ===== Rezultate Obtinute ===== | ||
+ | In final proiectul indeplineste functiile propuse (deblocarea incuietorii la recunoasterea unui pattern si posibilitatea de inregistrare unui nou pattern). | ||
+ | Link catre videoclip: [[https://www.youtube.com/watch?v=EKXjxHanSCI]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2021:apredescu:door_knock_locker_pascu_cosmin_331cc.zip|}} | ||
Line 43: | Line 55: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/door_knock_locker?do=export_pdf | https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/door_knock_locker?do=export_pdf | ||
+ | |||
+ | [[https://www.youtube.com/watch?v=zE5PGeh2K9k]] |