This shows you the differences between two versions of the page.
pm:prj2022:abirlica:vsmart_lock [2022/06/01 22:04] adrian_vasile.pop [Software Design] |
pm:prj2022:abirlica:vsmart_lock [2022/06/01 23:15] (current) adrian_vasile.pop [Smart Lock with Wi-fi Code Validation or Keypad] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Smart Lock with Wi-fi Code Validation or Keypad ====== | ====== Smart Lock with Wi-fi Code Validation or Keypad ====== | ||
+ | |||
+ | Adrian-Vasile Pop | ||
+ | 332CB | ||
===== Introducere ===== | ===== Introducere ===== | ||
Încuietoarea inteligentă propusă va rezolva o problemă primară din afacerea de „home-sharing” sau a închirierii pe termen scurt, anume deschiderea ușii doar pentru cine este în posesia unui cod de acces. Se va folosi de o interfață grafică pentru a se putea deschide la introducerea unui cod bun sau de un keypad. Această încuietoare va rezolva problema pe care o întâmpin în momentul de față la afacerea proprie, de închiriat garsoniere în regim hotelier, problema automatizării accesului în garsoniere. O va putea folosi oricine dorește să permită accesul într-o încăpere doar celor care cunosc codul. | Încuietoarea inteligentă propusă va rezolva o problemă primară din afacerea de „home-sharing” sau a închirierii pe termen scurt, anume deschiderea ușii doar pentru cine este în posesia unui cod de acces. Se va folosi de o interfață grafică pentru a se putea deschide la introducerea unui cod bun sau de un keypad. Această încuietoare va rezolva problema pe care o întâmpin în momentul de față la afacerea proprie, de închiriat garsoniere în regim hotelier, problema automatizării accesului în garsoniere. O va putea folosi oricine dorește să permită accesul într-o încăpere doar celor care cunosc codul. | ||
Line 29: | Line 32: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | *Mediu de dezvoltare*: Arduino IDE | + | {{ software_scheme.jpg}} |
- | *Librării*: | + | |
+ | **Mediu de dezvoltare**: Arduino IDE | ||
+ | **Librării**: | ||
* LiquidCrystal_I2C.h | * LiquidCrystal_I2C.h | ||
* Wire.h | * Wire.h | ||
Line 37: | Line 42: | ||
* RemoteXY.h | * RemoteXY.h | ||
- | *Design* | + | **Design**\\ |
- | *void setup()* -> se inițializează tot ce ține de aplicație(ESP-ul devine un Wi-fi Access Point). Se copiază informația corespunzătoare în string-urile care vor fi afișate în aplicație. Se inițializează lcd-ul, se activează lumina de fundal a acesuia și servo-motor-ul. | + | **void setup()** -> se inițializează tot ce ține de aplicație(ESP-ul devine un Wi-fi Access Point). Se copiază informația corespunzătoare în string-urile care vor fi afișate în aplicație. Se inițializează lcd-ul, se activează lumina de fundal a acesuia și servo-motor-ul.\\ |
- | *void clearData()* -> se șterg toate informațiile din string-ul care se ocupă cu procesarea codului introdus de utilizator. | + | **void clearData()** -> se șterg toate informațiile din string-ul care se ocupă cu procesarea codului introdus de utilizator.\\ |
- | *void loop()* -> se rețin caracterele introduse prin keypad și se afișează pe lcd, emițând un semnal către buzzed după fiecare caracter. Odată ce s-au introdus un număr de caractere egal cu numarul de caractere al parolei, se verifică dacă caracterele introduse sunt aceleași cu caracterele parolei, iar în caz afirmativ se acționează asupra servo-motor-ului, se afișează pe LCD și se redau sunete specifice. În cazul aplicației, dacă se introduce un cod corect, se afișează în aplicație un mesaj afirmativ, se resetează câmpul de introducere al parolei, se afișează pe ecranul LCD, se acționează asupra servo-motor-ului și se redau sunete specifice. În ambele cazuri servo-motor-ul revine la poziția de închidere(inițială). În cazul în care nu se introduce un cod corect, se afișează un mesaj corespunzător și se redau sunete specifice. | + | **void loop()** -> se rețin caracterele introduse prin keypad și se afișează pe lcd, emițând un semnal către buzzed după fiecare caracter. Odată ce s-au introdus un număr de caractere egal cu numarul de caractere al parolei, se verifică dacă caracterele introduse sunt aceleași cu caracterele parolei, iar în caz afirmativ se acționează asupra servo-motor-ului, se afișează pe LCD și se redau sunete specifice. În cazul aplicației, dacă se introduce un cod corect, se afișează în aplicație un mesaj afirmativ, se resetează câmpul de introducere al parolei, se afișează pe ecranul LCD, se acționează asupra servo-motor-ului și se redau sunete specifice. În ambele cazuri servo-motor-ul revine la poziția de închidere(inițială). În cazul în care nu se introduce un cod corect, se afișează un mesaj corespunzător și se redau sunete specifice. |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{app_initial.jpg?50}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{lock_insert.jpg?50}} |
- | </note> | + | {{app_correct.jpg?50}} |
+ | {{lock_open.jpg?50}} | ||
+ | {{lock_insert_incorrect.jpg?50}} | ||
+ | {{lock_incorrect.jpg?50}} | ||
+ | {{app_incorect.jpg?50}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Am implementat tot ce mi-am propus inițial. Implementarea software a fost greoaie datorită modulului ESP8266 care a jucat rolul unui Wi-fi Acces Point care nu genera rețeaua Wi-fi doar câteodată. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{adrian-vasilepop_332cb_smartlock.rar}} |
- | 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ă ;-). | + | |
- | + | ||
- | 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> | + | |
- | + | ||
- | ===== Jurnal ===== | + | |
- | + | ||
- | <note tip> | + | |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | **ATmega328P**: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf\\ |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | **LiquidCrystal_I2C.h**: https://github.com/johnrickman/LiquidCrystal_I2C\\ |
- | </note> | + | **ESP8266**: https://www.youtube.com/watch?v=KCGlOvU8M3E&ab_channel=DPVTECHNOLOGY\\ |
- | + | **LCD LCD1602 with I2C module**: https://www.youtube.com/watch?v=q9YC_GVHy5A\\ | |
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | **Servo Motor**: https://www.youtube.com/watch?v=xrIiKqvm8hQ&ab_channel=Robojax\\ |
+ | **Buzzer Songs**: https://www.programmingelectronics.com/an-easy-way-to-make-noise-with-arduino-using-tone/\\ | ||
+ | **RemoteXY**: https://remotexy.com/\\ | ||
+ | **Keypad**: https://playground.arduino.cc/Code/Keypad/\\ |