This shows you the differences between two versions of the page.
pm:prj2023:alexau:seiffe [2023/05/03 21:17] andrei.ciobanu2508 [Jurnal] Add content |
pm:prj2023:alexau:seiffe [2023/05/28 12:58] (current) andrei.ciobanu2508 [Bibliografie/Resurse] Add content |
||
---|---|---|---|
Line 11: | Line 11: | ||
Seiffe este un produs absolut revoluționar: un seif pentru economiile tale de-o viață! | Seiffe este un produs absolut revoluționar: un seif pentru economiile tale de-o viață! | ||
- | Acesta se deblochează prin intermediul unui card contactless RFID. Odată ce ai închis ușa seifului, aceasta se va bloca automat. Nu trebuie să îți faci griji privind uitarea seifului cu ușa deschisă, întrucât acesta te va alerta, atât printr-un semnal sonor, cât și vizual, prin intermediul display-ului LCD integrat. | + | Acesta se deblochează prin intermediul unui card contactless RFID. Odată ce ai închis ușa seifului, aceasta se va bloca automat. Nu trebuie să îți faci griji privind uitarea seifului cu ușa deschisă, întrucât acesta te va alerta, atât printr-un semnal sonor, cât și vizual, prin intermediul display-ului LCD integrat. Mai mult decât atât: semnalul sonor poate fi oprit oricând, printr-o simplă apăsare de buton, pentru un plus de silențiozitate - și ca să ai pe ce să dai vina că ai uitat seiful deschis. |
Cu Seiffe, bunurile tale sunt în siguranță! | Cu Seiffe, bunurile tale sunt în siguranță! | ||
Line 30: | Line 30: | ||
- Acesta observă pe LCD mesajul „Blocat”. | - Acesta observă pe LCD mesajul „Blocat”. | ||
- Individul apropie cardul RFID de cititor. | - Individul apropie cardul RFID de cititor. | ||
- | - Pe ecranul LCD se afișează mesajul „Deblocat”, iar buzzer-ul produce un sunet pentru a-l informa pe proprietar că ușa este deblocată. | + | - Pe ecranul LCD se afișează mesajul „Deblocat”, iar buzzer-ul produce un sunet pentru a-l informa pe proprietar că ușa este deblocată. Semnalul sonor poate fi oprit prin apăsarea butonului roșu. |
- Utilizatorul deschide ușa seifului, introduce/extrage obiecte în seif și o închide la loc. | - Utilizatorul deschide ușa seifului, introduce/extrage obiecte în seif și o închide la loc. | ||
- Odată ce ușa este închisă, aceasta se blochează la loc, pe LCD se afișează din nou mesajul „Blocat”, iar alarma este întreruptă. | - Odată ce ușa este închisă, aceasta se blochează la loc, pe LCD se afișează din nou mesajul „Blocat”, iar alarma este întreruptă. | ||
Line 41: | Line 41: | ||
* **Buzzer:** alarmă ușă deblocată | * **Buzzer:** alarmă ușă deblocată | ||
* **LCD**: afișare status seif | * **LCD**: afișare status seif | ||
+ | * **Buton**: oprire alarmă ușă deblocată | ||
</note> | </note> | ||
Line 48: | Line 49: | ||
* Micro Servomotor SG90 90° | * Micro Servomotor SG90 90° | ||
* Buzzer pasiv | * Buzzer pasiv | ||
+ | * Buton | ||
* LCD 1602 cu Interfață I2C și Backlight Albastru | * LCD 1602 cu Interfață I2C și Backlight Albastru | ||
* Senzor ultrasonic HC-SR04 | * Senzor ultrasonic HC-SR04 | ||
* Modul RFID RC522 (similar cu MFRC522) + RFID card & tag | * Modul RFID RC522 (similar cu MFRC522) + RFID card & tag | ||
- | * Breadboard 830 puncte MB102 (pentru testare) | + | * Breadboard 830 puncte MB102 |
* Fire tata-tata pentru Arduino | * Fire tata-tata pentru Arduino | ||
* Fire mama-mama pentru Arduino | * Fire mama-mama pentru Arduino | ||
Line 62: | Line 64: | ||
==== Diagramă Electrică ==== | ==== Diagramă Electrică ==== | ||
{{:pm:prj2023:alexau:seiffe_diagrama_electrica.png?800|}} | {{:pm:prj2023:alexau:seiffe_diagrama_electrica.png?800|}} | ||
+ | |||
+ | |||
+ | ==== Hardware Preview ==== | ||
+ | {{:pm:prj2023:alexau:seiffe-hardware-preview.jpg?780|}} | ||
+ | |||
+ | |||
===== 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 ===== | ||
* 27 aprilie: confirmare finală temă proiect | * 27 aprilie: confirmare finală temă proiect | ||
* 3 mai: publicare documentație proiect | * 3 mai: publicare documentație proiect | ||
+ | * 19 mai: adăugare hardware preview | ||
+ | * 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> | ||