Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:bianca.popa1106:matei.hutu [2026/05/01 14:13]
matei.hutu
pm:prj2026:bianca.popa1106:matei.hutu [2026/05/02 22:49] (current)
matei.hutu
Line 1: Line 1:
-====== Smart helmet lock ======+====== Smart Helmet Lock ====== 
 +  * Autor: **Huțu Matei-Alexandru** 
 +  * Grupa: 331CA 
 +  * GitHub: [[https://​github.com/​Matei2807/​Proiect-PM|Matei2807/​Proiect-PM]] 
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +**Smart Helmet Lock** este un sistem de securitate bazat pe microcontroler-ul ATmega328P, conceput pentru ​bloca fizic și a securiza breteaua (D ring) a unei căști moto într-o cutie sau pe sașiul motocicletei. ​ 
-Prezentarea ​pe scurt proiectului vostru: + 
-  * ce face +**Scopul proiectului** este de a oferi o soluție smart și rapidă motocicliștilor ​care doresc să își lase casca în siguranță lângă motocicletă,​ fără ​fi nevoițsă o transporte manual în magazine, la facultate sau la locul de muncă. 
-  care este scopul lui + 
-  ​care a fost ideea de la care aţpornit +**Ideea ​de pornire** a venit din inconvenientul real al echipamentului de protecție voluminos. Căștile moto sunt scumpe șincomode de transportat ca bagaj de mână. Majoritatea soluțiilor de pe piață implică lacăte mecanice cu chei sau cifruri care sunt greu de operat cu mănuși si de calitate proastă. 
-  * de ce credeţcă este util pentru ​alţii şpentru voi + 
-</​note>​+**De ce este util?**  
 +Sistemul rezolvă această problemă folosind autentificare **RFID** (prin apropierea unui breloc/​card) ​pentru ​descuierea unui mecanism acționat de un servomotor. Sistemul este dotat cu feedback vizual (semafor LED), feedback acustic (buzzer) și, cel mai important, un sistem de alarmă activat de un senzor de vibrații în cazul tentativelor de furt. 
 + 
 +**Ipoteză:​** 
 +Consider că utilizarea unei astfel de încuietori va îmbunătățsemnificativ siguranța, deoarece previne furtul prin emiterea unei alarme sonore, descurajând acțiunile de efracție. Mai mult folosirea modulului RFID îl va face mult mai ușor de folosit cu mănuși (sau fără) fața de încuietoarele de pe piață. 
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +Arhitectura ​proiectului ​se face în jurul microcontrolerului **ATmega328P** (pe placa Xplained Mini). Sistemul este gândit sub forma unui automat de stări (Unlocked, Locked, Tamper Warning, Alarm)
-O schemă bloc cu toate modulele ​proiectului ​vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului ​în care interacţionează.+
  
-Exemplu ​de schemă blochttp://www.robs-projects.com/mp3proj/newplayer.html +**Interacțiunea modulelor:​** 
-</note>+  * **Modulul RFID (RC522)** comunică cu microcontrolerul prin protocolul **SPI**. Este folosit pentru citirea UID-ului ​de pe card. Dacă UID-ul corespunde cu master key-ul salvat în memorie, controller-ul schimbă starea sistemului. Deoarece modulul funcționează la 3.3V, liniile de date dinspre microcontroller (5V) trec printr-un divizor de tensiune pentru a proteja modulul. 
 +  * **Senzorul de Vibrații (SW-420)** este conectat la un pin setat să genereze o **întrerupere externă**. La detecția unei mișcări, codul iese instant din rutina curentă și semnalează efracția. 
 +  * **Servomotorul (SG90)** reprezintă actuatorul mecanic. Primește un semnal **PWM de 50Hz** generat hardware de **Timer 1** (16-bit), modificând ciclul de lucru pentru a roti tija la 0° (Încuiat) sau 90° (Descuiat). 
 +  * **Buzzerul Pasiv** este modulat cu un semnal dreptunghiular de 1-2kHz prin **Timer 2** (Fast PWM) pentru emiterea tonurilor de confirmare sau a sirenei de alarmă. 
 +  * **Semaforul LED** folosește pini GPIO pentru a oferi utilizatorului feedback vizual imediat (Verde = Deschis, Roșu = Încuiat, Galben = Avertisment). 
 + 
 +**Schema Bloc:** 
 + 
 +{{https://ocw.cs.pub.ro/courses/_media/​pm/​prj2026/​bianca.popa1106/schema_bloc_proiect_pm-hutumatei.png|Schema Bloc Sistem}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +Proiectul cuprinde componente care operează atât la 5V, cât șla 3.3V, împărțind GND-ul. 
-Aici puneţtot ce ţine de hardware design+ 
-  listă de piese +**Listă ​de componente:** 
-  scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.ghttp://www.captain.at/electronic-atmega16-mmc-schematic.png+ 
-  diagrame ​de semnal ​ +^ Nume componenta ^ Model ^ Protocol ^ 
-  * rezultatele simulării +| Microcontroller | ATmega328P Xplained Mini | USB, UART | 
-</note>+| Modul RFID | RC522 | SPI | 
 +| Servomotor | SG90 | PWM | 
 +| Senzor Vibrații | SW-420 | Digital Input (INT0) | 
 +| Buzzer pasiv | - | Fast PWM | 
 +| LED-uri | 3 x 5mm (roșu, galben, verde) | GPIO | 
 +| Alte elemente | Rezistențe (330Ω, 1kΩ, 2kΩ) | - | 
 + 
 + 
 +**Descriere detaliată a componentelor hardware:​** 
 + 
 +**Modul RFID RC522:** 
 + 
 +Modulul este folosit pentru citirea cardurilor șfuncționează la 3.3V. Comunică cu ATmega328P prin interfața SPI. Deoarece pinii microcontrolerului trimit semnale logice ​de 5V, pe liniile MOSISCK și SDA am implementat un divizor de tensiune (cu rezistențde 1kΩ și 2kΩ) pentru a proteja modulul. 
 + 
 +Conectarea pinilor: 
 +^ Pin RC522 ^ Pin ATmega328P ^ 
 +| VCC | 3.3V | 
 +| GND | GND | 
 +| RST | 3.3V | 
 +| MISO | PB4 | 
 +| MOSI | PB3 (prin divizor de tensiune) | 
 +| SCK | PB5 (prin divizor de tensiune) | 
 +| SS | PB2 (prin divizor de tensiune) | 
 + 
 +**Servomotor SG90:** 
 + 
 +Acționează mecanismul fizic (zăvorul) pentru a bloca inelele căștiiEste controlat printr-un semnal PWM de 50Hz, generat hardware de Timerul 1 pe 16-biți. 
 + 
 +Conectarea pinilor: 
 +^ Pin SG90 ^ Pin ATmega328P ^ 
 +| VCC (Fir Roșu) | 5V | 
 +| GND (Fir Maro) | GND | 
 +| Semnal (Fir Portocaliu) | PB1 - OC1A | 
 + 
 +**Senzor de Vibrații SW420:** 
 + 
 +Folosit ca declanșator pentru alarma. Este conectat la un pin configurat să genereze o întrerupere hardware la orice tranziție a semnalului declanșat de o vibrație. 
 + 
 +Conectarea pinilor: 
 +^ Pin SW-420 ^ Pin ATmega328P ^ 
 +| VCC | 5V | 
 +| GND | GND | 
 +| DO (Digital Out) | PD2 INT0 | 
 + 
 +**Buzzer Pasiv:** 
 + 
 +Furnizează feedback acustic (beep-uri scurte la scanarea cardului și sirena de alarmă la tampering)Semnalul este o undă generată prin Fast PWM (~1-3kHzfolosind Timerul 2. 
 + 
 +Conectarea pinilor: 
 +^ Pin Buzzer ^ Pin ATmega328P ^ 
 +| I/O | PD3 - OC2B | 
 +| VCC | 5V | 
 +| GND | GND | 
 + 
 +**LED-uri Stare (Semafor):​** 
 + 
 +Sistemul folosește 3 LED-uri indicatoare. Pentru a proteja LED-urile împotriva arderii, fiecare are în serie câte o rezistență ​de limitare a curentului de 330Ω între anod și microcontroller. 
 + 
 +Conectarea pinilor: 
 +^ Componentă ^ Pin ATmega328P ^ 
 +| Anod LED Roșu (+) | PD5 | 
 +| Anod LED Galben (+) | PD6 | 
 +| Anod LED Verde (+) | PD7 | 
 +| Catozi LED-uri (-) | GND | 
 + 
 +**Schema Electrica:​** 
 + 
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​bianca.popa1106/​schema_electrica_proiect_pm-hutumatei.png?​730|Schema Electrica}} 
 + 
 +**TODO rezultatele asamblare hardware**
  
 ===== Software Design ===== ===== Software Design =====
  
 +**1. Mediul de dezvoltare și librării**
  
-<note tip> +Proiectul a fost dezvoltat în **C**, folosind **PlatformIO**. O caracteristică importantă a implementării este lipsa bibliotecilor ArduinoTot codul este scris încât să interacționăm direct cu regiștriiAcest lucru asigură o folosire mică de memorie șun control strict al temporizărilor (timere, întreruperi).
-Descrierea codului aplicaţiei (firmware):​ +
-  ​mediu de dezvoltare (if any) (e.g. AVR StudioCodeVisionAVR) +
-  ​librării şi surse 3rd-party (e.gProcyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţsă le implementaţi +
-  * (etapa 3surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+**2. Algoritmul principal: Automatul de Stări**
  
-<note tip> +Logica centrală a sistemului este implementată ​în fișierul ''​main.c''​ printr-un automat de stări (FSM)Funcționarea decurge în următorii pași:
-Care au fost rezultatele obţinute ​în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+  - **Inițializarea** - Se configurează pinii GPIO, interfața UART, protocolul SPI, și se pornesc timerele și intreruperile (''​sei()''​). Sistemul pornește implicit în starea ''​STATE_UNLOCKED''​. 
 +  - **Așteptare (Unlocked)** - LED-ul verde este aprins. Senzorul de vibrații este ignorat intenționat. Sistemul așteaptă scanarea prin SPI a cardului RFID cu UID-ul master. 
 +  - **Securizarea (Locked)** - La validarea cardului, se emite un beep, servo-ul coboară tija (0°), LED-ul roșu se aprinde, iar flag-ul de întreruperi pentru tamper este activat. 
 +  - **Avertisment (Tamper Warning)** - Dacă o vibrație declanșează întreruperea ''​INT0'',​ se trece într-o stare de avertisment (LED Galben) de 1 secundă. Aceasta permite deblocarea sistemului dacă mișcarea a fost făcută chiar de proprietar înainte de a pune cardul. 
 +  - **Alarma (Alarm)** - Dacă avertismentul expiră fără prezentarea cardului Master, începe bucla de alarmă vizuală și sonoră de 5 secunde. 
 +  - **Ieșirea non-blocantă** - În timpul alarmei sau avertismentului,​ se folosește o funcție ''​wait_and_check_master_card()''​. Aceasta sparge funcțiile de ''​delay''​ în pași de 50ms, verificând constant antena RFID, permițând oprirea instantanee a alarmei.
  
-===== Download =====+**3. Implementarea modulelor**
  
-<note warning>​ +Pentru a asigura modularitatea codului, funcționalitățile sunt împărțite ​în fișiere specificeasemănător cu laboratoarele:​
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute ​în urma realizării proiectului:​ surse, scheme, etc. Un fişier READMEun ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-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 Alin331CC -**:pm:​prj2009:​cc:​dumitru_alin**. +**1timer.c (Generare semnale PWM Lab 3)** 
-</​note>​+  ​* **Timer 1 (16-bit):** Setează pinul PB1 (OC1A) în modul Fast PWM. Registrul ''​ICR1'' ​este folosit ca TOP pentru a seta o frecvență fixă de 50Hz (perioadă de 20ms). Modificarea registrului ''​OCR1A''​ controlează ciclul de lucru (1000 tick-uri pentru 0°4800 tick-uri pentru 180°), mișcând brațul servomotorului. 
 +  ​* **Timer 2 (8-bit):** Setează pinul PD3 (OC2B) în Fast PWM. Este pornit și oprit cu un prescaler de 64 pentru a modula un semnal de ~3kHz, acționând buzzerul pentru beep-uri.
  
-===== Jurnal =====+**2. tamper.c (Întreruperi externe - Lab 2)** 
 +  * Configurează pinul PD2 să declanșeze întreruperea ''​INT0''​. Registrul ''​EICRA''​ pentru a declanșa întreruperea la orice modificare logică a pinului (mișcare a senzorului). Rutina (ISR) modifică o variabilă globală ''​volatile uint8_t vibration_detected''​.
  
 +**3. spi.c și rfid.c (Comunicație SPI - Lab 5)**
 +  * Microcontrolerul este configurat ca master. ​
 +  * Codul de comunicare cu modulul RC522 folosește funcții low-level manipulând pinul SS și trimițând date de control pentru a porni antena și a prelua răspunsul de 4 octeți (UID-ul cardului).
 +
 +**4. uart.c (Comunicație Serială - Lab 1)**
 +  * Inițializează regiștrii ''​UBRR0H''​ și ''​UBRR0L''​ pentru a seta rata de transfer la 9600 baud. Este folosit pentru afișarea stării curente a sistemului pe laptop prin funcția ''​UART_print()''​.
 +
 +===== Rezultate Obţinute =====
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal ​în care să poată urmări asistentul de proiect progresul ​proiectului.+Care au fost rezultatele obţinute ​în urma realizării proiectului ​vostru.
 </​note>​ </​note>​
  
-===== Bibliografie/​Resurse ​=====+===== Concluzii ​=====
  
-<​note>​ +===== Jurnal ===== 
-Listă cu documente, datasheet-uriresurse Internet folositeeventual grupate pe **Resurse Software** şi **Resurse ​Hardware**. +  * **10.04.2026 ​01.05.2026:​** Stabilirea temeiachiziționarea componentelortestarea individuală a modulelor. Realizarea milestone 1 (Introducere,​ Arhitectură Bloc, Lista de componente). 
-</​note>​+  ​* **02.05.2026:** Realizare schema electrică a proiectului în Cirkit Designer, adăugare tabele la Hardware ​Design și completarea Softawre Design.
  
-<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</a></html>+===== Bibliografie/​Resurse ===== 
 +**Resurse Hardware:​** 
 +  * [[https://​ww1.microchip.com/​downloads/​aemDocuments/​documents/​MCU08/​ProductDocuments/​DataSheets/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet Microcontroler ATmega328P]] 
 +  * [[https://​ww1.microchip.com/​downloads/​aemDocuments/​documents/​MCU08/​ProductDocuments/​UserGuides/​ATmega328P-Xplained-Mini-UG-DS50002659B.pdf|User Guide Xplained Mini ATmega328P]] 
 +  * [[https://​www.handsontec.com/​dataspecs/​RC522.pdf|Datasheet RC522 (Modul RFID)]] 
 +  * [[https://​www.friendlywire.com/​projects/ne555-servo-safe/SG90-datasheet.pdf|Datasheet SG90 Micro Servo]]
  
 +**Resurse Software și Tool-uri:**
 +  * Google Drawings (Pentru realizarea schemei bloc)
 +  * Cirkit Designer (Pentru realizarea schemei electrice)
 +  * GitHub (Pentru versionarea codului sursă)
pm/prj2026/bianca.popa1106/matei.hutu.1777634011.txt.gz · Last modified: 2026/05/01 14:13 by matei.hutu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0