This shows you the differences between two versions of the page.
pm:prj2023:alexau:seiffe [2023/05/23 17:04] andrei.ciobanu2508 Add silencing feature |
pm:prj2023:alexau:seiffe [2023/05/28 12:58] (current) andrei.ciobanu2508 [Bibliografie/Resurse] Add content |
||
---|---|---|---|
Line 71: | Line 71: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | ==== Biblioteci utilizate ==== | ||
+ | * [[https://reference.arduino.cc/reference/en/libraries/liquidcrystal-i2c/|LiquidCrystal I2C]] | ||
+ | * [[https://reference.arduino.cc/reference/en/libraries/mfrc522/|MFRC522]] | ||
+ | * [[https://www.arduino.cc/reference/en/language/functions/communication/spi/|SPI]] | ||
+ | * [[https://www.arduino.cc/reference/en/libraries/servo/|Servo]] | ||
+ | ==== Detalii implementare ==== | ||
- | <note tip> | + | === Setup === |
- | Descrierea codului aplicaţiei (firmware): | + | * Se configurează și activează timerul pentru alarmă (Timer1 - COMPB) //[configureAlarmTimer() + enableAlarmTimer()]// |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Se configurează întreruperea externă INT0 pentru funcția de oprire a alarmei la apăsarea de buton //[configureSilencer()]// |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Se configurează LCD-ul |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Se configurează pinii prin setarea de registre de I/O |
- | * (etapa 3) surse şi funcţii implementate | + | * Se inițializează biblioteca SPI, respectiv cea pentru MFRC522 |
- | </note> | + | * Se configurează servomotorul |
+ | * Se afișează mesajul pentru starea __blocat__ a seifului | ||
+ | |||
+ | === Loop === | ||
+ | * Pentru fiecare iterație, se calculează distanța prin intermediul datelor măsurate de senzorul ultrasonic de distanță. | ||
+ | * Dacă seiful se află în starea __blocat__, iar distanța calculată este mai mică decât un threshold //[LOCK_DISTANCE]//, atunci se încearcă citirea de card de acces. Dacă se citește un card, iar acesta nu face parte din lista de carduri autorizate, atunci pe LCD se va afișa un mesaj de refuz //[printDeniedMessage()]// timp de trei secunde. Altfel, dacă respectivul card face parte din lista de carduri autorizate, seiful va trece în starea __deblocat__ //[unlockSeiffe()]// (și se afișează mesajul corespunzător pe LCD //[printUnlockedMessage()]//). | ||
+ | * Dacă seiful se află în starea __deblocat__, se așteaptă ca ușa să ajungă să fie deschisă îndeajuns //[OPEN_DISTANCE]//, inainte de a trece în starea de pregătire a încuierii //[canLock == true]//. Odată ce ușa este închisă, aceasta trebuie să rămână închisă pentru un număr de iterații de procesare a distanței //[LOCK_THRESHOLD]// pentru a putea fi într-adevăr considerată închisă - moment în care seiful trece înapoi în starea __blocat__. | ||
+ | |||
+ | === Informații adiționale === | ||
+ | * Sunetul produs de buzzer își schimbă frecvența în funcție de configurația Timer1 - în întreruperea asociată COMPB. | ||
+ | * Tratarea întreruperii INT0 constă în dezactivarea alarmei //[isAlarmActive <- false]//. | ||
+ | * Calculul distanței cu ajutorul HC-SR04 este realizat pe baza unei durate medii - pentru un număr de citiri determinat empiric //[NUM_OF_DISTANCE_READS]//. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | ==== Video ==== |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | [[https://www.youtube.com/watch?v=sLkMaJZUBaM|Video rezultat final]] |
- | </note> | + | |
- | ===== Concluzii ===== | + | ==== Photo shoot ==== |
+ | {{:pm:prj2023:alexau:1685263805489.jpg?800|}} | ||
+ | {{:pm:prj2023:alexau:1685263805487.jpg?800|}} | ||
+ | {{:pm:prj2023:alexau:1685263805484.jpg?800|}} | ||
+ | {{:pm:prj2023:alexau:1685263805481.jpg?800|}} | ||
+ | {{:pm:prj2023:alexau:1685263805479.jpg?800|}} | ||
+ | {{:pm:prj2023:alexau:1685263805476.jpg?800|}} | ||
+ | {{:pm:prj2023:alexau:1685263805472.jpg?800|}} | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | ==== Cod sursă ==== |
- | 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ă ;-). | + | Codul sursă se află în [[https://github.com/cioabnu/seiffe|acest GitHub repository]]. Pentru testarea acestuia, este necesară instalarea bibliotecilor [[https://reference.arduino.cc/reference/en/libraries/liquidcrystal-i2c/|LiquidCrystal I2C]] și [[https://reference.arduino.cc/reference/en/libraries/mfrc522/|MFRC522]] - [[https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries|Installing Libraries]]. |
- | 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**. | + | === Arhivă - cod sursă + biblioteci incluse === |
- | </note> | + | Alternativ, se poate descărca [[https://ocw.cs.pub.ro/courses/_media/pm/prj2023/alexau/seiffe-v1.zip|de aici]] arhiva ce conține atât implementarea Seiffe, cât și bibliotecile third-party utilizate. |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 102: | Line 125: | ||
* 19 mai: adăugare hardware preview | * 19 mai: adăugare hardware preview | ||
* 23 mai: introducere feature: buton pentru oprirea alarmei | * 23 mai: introducere feature: buton pentru oprirea alarmei | ||
+ | * 28 mai: finalizare documentație | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | + | * [[https://ocw.cs.pub.ro/courses/pm|Laboratoare PM]] | |
- | <note> | + | * [[https://circuitdigest.com/microcontroller-projects/interfacing-rfid-reader-module-with-arduino|Interfacing RFID Reader With Arduino]] |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * [[https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/|Ultrasonic Sensor HC-SR04 and Arduino]] |
- | </note> | + | * [[https://stackoverflow.com/|Stack Overflow]] |
<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> | ||