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.
Proiectul este structurat în mai multe module hardware și software care interacționează prin intermediul microcontrolerului ATmega328P Xplained Mini.
Module hardware:
* Tastatură 4×4 — input utilizator pentru introducerea codului PIN. 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 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.
Listă de piese:
* ATmega328P Xplained Mini (placă de dezvoltare) * Tastatură matriceală 4×4 (membrană) * Display LCD1602 HD44780 * Modul interfață I2C/IIC pentru LCD1602 * Servomotor SG90 180 grade * Modul senzor LDR (fotorezistor) * Modul buzzer pasiv KY-006 * Modul LED RGB 3 culori * Breadboard 830 puncte MB-102 * Set rezistoare 20 valori 400 bucăți * Fire Dupont tată-mamă 20cm (x40) * Fire Dupont tată-tată 30cm (x40) * Cutie lemn (carcasă seif)
Conexiuni principale:
* Tastatură 4×4 → PB0-PB3 (rânduri), PD4-PD7 (coloane) * LCD I2C → SDA (PC4), SCL (PC5) * Servo SG90 → PB1 (OC1A, Timer1 PWM) * LDR → PC0 (ADC0) * Buzzer → PB2 (OC1B, Timer1 PWM) * LED RGB → PD3 (roșu), PD5 (verde), PD6 (albastru) cu rezistențe 220Ω în serie
Mediu de dezvoltare:
* Microchip Studio (fost AVR Studio) — IDE principal * AVR-GCC — compilator C * AVRDUDE — programare prin USB (mEDBG integrat pe Xplained Mini)
Librării utilizate:
* LiquidCrystal_I2C (portată pentru AVR) — comunicație cu LCD prin I2C * Librărie proprie pentru scanare tastatură matriceală * avr/io.h, avr/interrupt.h, avr/eeprom.h, util/delay.h — librării standard AVR
Algoritmi și structuri planificate:
* 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. * 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 PWM, frecvență 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șu: blocare temporară.
De completat după finalizarea proiectului.
De completat după finalizarea proiectului.
Arhiva cu sursele .c/.h, schema electrică și fișierul README se va încărca după finalizarea proiectului.
* Săptămâna 1: Achiziție componente, testare individuală (LCD, tastatură, servo) * Săptămâna 2: Implementare scanare tastatură + verificare PIN + control servo * 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
Resurse Hardware:
* ATmega328P Datasheet — https://www.microchip.com/en-us/product/atmega328p * ATmega328P Xplained Mini User Guide — https://www.microchip.com * SG90 Servo Datasheet — http://www.ee.ic.ac.uk/pcheung/teaching/DE1_EE/stores/sg90_datasheet.pdf * LDR Datasheet — GL5528
Resurse Software:
* Laboratoare PM OCW — https://ocw.cs.pub.ro/courses/pm * AVR-GCC Documentation — https://gcc.gnu.org/wiki/avr-gcc * LiquidCrystal I2C AVR — https://github.com/marcoschwartz/LiquidCrystal_I2C * Room of Inspiration PM — https://ocw.cs.pub.ro/courses/pm/roomofinspiration