Differences

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

Link to this comparison view

pm:prj2023:apredescu:seifdestept [2023/05/29 01:49]
isabela_maria.avram
pm:prj2023:apredescu:seifdestept [2023/05/30 00:30] (current)
isabela_maria.avram
Line 7: Line 7:
   * Proiectul pe care doresc să-l implementez constă într-un seif deștept. Acesta se poate deschide cu un cifru care a fost setat inițial (introdus printr-o tastatură).   * Proiectul pe care doresc să-l implementez constă într-un seif deștept. Acesta se poate deschide cu un cifru care a fost setat inițial (introdus printr-o tastatură).
   * Scopul proiectului este ca să pot avea un loc mai sigur pentru depozitarea lucrurilor importante și de valoare.   * Scopul proiectului este ca să pot avea un loc mai sigur pentru depozitarea lucrurilor importante și de valoare.
-  * Ideea de la care am pornit a fost faptul că aveam un cub din lemn în casă care nu avea nicio întrebuințare substanțială,​ era practic doar un suport, așa că m-am gândit că aș putea să-l folosesc cumva la proiectul de la PM (deși am sfârșit prin a folosi polistiren. Dat fiind faptul că este un cub, am zis că ar tebui să realizez un proiect prin care mă pot folosi de faptul că pot depozita ceva în interiorul cubului, așa mi-a venit ideea de seif.+  * Ideea de la care am pornit a fost faptul că aveam un cub din lemn în casă care nu avea nicio întrebuințare substanțială,​ era practic doar un suport, așa că m-am gândit că aș putea să-l folosesc cumva la proiectul de la PM (deși am sfârșit prin a folosi polistiren). Dat fiind faptul că este un cub, am zis că ar tebui să realizez un proiect prin care mă pot folosi de faptul că pot depozita ceva în interiorul cubului, așa mi-a venit ideea de seif.
   * Pentru mine este util deoarece, așa cum am menționat mai sus, mi-ar prinde bine să am un loc mai sigur pentru depozitarea lucrurilor importante și de valoare, iar pentru alții ar fi de folos tot din același motiv.   * Pentru mine este util deoarece, așa cum am menționat mai sus, mi-ar prinde bine să am un loc mai sigur pentru depozitarea lucrurilor importante și de valoare, iar pentru alții ar fi de folos tot din același motiv.
  
 ===== Descriere generală ===== ===== Descriere generală =====
-Proiectul este un seif care poate fi deschis printr-un cifru (stabilit inițial în interiorul codului, deci este ceva prestabilit). Dacă cifrul corespunde parolei stabilite inițial, atunci este acționat servo motorul care deschide (printr-un zăvor) ușa seifului. În cazul în care cifrul introdus nu corespunde celui corect, atunci ușa va rămâne închisă. Totodată, la începutul programului,​ ușa se va închide automat. Se vor afișa mesaje corespunzătoare fiecărei etape în care se află seiful.+Proiectul este un seif care poate fi deschis printr-un cifru (stabilit inițial în interiorul codului, deci este ceva prestabilit). Dacă cifrul corespunde parolei stabilite inițial, atunci este acționat servo motorul care deschide (printr-un zăvor) ușa seifului. În cazul în care cifrul introdus nu corespunde celui corect, atunci ușa va rămâne închisă. Totodată, la începutul programului,​ ușa se va închide automat. Se vor afișa mesaje corespunzătoare fiecărei etape în care se află seiful. Seiful va avea 3 melodii încorporate,​ acestea fiind redate la începutul fiecărei acțiuni importante din cadrul programului (pornire seif, deschidere ușă, cod greșit).
  
-{{:​pm:​prj2023:​apredescu:​schema_bloc_pm.png?700|}}+{{ :​pm:​prj2023:​apredescu:​seif_destept_schema_bloc.png?700 |}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 23: Line 23:
   * Ecran LCD I2C   * Ecran LCD I2C
   * Fire   * Fire
 +  * Buzzer Pasiv
 +  * Rezistență 100Ω
 +  * Breadboard
  
 2. Schema electrică: 2. Schema electrică:
  
-{{:​pm:​prj2023:​apredescu:​pm_proiect.png?700|}}+{{ :​pm:​prj2023:​apredescu:​seif_destept_schema_electrica.png?900 |}}
  
 ===== Software Design ===== ===== Software Design =====
Line 36: Line 39:
   * LiquidCrystal_I2C.h   * LiquidCrystal_I2C.h
   * Servo.h   * Servo.h
 +  * pitches.h
  
 Descrierea funcționalității codului: Descrierea funcționalității codului:
-  * Prima etapă a fost să declar toți parametrii de care am avut nevoie.  +  * Prima etapă a fost să declar toți parametrii de care am avut nevoie. 
-  * Funcționalitatea dată seifului este practic de a se deschide când este introdusă parola corectă, altfel acesta este menținut închis. Parolele (cea setată = corectă și cea introdusă de la tastatură) sunt verificate caracter cu caracter. Programul nu acceptă mai mult de 4 caractere pentru parolă+  * Funcționalitatea dată seifului este practic de a se deschide când este introdusă parola corectă, altfel acesta este menținut închis. Parolele (cea setată = corectă și cea introdusă de la tastatură) sunt verificate caracter cu caracter. Programul nu acceptă mai mult de 4 caractere pentru parolă, fapt pentru care vor fi luate în considerare doar primele 4 caractere introduse de la tastatură. 
 +  * Sistemul de închidere este format dintr-un servo motor, un zăvor metalic și o sârmă, astfel că modul în care funcționează acesta depinde în totalitate de corectitudinea parolei introduse, dacă este corectă, servo motorul își va schima poziția în "​unlockPos",​ iar dacă este incorectă, servo motorul va rămâne în poziția "​lockPos"​. Din poziția "​unlockPos",​ utilizatorul poate alege să închidă seiful apăsând pe butonul cu caracterul "#",​ astfel servo motorul schimbându-și poziția în "​lockPos"​. Procesul se poate relua astfel la nesfârșit. 
 + 
 +Funcțiile implementate în cod sunt următoarele:​ 
 +  * **void setup()**:​ 
 +    * se configurează pinul buzzer-ului;​ 
 +    * se închide ușa (servo motorul va trece în poziția "​lockPos"​);​ 
 +    * se inițializează ecranul LCD și se afișează un mesaj de start; 
 +    * se redă una dintre melodiile definite; 
 +  * **void loop()**: 
 +    * aici se verifică starea ușii, dacă este deschisă (caz în care se verifică dacă se vrea închiderea ușii cu ajutorul tastei "#",​ dacă este apăsată, atunci se va trece servo motorul în poziția "​lockPos"​) sau nu (se va ține ușa deschisă cu ajutorul funcției **void Open()**);​ 
 +  * **void clearData()**:​ 
 +    * această funcție șterge parola introdusă anterior de utilizator pentru a putea avea buffer-ul gol la următoarea introducere noi parole; 
 +  * **void ServoOpen()**:​ 
 +    * această funcție aduce servo motorul în poziția "​unlockPos",​ ceea ce înseamnă că ușa se va deschide; 
 +  * **void ServoClose()**:​ 
 +    * această funcție aduce servo motorul în poziția "​lockPos",​ ceea ce înseamnă că ușa se va închide; 
 +  * **void Open()**: 
 +    * în acestă funcție se așteaptă introducerea unei parole de acces la seif; 
 +    * când o tastă este apăsată, aceasta va fi reținută într-un string care, după introducerea celor 4 caractere necesare, va fi comparat cu parola setată implicit în program (care este și cea corectă);​ 
 +    * dacă cele două stringuri sunt egale ca valoare, atunci se va apela funcția amintită anterior **void ServoOpen()**,​ altfel doar se va modifica valoarea variabilei care reține dacă ușa este încuiată sau nu (noua valoare va fi 1, însemnând că ușa este închisă);​ 
 +    * la final se va apela funcția **void clearData()** amintită mai sus; 
 +  * **void lionSleepsTonight(),​ void nokia(), void pinkPanther()**:​ 
 +    * aceste funcții au fost preluate și folosite pentru a reda melodii în cadrul programului,​ sursele vor fi adăugate la final în Bibliografie.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-Care au fost rezultatele obţinute în urma realizării proiectului ​vostru.+**Link către un mic demo al proiectului: https://​youtu.be/​Zww7OANcRqY** 
 + 
 +{{:​pm:​prj2023:​apredescu:​seif3.jpeg?​200 |}}  {{:​pm:​prj2023:​apredescu:​seif4.jpeg?​200 |}}  {{:​pm:​prj2023:​apredescu:​seif5.jpeg?​200 |}}
  
 ===== Concluzii ===== ===== Concluzii =====
 +A fost destul de interesant să lucrez la acest proiect, deși cred că una dintre cele mai mari provocări a fost construirea efectivă a seifului. Mi-am dorit să existe și o notă de personalitate,​ așa că am adăugat și melodiile pentru puțină atmosferă drăguță =).
  
 ===== Download ===== ===== Download =====
  
-<​note ​warning+<​note>​ 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +{{:pm:prj2023:apredescu:proiectpm_avramisabelamaria.zip|}}
- +
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**.+
 </​note>​ </​note>​
  
Line 58: Line 86:
  
 <note tip> <note tip>
 +  * 29.05.2023: Definitivare documentație OCW
 +  * 28.05.2023: Finalizare parte software
 +  * 21.05.2023: Implementare hardware + schemă bloc + schemă electrică
   * 01.05.2023: Adăugare informații pe pagină   * 01.05.2023: Adăugare informații pe pagină
   * 21.04.2023: Stabilire temă proiect   * 21.04.2023: Stabilire temă proiect
Line 63: Line 94:
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +1. Resurse software:
 +   * https://​github.com/​hibit-dev/​buzzer/​tree/​master/​src
 +   * https://​forum.arduino.cc/​
 +   * https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab1-2022
 +   * https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023
 +   * https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2022
  
-<​note>​ +2. Resurse hardware: 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +   ​https://www.sigmanortec.ro/
-</note>+
  
 <​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/prj2023/apredescu/seifdestept.1685314162.txt.gz · Last modified: 2023/05/29 01:49 by isabela_maria.avram
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