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 digital, D12 configurat cu întreruperi. Când se detectează mișcare, se trimite un semnal către Arduino, si usa nu se incuie daca nu se detesteaza miscare 10s, se incuie. Servomotrul este conectat la pinul D10 si se roteste cand se introduce parola corect la 90 de grade. Tastatura este conectata la pinii D2-D9 si detecteaza tastele introduse de utilizator. Buzzerul este conectat la pinul D11. Canta un ton cand se introduce parola corecta, si altul cand aceasta este gresita. Ledurile verde si rosu sunt conectate la pinii A0 respectiv A1, folositi ca digitali, si se aprind asa: rosu cand se introduce gresit, verde cand corect. LCD-ul cu I2C este conectat la pinii A4 SDA si A5 SCL. El afiseaza un mesal corelat cu situatia in cauza. Initial se cere parola, se afiseaza ce se introduce, daca parola este corecta sau gresita se afiseaza un mesaj aparte, iar daca este corecta, senzorul de miscare porneste si ecranul afiseaza cate secunde au mai ramas pana cand seiful se va inchide singur.

Hardware Design

Listă de piese:

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

Video Explicativ: https://imgur.com/aAI66M8

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

pm/prj2025/ccristi/andreea.leu.txt · Last modified: 2025/05/27 13:49 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