Differences

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

Link to this comparison view

pm:prj2026:mihnea.dinica:ovidiu.calina [2026/05/05 18:19]
ovidiu.calina
pm:prj2026:mihnea.dinica:ovidiu.calina [2026/05/05 18:23] (current)
ovidiu.calina
Line 5: Line 5:
 Proiectul constă într-un seif electronic controlat printr-o tastatură matriceală 4x4, care permite deblocarea unui mecanism de zăvorâre (servomotor SG90) doar la introducerea codului PIN corect. Proiectul constă într-un seif electronic controlat printr-o tastatură matriceală 4x4, care permite deblocarea unui mecanism de zăvorâre (servomotor SG90) doar la introducerea codului PIN corect.
  
-* **Ce face:​** ​Utilizatorul introduce un cod PIN de 4 cifre pe tastatura matriceală. Dacă codul este corect, servomotorul deblochează ușa seifului, LCD-ul afișează "Acces permis"​ și LED-ul RGB devine verde. La cod greșit, buzzer-ul emite un semnal sonor, LCD-ul afișează "Cod incorect"​ și LED-ul devine roșu. După 3 încercări greșite consecutive,​ sistemul intră în blocare temporară de 30 secunde. Un senzor LDR montat în interiorul seifului detectează deschiderea forțată a ușii fără cod și declanșează o alarmă sonoră continuă. +Utilizatorul introduce un cod PIN de 4 cifre pe tastatura matriceală. Dacă codul este corect, servomotorul deblochează ușa seifului, LCD-ul afișează "Acces permis"​ și LED-ul RGB devine verde. La cod greșit, buzzer-ul emite un semnal sonor iar LED-ul devine roșu. După 3 încercări greșite consecutive,​ sistemul intră în blocare temporară de 30 de secunde. Un senzor LDR montat în interiorul seifului detectează deschiderea forțată a ușii și declanșează o alarmă sonoră continuă. 
-* **Scopul:** Realizarea ​unui sistem de securitate simplufuncțional ​și ieftin, ​construit în jurul microcontrolerului ATmega328P Xplained Mini+ 
-* **Ideea de pornire:** Proiectele similare de tip seif existăînsă niciuna nu combina mecanismul de blocare cu un senzor de lumină anti-efracție pe ATmega328P Xplained Mini. Adăugarea LDR-ului oferă un nivel suplimentar de securitate față de proiectele anterioare. +Scopul ​proiectului este realizarea ​unui sistem de securitate simplu ​și funcțional construit în jurul microcontrolerului ATmega328P Xplained Mini, care să demonstreze ​integrarea ​perifericelor ​GPIO, PWM, ADC și I2C într-un sistem embedded real.
-* **Utilitate:​** Proiectul demonstrează integrarea ​mai multor periferice hardware (GPIO, PWM, ADCI2Cîntr-un sistem embedded real, util atât ca proiect educațional cât și ca prototip funcțional.+
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Proiectul ​este structurat în mai multe module hardware ​și software care interacționează prin intermediul microcontrolerului ​ATmega328P Xplained Mini.+Sistemul ​este compus din următoarele ​module hardware, toate coordonate de microcontrolerul ​ATmega328P Xplained Mini:
  
-**Module hardware:**+^ Modul ^ Rol ^ Interfață ^ 
 +| Tastatură 4x4 | Input cod PIN | GPIO | 
 +| LCD 1602 | Afișare mesaje | I2C | 
 +| Servomotor SG90 | Mecanism blocare ușă | PWM | 
 +| Senzor LDR | Detecție efracție | ADC | 
 +| Buzzer pasiv | Feedback audio | PWM | 
 +| LED RGB | Indicator vizual status | GPIO/PWM |
  
-* **Tastatură 4x4** — input utilizator pentru introducerea codului PIN. Conectată pe 8 pini GPIO ai ATmega328P (4 rânduri + 4 coloane), citită prin scanare matriceală. +Fluxul de funcționare ​al sistemului este următorulutilizatorul ​introduce cifre pe tastaturăATmega procesează input-ul prin întrerupericompară codul cu cel stocat în EEPROMcomandă servomotorul prin PWM și afișează rezultatul pe LCD prin I2CLDR-ul monitorizează continuu lumina prin ADC și poate declanșa alarma independent de starea codului.
-* **LCD 1602 + modul I2C** — afișează starea sistemului (introducere cod, acces permis/​refuzat,​ alarmă). Comunicație I2C prin pinii SDA/SCL. +
-* **Servomotor SG90** — controlează mecanismul fizic de blocare ​al ușii seifului. Poziție 0° = blocat, poziție 90° = deblocat. Controlat prin semnal PWM. +
-* **Senzor LDR** — detectează variația de lumină în interiorul seifului în caz de deschidere forțată. Citit prin ADC. +
-* **Buzzer pasiv** — feedback audio: bip scurt la tastă apăsată, bip lung la cod greșit, ton continuu la alarmă. Controlat prin PWM. +
-* **LED RGB** — indicator vizual: verde = deblocat, roșu = cod greșit sau alarmă. Controlat prin GPIO/PWM. +
- +
-**Interacțiunea modulelor:** +
- +
-Utilizatorul ​introduce cifre pe tastatură ​→ ATmega procesează input-ul prin întreruperi ​→ compară codul cu cel stocat în EEPROM ​→ comandă servomotorul prin PWM și afișează rezultatul pe LCD prin I2C → LDR monitorizează continuu lumina prin ADC și poate declanșa alarma independent de starea codului.+
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-**Listă de piese:**+==== Listă de piese ====
  
-ATmega328P Xplained Mini (placă de dezvoltare) +^ Componentă ^ Cantitate ^ 
-Tastatură matriceală 4x4 (membrană) +ATmega328P Xplained Mini | 1 | 
-Display LCD1602 HD44780 +Tastatură matriceală 4x4 (membrană) ​| 1 | 
-Modul interfață I2C/IIC pentru LCD1602 +Display LCD1602 HD44780 ​| 1 | 
-Servomotor SG90 180 grade +Modul interfață I2C pentru LCD1602 ​| 1 | 
-Modul senzor LDR (fotorezistor) +Servomotor SG90 180 grade | 1 | 
-Modul buzzer pasiv KY-006 +Modul senzor LDR (fotorezistor) ​| 1 | 
-Modul LED RGB 3 culori +Modul buzzer pasiv KY-006 ​| 1 | 
-Breadboard 830 puncte MB-102 +Modul LED RGB 3 culori ​| 1 | 
-Set rezistoare 20 valori 400 bucăți +Breadboard 830 puncte MB-102 ​| 1 | 
-Fire Dupont tată-mamă 20cm (x40) +Set rezistoare 20 valori 400 bucăți ​| 1 | 
-Fire Dupont tată-tată 30cm (x40) +Fire Dupont tată-mamă 20cm (x40) | 1 | 
-Cutie lemn (carcasă seif)+Fire Dupont tată-tată 30cm (x40) | 1 | 
 +Cutie lemn (carcasă seif) | 1 |
  
-**Conexiuni principale:**+==== Conexiuni principale ​====
  
-Tastatură 4x4 → PB0-PB3 ​(rânduri), ​PD4-PD7 ​(coloane) +^ Componentă ^ Pini ATmega328P ^ 
-LCD I2C → SDA (PC4), SCL (PC5+Tastatură 4x4 (rânduri) ​| PB0PB1, PB2, PB3 | 
-Servo SG90 → PB1 (OC1A, Timer1 PWM) +| Tastatură 4x4 (coloane) ​| PD4, PD5, PD6, PD7 | 
-LDR → PC0 (ADC0) +LCD I2C (SDA| PC4 | 
-Buzzer ​→ PB2 (OC1B, Timer1 PWM) +| LCD I2C (SCL| PC5 | 
-LED RGB → PD3 (roșu), PD5 (verde), PD6 (albastru) cu rezistenț220Ω în serie+Servo SG90 PB1 (OC1A, Timer1 PWM) | 
 +LDR PC0 (ADC0) ​| 
 +Buzzer ​PB2 (OC1B, Timer1 PWM) | 
 +LED RGB roșu | PD3 + rezistență 220Ω | 
 +| LED RGB verde | PD5 + rezistență 220Ω | 
 +| LED RGB albastru ​| PD6 + rezistență 220Ω |
  
 ===== Software Design ===== ===== Software Design =====
  
-**Mediu de dezvoltare:**+==== Mediu de dezvoltare ​==== 
 + 
 +^ Tool ^ Utilizare ^ 
 +| Microchip Studio | IDE principal | 
 +| AVR-GCC | Compilator C | 
 +| AVRDUDE | Programare prin USB (mEDBG) | 
 + 
 +==== Librării utilizate ==== 
 + 
 +^ Librărie ^ Scop ^ 
 +| LiquidCrystal_I2C (AVR) | Comunicație LCD prin I2C | 
 +| avr/io.h | Registre I/O | 
 +| avr/​interrupt.h | Gestionare întreruperi | 
 +| avr/​eeprom.h | Stocare cod PIN persistent | 
 +| util/​delay.h | Delay-uri software | 
 + 
 +==== Algoritmi implementați ==== 
 + 
 +**Scanare tastatură — Lab 0 (GPIO) + Lab 2 (Întreruperi)** 
 + 
 +Timer2 declanșează o întrerupere la fiecare 10ms pentru scanarea matriceală și debounce. Rândurile sunt configurate ca OUTPUT, coloanele ca INPUT_PULLUP. La detecția unei taste, cifra este adăugată în buffer-ul codului curent. 
 + 
 +**Verificare cod PIN — EEPROM** 
 + 
 +Codul PIN este stocat persistent în EEPROM. La fiecare introducere,​ buffer-ul este comparat cu codul stocat. După 3 încercări greșite consecutive sistemul se blochează 30 de secunde. Codul poate fi schimbat printr-o secvență specială cu tasta #. 
 + 
 +**Control servomotor — Lab 3 (Timer/​PWM)** 
 + 
 +Timer1 este configurat în modul Fast PWM la frecvența de 50Hz (perioadă 20ms). Poziția deblocat corespunde unui puls de 1500μs (90°), iar poziția blocat unui puls de 500μs (0°). 
 + 
 +**Buzzer — Lab 3 (Timer/​PWM)** 
 + 
 +Ton scurt de 1kHz la apăsarea unei taste, ton de 500Hz timp de 500ms la cod greșit, ton continuu de 2kHz la declanșarea alarmei. 
 + 
 +**Senzor LDR anti-efracție — Lab 4 (ADC)**
  
-* Microchip Studio (fost AVR Studio) — IDE principal +ADC configurat în modul Free Running cu referință AVcc. La pornire se calibrează pragul de lumină cu ușa închisă. Dacă valoarea ADC depășește pragul cu un offset predefinit, alarma este declanșată. Verificarea se face la fiecare 100ms printr-un flag setat de Timer2.
-* AVR-GCC — compilator C +
-* AVRDUDE — programare prin USB (mEDBG integrat pe Xplained Mini)+
  
-**Librării utilizate:**+**Afișaj LCD — Lab 6 (I2C)**
  
-* LiquidCrystal_I2C (portată pentru AVR) — comunicație cu LCD prin I2C +Mesajele afișate sunt: "​Introduceti PIN:""Acces permis!"​"Cod incorect!",​ "​ALARMA ACTIVA!"​ și "​Blocat 30s...". Cifrele introduse sunt mascate cu asteriscuri (*).
-* Librărie proprie pentru scanare tastatură matriceală +
-* avr/io.havr/​interrupt.havr/eeprom.h, util/delay.h — librării standard AVR+
  
-**Algoritmi și structuri planificate:​**+**LED RGB — Lab 0 (GPIO)**
  
-* **Scanare tastatură (Lab 0 — GPIO + Lab 2 — Întreruperi):​** Rândurile tastaturii pe pini OUTPUT, coloanele pe INPUT_PULLUP. Timer2 configurat să declanșeze întrerupere ​la fiecare 10ms pentru debounce ​și scanare matriceală. La detecție tastă: adaugă cifra în buffer cod curent. +Verde la cod corect ​și ușă deblocată, roșu la cod greșit ​sau alarmă, clipire ​roșu la blocare temporară.
-* **Verificare cod PIN (EEPROM):** Codul PIN stocat în EEPROM (persistent între resetări). Comparare buffer introdus vs. cod stocat. Contor încercări greșite — blocare 30s după 3 eșecuri. Posibilitate schimbare cod prin secvență specială (#). +
-* **Control servomotor (Lab 3 — Timer/​PWM):​** Timer1 în modul Fast PWMfrecvență 50Hz (perioada 20ms). Deblocat: ICR = 1500μs (poziție 90°). Blocat: ICR = 500μs (poziție 0°). +
-* **Buzzer (Lab 3 — Timer/​PWM):​** Ton la apăsare tastă: 1kHz, 50ms. Ton cod greșit: 500Hz, 500ms. Alarmă: 2kHz continuu. +
-* **Senzor LDR — anti-efracție (Lab 4 — ADC):** ADC în modul Free Running, referință AVcc. Prag calibrat la pornire (lumina din interior când ușa e închisă). Dacă valoare ADC depășește pragul + offset → declanșare alarmă. Verificare ​la fiecare 100ms prin flag setat de Timer2. +
-* **Afișaj LCD (Lab 6 — I2C):** Mesaje afișate: "​Introduceti PIN:", "Acces permis!",​ "Cod incorect!",​ "​ALARMA ACTIVA!",​ "​Blocat 30s..."​. Afișare asteriscuri (*) per cifră introdusă. +
-* **LED RGB (Lab 0 — GPIO):** Verde: cod corect / ușă deblocată. Roșu: ​cod greșit ​alarmă. Clipire ​roșublocare temporară.+
  
 ===== Rezultate Obținute ===== ===== Rezultate Obținute =====
Line 92: Line 118:
 ===== Jurnal ===== ===== Jurnal =====
  
-* **Săptămâna 1:** Achiziție componente, testare individuală (LCD, tastatură, servo) +^ Săptămâna ^ Activitate ^ 
-* **Săptămâna 2:** Implementare scanare tastatură + verificare PIN + control servo +Săptămâna 1 Achiziție componente, testare individuală (LCD, tastatură, servo) ​| 
-* **Săptămâna 3:** Integrare LDR (anti-efracție) + buzzer + LED RGB +Săptămâna 2 Implementare scanare tastatură + verificare PIN + control servo | 
-* **Săptămâna 4:** Montare în carcasă, teste finale, documentație+Săptămâna 3 Integrare LDR (anti-efracție) + buzzer + LED RGB | 
 +Săptămâna 4 Montare în carcasă, teste finale, documentație ​|
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-**Resurse Hardware:**+==== Resurse Hardware ​====
  
-ATmega328P Datasheet ​— https://​www.microchip.com/​en-us/​product/​atmega328p +^ Componentă ^ Link ^ 
-ATmega328P Xplained Mini User Guide — https://​www.microchip.com +ATmega328P Datasheet ​https://​www.microchip.com/​en-us/​product/​atmega328p ​| 
-SG90 Servo Datasheet ​— http://​www.ee.ic.ac.uk/​pcheung/​teaching/​DE1_EE/​stores/​sg90_datasheet.pdf +ATmega328P Xplained Mini User Guide https://​www.microchip.com ​| 
-LDR Datasheet ​— GL5528+SG90 Servo Datasheet ​http://​www.ee.ic.ac.uk/​pcheung/​teaching/​DE1_EE/​stores/​sg90_datasheet.pdf ​| 
 +LDR Datasheet GL5528 ​| https://​www.datasheethub.com/​gl5528-datasheet/​ |
  
-**Resurse Software:**+==== Resurse Software ​====
  
-Laboratoare PM OCW — https://​ocw.cs.pub.ro/​courses/​pm +^ Resursă ^ Link ^ 
-AVR-GCC Documentation ​— https://​gcc.gnu.org/​wiki/​avr-gcc +Laboratoare PM OCW https://​ocw.cs.pub.ro/​courses/​pm ​| 
-LiquidCrystal I2C AVR — https://​github.com/​marcoschwartz/​LiquidCrystal_I2C +AVR-GCC Documentation ​https://​gcc.gnu.org/​wiki/​avr-gcc ​| 
-Room of Inspiration PM — https://​ocw.cs.pub.ro/​courses/​pm/​roomofinspiration+LiquidCrystal I2C AVR https://​github.com/​marcoschwartz/​LiquidCrystal_I2C ​| 
 +Room of Inspiration PM https://​ocw.cs.pub.ro/​courses/​pm/​roomofinspiration ​|
pm/prj2026/mihnea.dinica/ovidiu.calina.1777994392.txt.gz · Last modified: 2026/05/05 18:19 by ovidiu.calina
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