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
Componente și interacțiuni
Arduino Nano gestionează toate componentele sistemului, tastatura si senzorul PIR care sunt de intrare si LCD-ul si servomotorul care sunt de iesire.
Senzor de mișcare (PIR) conectat la un pin GPIO configurat cu întreruperi. Când senzorul detectează mișcare, trimite un semnal către Arduino, care aprinde lampa.
Senzor de lumină (fotorezistor) este conectat la un pin ADC. Arduino citește nivelul de lumină ambientală și decide dacă este nevoie să aprindă lampa (doar dacă e întuneric).
Releu acționat de un pin GPIO controlează efectiv sursa de lumină (aprindere/stingere), în funcție de datele primite de la senzori.
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