Differences

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

Link to this comparison view

pm:prj2022:cristip:apartmentalarm [2022/06/02 02:04]
diana_maria.simion [Implementare]
pm:prj2022:cristip:apartmentalarm [2022/06/02 10:06] (current)
diana_maria.simion [Concluzii]
Line 113: Line 113:
  
 ** Sincronizarea intre tastele apasate si LCD ** ** Sincronizarea intre tastele apasate si LCD **
 +
 +Flowul descris este similar cu cel din diagrama de stari. Folosesc variabilele boolean isPasswordSet si activeAlarm ca sa identific state-ul din diagrama.
 +
 <​code>​ <​code>​
 void keypadAndLcdJob() void keypadAndLcdJob()
Line 144: Line 147:
 </​code>​ </​code>​
  
-**Mesajele afisate pe LCD**+** Setarea parolei ** 
 + 
 +<​code>​ 
 +/* Sets the current password */ 
 +void setPassword() 
 +
 + while (true) { 
 +                /* Pretty prints for the user */ 
 + ... 
 + 
 + char key = customKeypad.getKey();​ 
 + if (key) { 
 + if (passwordIndex < MAX_INDEX) { 
 + /* Show the current character and then replace with a "​*"​ */ 
 + ... 
 + 
 + /* Save the current character and advance */ 
 + ... 
 + } else { 
 + if (key == ACTIVATE_KEY) { 
 + /* Send the complete password to the user via bluetooth ​ */ 
 + ... 
 + 
 + /* Prints a countdown until the alarm is activated */ 
 + activateAlarmCountdown(0,​ ACTIVATE_ALARM_TIMEOUT);​ 
 + 
 + /* Mark the set alarm and reset indexes */ 
 + ... 
 + 
 + /* The function can exit when the activate key was pressed */ 
 + return;​ 
 +
 +
 +
 +
 +
 + 
 +</​code>​ 
 + 
 +** Verificarea parolei ** 
 + 
 +Pentru aceasta parte, am ales sa pastrez un loop infinit care se opreste cu introducerea corecta a parolei. Intre incercari am pus un countdown care sa blocheze incercarile abuzive. Pentru a testa mai usor insa, am lasat niste timpi mici. Implementarea urmeaza un pattern similar cu setPassword. 
 + 
 +<​code>​ 
 +void checkPassword();​ 
 +</​code>​ 
 + 
 +** Optiunea aleasa dupa introducerea corecta a parolei ** 
 + 
 +In functie de optiunea aleasa, actualizez variabilele necesare functionarii asteptate a sistemului. 
 + 
 +<​code>​ 
 +void activateOrReset();​ 
 +</​code>​ 
 + 
 +** Countdown ** 
 + 
 +Functia poate fi folosita atat pentru numaratoarea inversa pana la activarea alarmei (dupa ce a fost setata), dar si dupa o incercare gresita, prin cei doi parametri pentru mesajul dorit de afisat si numarul de la care sa inceapa numaratoarea inversa. 
 + 
 +<​code>​ 
 +void activateAlarmCountdown(int option, int timeout) 
 +</​code>​ 
 + 
 +** Mesajele afisate pe LCD ** 
 + 
 +In plus, prin variabila enteredPasswordState am retinut starea in care userul a introdus de introdus parola, insa nu a trecut la pasul urmator. 
 <​code>​ <​code>​
 /* Prints helper messages on the LCD */ /* Prints helper messages on the LCD */
Line 174: Line 243:
  
 ==== Biblioteci folosite ==== ==== Biblioteci folosite ====
 +  * Wire.h - comunicarea cu modulul I2C
   * LiquidCrystal_I2C.h - comunicarea cu LCD-ul cu modul I2C   * LiquidCrystal_I2C.h - comunicarea cu LCD-ul cu modul I2C
   * Keypad.h - comunicarea cu tastatura numerica   * Keypad.h - comunicarea cu tastatura numerica
Line 191: Line 261:
 ===== Concluzii ===== ===== Concluzii =====
  
 +Proiectul a fost placut de realizat si am categoric o mai buna intelegere a celor lucrate la laborator, intrucat am avut mai mult timp de gandire.
 +
 +Provocarea principala a venit din structurarea interactiunii cu tastatura numerica si LCD-ul astfel incat sa nu fie nevoie de instructiuni suplimentare de utilizare ale acestora.
 +
 +Conectarea cu modulul bluetooth a fost de asemenea satisfacator,​ iar o idee de imbunatatire consta in crearea unui UI mai dragut si a posibilitatii efectuarii de configurari pentru alarma de pe telefon.
 +
 +Testarea pentru senzorul de fum a fost putin problematica pentru ca a trebuit sa dau foc hartiei:).
 ===== Download ===== ===== Download =====
  
 Arhiva: {{:​pm:​prj2022:​cristip:​security_and_safety_alarm_system.zip|}} Arhiva: {{:​pm:​prj2022:​cristip:​security_and_safety_alarm_system.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
 + 
 +  * 9.05.2022 - Alegerea proiectului si definitivarea functionalitatilor
  
-<note tip> +  * 16.05.2022 - Documentatie:​ Introducere,​ descriere generala, schema bloc, componente shema electrica
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</​note>​+
  
 +  * 21-22.05.2022 - Conectarea componentelor,​ comunicarea cu LCD-ul
 +
 +  * 28.05.2022 - Logica pentru setarea, activarea si resetarea parolei
 +
 +  * 29.05.2022 - Conectarea cu modulul bluetooth
 +
 +  * 30.05.2022 -  Documentatie:​ Software design, rezultate obtinute
 +
 +  * 31.05.2022 - Rezolvare bug-uri si imbunatatiri
 ===== Resurse ===== ===== Resurse =====
  
Line 207: Line 293:
  
 Keypad: https://​www.circuitbasics.com/​how-to-set-up-a-keypad-on-an-arduino/​ Keypad: https://​www.circuitbasics.com/​how-to-set-up-a-keypad-on-an-arduino/​
 +
 +Modul Bluetppth: https://​www.instructables.com/​Remotely-Control-LED-using-HC-05-Bluetooth-Arduino/​
 +
 +Piese Eagle: https://​github.com/​ErichStyger/​mcuoneclipse/​tree/​master/​Eagle/​Library
  
  
 +===== Export to PDF =====
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2022/cristip/apartmentalarm.1654124672.txt.gz · Last modified: 2022/06/02 02:04 by diana_maria.simion
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