Table of Contents

Seif Electronic cu Cod PIN și Sistem Anti-Efracție

Introducere

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.

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 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.

Descriere generală

Sistemul este compus din următoarele module hardware, toate coordonate de microcontrolerul ATmega328P Xplained Mini:

Modul Rol Interfață
Tastatură 4×4 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

Fluxul de funcționare al sistemului este următorul: 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-ul monitorizează continuu lumina prin ADC și poate declanșa alarma independent de starea codului.

Hardware Design

Listă de piese

Componentă Cantitate
ATmega328P Xplained Mini 1
Tastatură matriceală 4×4 (membrană) 1
Display LCD1602 HD44780 1
Modul interfață I2C pentru LCD1602 1
Servomotor SG90 180 grade 1
Modul senzor LDR (fotorezistor) 1
Modul buzzer pasiv KY-006 1
Modul LED RGB 3 culori 1
Breadboard 830 puncte MB-102 1
Set rezistoare 20 valori 400 bucăți 1
Fire Dupont tată-mamă 20cm (x40) 1
Fire Dupont tată-tată 30cm (x40) 1
Cutie lemn (carcasă seif) 1

Conexiuni principale

Componentă Pini ATmega328P
Tastatură 4×4 (rânduri) PB0, PB1, PB2, PB3
Tastatură 4×4 (coloane) PD4, PD5, PD6, PD7
LCD I2C (SDA) PC4
LCD I2C (SCL) PC5
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

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)

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.

Afișaj LCD — Lab 6 (I2C)

Mesajele afișate sunt: “Introduceti PIN:”, “Acces permis!”, “Cod incorect!”, “ALARMA ACTIVA!” și “Blocat 30s…”. Cifrele introduse sunt mascate cu asteriscuri (*).

LED RGB — Lab 0 (GPIO)

Verde la cod corect și ușă deblocată, roșu la cod greșit sau alarmă, clipire roșu la blocare temporară.

Rezultate Obținute

De completat după finalizarea proiectului.

Concluzii

De completat după finalizarea proiectului.

Download

Arhiva cu sursele .c/.h, schema electrică și fișierul README se va încărca după finalizarea proiectului.

Jurnal

Săptămâna Activitate
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

Bibliografie/Resurse

Resurse Hardware

Resurse Software