This shows you the differences between two versions of the page.
pm:prj2023:avaduva:shoppingsafebox [2023/05/21 19:38] anicolae2406 [Introducere] |
pm:prj2023:avaduva:shoppingsafebox [2023/05/29 01:20] (current) anicolae2406 [Software Design] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Shopping Safe Box ====== | ====== Shopping Safe Box ====== | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul consta in implementarea unui mecanism de seif/dulap, precum cele care se gasesc la intrarea in supermarket-uri.Se introduce un cod format din 4 cifre pentru a bloca dulapul,iar apoi se poate debloca folosind codul setat precedent.In cazul in care codul este gresit de 3 ori,va porni o alarma, iar sistemul va fi blocat pana cand paznicul supermarketului sau un angajat il va debloca folosind un card sau breloc de acces.Scopul acestui proiect este unul generic, si anume acela de a depozita diverse obiecte pentru a nu mai intra cu ele in magazin. | + | Proiectul consta in implementarea unui mecanism de seif/dulap, precum cele care se gasesc la intrarea in supermarket-uri.Se introduce un cod format din 4 cifre pentru a bloca dulapul,iar apoi se poate debloca folosind codul setat precedent.In cazul in care codul este gresit de 3 ori,va porni o alarma, iar sistemul va fi blocat pana cand paznicul supermarketului sau un angajat il va debloca folosind un card sau breloc de acces.Scopul acestui proiect este unul generic, si anume acela de a depozita si a pastra in siguranta diverse obiecte pentru a nu mai intra cu ele in magazin. |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Line 27: | Line 27: | ||
{{:pm:prj2023:avaduva:i01_finalpmhrdw.jpeg|}} | {{:pm:prj2023:avaduva:i01_finalpmhrdw.jpeg|}} | ||
- | ===== Software Design ===== | ||
- | |||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Conexiune piese cu Arduino: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Keypad 4x4: |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Row 1 -> D8 |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Row 2 -> D7 |
- | * (etapa 3) surse şi funcţii implementate | + | * Row 3 -> D6 |
- | </note> | + | * Row 4 -> D5 |
+ | * Column 1 -> D4 | ||
+ | * Column 2 -> D3 | ||
+ | * Column 1 -> D2 | ||
- | ===== Rezultate Obţinute ===== | + | RFID RC522: |
+ | * 3.3V -> 3.3V | ||
+ | * GND -> GND | ||
+ | * RST -> D9 | ||
+ | * SDA -> D10 | ||
+ | * MOSI -> D11 | ||
+ | * MISO -> D12 | ||
+ | * SCK -> D13 | ||
+ | |||
+ | Buzzer: | ||
+ | * - -> LED(+) | ||
+ | * + -> A1 | ||
+ | |||
+ | LED: | ||
+ | * + -> Buzzer(-) | ||
+ | * - -> GND | ||
- | <note tip> | + | Servo motor SG90: |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | * Signal -> A0 |
+ | * Power -> 5V | ||
+ | * GND -> GND | ||
+ | |||
+ | LCD 16x2 I2C: | ||
+ | * SCL -> A5 | ||
+ | * SDA -> A4 | ||
+ | * Vcc -> 5V | ||
+ | * GND -> GND | ||
</note> | </note> | ||
+ | ===== Software Design ===== | ||
- | ===== Concluzii ===== | + | == Biblioteci folosite: == |
+ | * Servo.h | ||
+ | * LiquidCrystal_I2C.h | ||
+ | * Keypad.h | ||
+ | * SPI.h | ||
+ | * MFRC522.h | ||
+ | * Wire.h | ||
- | ===== Download ===== | + | == Funcții implementate: == |
+ | * **void setup()**: | ||
+ | * Setez pinul pentru buzzer si il pornesc; | ||
+ | * Setez pinul pentru servomotor si il fixez la o pozitie initiala; | ||
+ | * Initializez LCD si lumina lui; | ||
+ | * Pornesc protocolul SPI si initializez modulul RFID RC522. | ||
+ | |||
+ | * **void loop()**: | ||
+ | * Verific cu variabila isPasswordSet daca parola a fost setata: | ||
+ | -cat timp parola nu este setata, o setez folosind functia set password, verificand si daca are exact 4 caractere,in plus afisez pe lcd mesaje corespunzatoare; | ||
+ | -daca parola are formatul bun, se blocheaza servomotorul. | ||
+ | * Apoi dupa ce s-a setat parola, se va incerca deblocarea servomotorului prin introducerea parolei setate; | ||
+ | * Dupa aceea, verific daca codul intrdus este acelasi cu cel setat: | ||
+ | -in caz afirmativ, se deblocheaza servomotorul si se afiseaza pe LCD un mesaj sugestiv; | ||
+ | -in caz negativ, numarul de incercari scade si se reia procesul; | ||
+ | -daca numarul de incercari a ajuns la zero, se va aprinde un led rosu si va suna un buzzer ssfe box-ul blocandu-se si nemaipermitand introducerea unei noi parole; | ||
+ | -safe box-ul va fi blocat pana la validarea unui card la modulul RFID,daca acest modul citeste cardul servomotorul se va debloca, iar apoi se poate seta o parola noua. | ||
+ | |||
+ | * **void buzzerOn()**: | ||
+ | * Buzzer-ul incepe sa sune. | ||
- | <note warning> | + | * **void buzzerOff()**: |
- | 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ă ;-). | + | * Buzzer-ul se opreste din sunat. |
- | 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**. | + | * **void setPassword()**: |
- | </note> | + | * Setez parola,introducand exact 4 caractere in sirul de caractere pentru parola, afisand pe LCD o * atunci cand se primeste un caracter. |
- | ===== Jurnal ===== | + | * **void lockServo()**: |
+ | * Efectuez miscarea progresiva a servomotorului pentru a bloca safe box-ul. | ||
- | <note tip> | + | * **void unlockServo()**: |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * Efectuez miscarea progresiva a servomotorului pentru a debloca safe box-ul. |
- | </note> | + | |
+ | |||
+ | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2023:avaduva:i01_cutie_int.jpeg|}} | ||
+ | {{:pm:prj2023:avaduva:img01_cutie.jpeg|}} | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | In acest proiect, am observat cum se poate programa o placuta Arduino pentru a rezolva probleme din viata cotidiana, precum seiful ce poate fi gasit la intrarea in diverse magazine.In plus, am inteles mai bine cum se foloseste un servomotor,un buzzer si modulul RFID RC522, ce are foarte multe utilizari, de la obisnuitul interfon la cartele de acces. De-a lungul acestui proiect, consider ca am folosit notiuni din laboratorul 1 (UART) pentru | ||
+ | a face debugging pentru setarea parlei si LCD;notiuni din laboratorul 3, parte de PWM, deoarece am folosit servomotorul;notiuni din laboratorul 5 cu SPI, deoarece am folosit modulul RFID RC522 ce se bazeaza pe protocolul SPI si notiuni din laboratorul 6 I2C, deoarece am folosit un LCD cu modul I2C. | ||
+ | |||
+ | Video cu simularea proiectului:[[https://youtu.be/UMDtQTFe7b8]] | ||
+ | ===== Download ===== | ||
+ | In aceasta arhiva este codul Arduino si un video cu functionarea safe box-ului. | ||
+ | {{:pm:prj2023:avaduva:336CA_Nicolae Alexandru-Dimitrie_PMProj.zip|}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * Aplicatia in care s-a realizat schema bloc: [[https://app.diagrams.net/]] |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * Aplicatia in care am simulat proiectul fara modulul RFID RC522: [[https://www.tinkercad.com/]] |
- | </note> | + | * Componente: [[https://emag.ro/]] |
+ | * Folosire modul RFID RC522: [[https://lastminuteengineers.com/how-rfid-works-rc522-arduino-tutorial/]] | ||
+ | * Folosire LCD 16X2 cu modul I2C: [[https://lastminuteengineers.com/i2c-lcd-arduino-tutorial/]] | ||
+ | * Arduino IDE, versiunea 2.1.0: [[https://www.arduino.cc/en/software]] | ||
<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> | ||