This is an old revision of the document!
SEIF
Introducere
Proiectul presupune realizarea unui seif care se deschide pe baza unei combinatii numerice de 4 cifre. La introducerea corecta a pinului, seif-ul va emite un sunet, iar la introducerea gresita a acestuia, va emite un alt sunet. Ambele situatii (de deblocare sau greseala) vor genera si un mesaj pe LCD. In plus, daca nu se detecteaza nici o miscare, acesta se va inchide singur.
Scopul acestuia este de a pastra in siguranta obiecte de valoare.
Ideea initiala a venit de la dorinta de a pastra lucrurile valoroase intr-un loc sigur, ferit de accesul celorlalti.
Acesta este util pentru ca nu necesita pastrarea unei chei, datorita formatului electronic. Ofera acces confidential, fara repercursiunile fizice pe care le-ar avea necesitatea unei chei - riscul de a o pierde sau de a fi furata. Astfel, utilizatorul poate sta linistit cu privire la siguranta obiectelor sale valoroase.
Descriere Generala
Hardware Design
Software Design
Link GitHub:
https://github.com/andreealeugeorgiana/pm-safe/blob/main/sketch_may18a.ino
Firmware-ul este scris în limbajul C pentru microcontrolerul ATmega328P, folosind registrele hardware direct pentru control maxim asupra sistemului. Aplicația este împărțită în mai multe componente logice:
Inițializare hardware completă (timere, PWM, UART, I2C, pini GPIO pentru keypad, senzori și actuatori)
Sistem de autentificare bazat pe parolă cu interfață keypad 4×4
Control servo motor pentru deschiderea/închiderea ușii
Monitorizare PIR pentru detectarea mișcării și timeout automat
Sistem de alarmă cu buzzer și LED-uri de stare
Interfață LCD I2C pentru feedback vizual către utilizator
Comunicare UART pentru logging și debug
Mediu de dezvoltare
Platforma utilizată: Arduino IDE
Microcontroler: ATmega328P
Toolchain: AVR-GCC + AVR Libc
Biblioteci utilizate: avr/io.h, avr/interrupt.h, util/delay.h pentru control hardware direct
Algoritmi și structuri implementate
Sistem de timekeeping: Întrerupere Timer0 pentru menținerea timpului sistem în milisecunde, cu protecție overflow
Unordered List Item* Scanare keypad cu debounce: Algoritm de scanare matricială 4×4 cu debounce temporal pentru prevenirea citirilor multiple false
Comunicare I2C pentru LCD: Implementare completă I2C master pentru controlul afișajului LCD prin expandor I2C (PCF8574)
Control PWM pentru servo: Timer1 în modul Fast PWM pentru generarea semnalelor de control servo (1-2ms pulse width)
Generare tonuri buzzer: Timer2 în modul CTC pentru generarea frecvențelor audio cu durată controlată
Verificare parolă cu feedback: Comparare string-uri cu mesaje diferențiate pentru acces granted/denied
Sistem de timeout inteligent: Monitorizare continuă PIR cu resetare automată după 10 secunde de inactivitate
State machine pentru sistem: Logică de stare (locked/unlocked/alarm) cu tranziții controlate prin taste speciale
Protecție întreruperi: Utilizarea cli()/sei() pentru accesul thread-safe la variabilele volatile de timp
Melodii programabile: Arrays de frecvențe și durată pentru feedback audio diferențiat (succes/eroare)
Display management: Funcții optimizate pentru actualizarea LCD cu cursor positioning și clear selective
Logging structurat: Mesaje UART formatate cu sprintf pentru debugging și monitorizare sistem
Jurnal
10 mai: terminare documentare + comanda piese
17 mai: implementare hardware: servomotor, tastatura, led-uri, buzzer
18 mai: implementare hardware: lcd, senzor PIR
22 mai: incepere implementare software
27 mai: terminare implementare software
28 mai: constructie cutie exterioara si implementare finala
Bibliografie