This shows you the differences between two versions of the page.
|
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> | ||