This is an old revision of the document!
Proiectul constă într-un seif electronic controlat printr-o tastatură matriceală 4×4, 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ă.
* Scopul: Realizarea unui sistem de securitate simplu, funcț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.
* Utilitate: Proiectul demonstrează integrarea mai multor periferice
hardware (GPIO, PWM, ADC, I2C) într-un sistem embedded real, util atât ca proiect educațional cât și ca prototip funcțional.
Schema bloc a proiectului:
+——————+ +——————-+
| Tastatură 4×4 | ——> |
+——————+ | ATmega328P |—–> Servomotor SG90
| Xplained Mini |-----> LED RGB
+——————+ | |—–> Buzzer pasiv
| Senzor LDR | ——> |
+——————+ +——————-+
Module hardware:
Conectată pe 8 pini GPIO ai ATmega328P (4 rânduri + 4 coloane),
citită prin scanare matriceală. * **LCD 1602 + modul I2C** — afișează starea sistemului (introducere cod, acces permis/refuzat, alarmă). Comunicație I2C (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 (ușă deschisă 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.
Listă de piese:
Conexiuni principale:
220Ω în serie
Mediu de dezvoltare:
Librării utilizate:
standard AVR
Algoritmi și structuri planificate:
1. **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
2. **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ă (#)
3. **Control servomotor (Lab 3 — Timer/PWM)** - Timer1 în modul Fast PWM, frecvență 50Hz (perioada 20ms) - Deblocat: ICR = 1500μs (poziție 90°) - Blocat: ICR = 500μs (poziție 0°)
4. **Buzzer (Lab 3 — Timer/PWM)** - Ton la apăsare tastă: 1kHz, 50ms - Ton cod greșit: 500Hz, 500ms - Alarmă: 2kHz continuu
5. **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
6. **Afișaj LCD (Lab 6 — I2C)**
- Mesaje: "Introduceti PIN:", "Acces permis!", "Cod incorect!",
"ALARMA ACTIVA!", "Blocat 30s..."
- Afișare număr asteriscuri (*) per cifră introdusă
7. **LED RGB (Lab 0 — GPIO)** - Verde: cod corect / ușă deblocată - Roșu: cod greșit / alarmă - Clipire roșu: blocare temporară
De completat după finalizarea proiectului. ===== Concluzii ===== De completat după finalizarea proiectului.
Arhiva cu sursele .c/.h, schema electrică și README se va încărca după finalizare.
tastatură, servo)
control servo
Resurse Hardware:
Resurse Software: