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

Listă de piese:

  • Arduino NANO
  • Keypad 4 x 3
  • Ecran LCD cu I2C integrat
  • Servomotor
  • Breadboard
  • Senzor prezenta PIR
  • Buzzer Pasiv

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

pm/prj2025/ccristi/andreea.leu.1748332698.txt.gz · Last modified: 2025/05/27 10:58 by andreea.leu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0