Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:ccristi:andreea.leu [2025/05/18 21:38]
andreea.leu [Hardware Design]
pm:prj2025:ccristi:andreea.leu [2025/05/27 13:49] (current)
andreea.leu
Line 9: Line 9:
  
 ===== Descriere Generala ===== ===== Descriere Generala =====
-{{:​pm:​prj2025:​ccristi:​screenshot_2025-05-10_153650.png?​500|}}+ 
 +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. 
 + 
 +{{:​pm:​prj2025:​ccristi:​screenshot_2025-05-10_153650.png?​700|}} 
 +{{:​pm:​prj2025:​ccristi:​uses.png?​700|}}
  
  
Line 27: Line 38:
 </​note>​ </​note>​
  
-{{:​pm:​prj2025:​ccristi:​screenshot_2025-05-18_213628.png?​300|}}+{{:​pm:​prj2025:​ccristi:​screenshot_2025-05-18_213628.png?​800|}} 
 +{{:​pm:​prj2025:​ccristi:​whatsapp_image_2025-05-27_at_01.46.49_6d390594.jpg?​800|}} 
 + 
 + 
 +<note tip> 
 +**Video Explicativ:​** https://​imgur.com/​aAI66M8 
 +</​note>​ 
 + 
 +===== Software Design ===== 
 + 
 +<note tip> 
 +**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 4x4 
 +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 
 +</​note>​ 
 + 
 + 
 + 
 +<note tip> 
 +**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 
 +</​note>​ 
 + 
 + 
 + 
 + 
 +<note tip> 
 +**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ă 4x4 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 
 + 
 +</​note>​ 
 + 
 + 
 +===== 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 ===== 
 + 
 +https://​plusivo.com/​arduino-nano-pinout-guide/​ 
 +https://​plusivo.com/​arduino-nano-pinout-guide/​ 
 +https://​www.electronics-tutorials.ws/​io/​io_2.html 
 +http://​www.ee.ic.ac.uk/​pcheung/​teaching/​DE1_EE/​stores/​sg90_datasheet.pdf 
 +https://​arduinogetstarted.com/​tutorials/​arduino-lcd-i2c 
 +https://​www.circuitbasics.com/​how-to-set-up-a-keypad-on-an-arduino/​ 
 +https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf
pm/prj2025/ccristi/andreea.leu.1747593483.txt.gz · Last modified: 2025/05/18 21:38 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