Table of Contents

Smart Lock with Wi-fi Code Validation or Keypad

Adrian-Vasile Pop 332CB

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.

Descriere generală

smart_lock_components.jpg

Varianta prezentată este un prototip realizat într-o cutie, iar varianta practică care ar putea fi implementată într-un caz real s-ar folosi de aceleași resurse software, dar de resurse hardware diferite, anume un motor care să acționeze asupra mecanismului de deschidere/închidere al unei uși. Utilizatorul va interacționa cu un keypad care este pe cutie sau aplicația RemoteXY prin care se poate introduce codul de acces. În cazul unui cod corect, se va afișa pe ecranul LCD mesajul „Acces permis!”, iar în cazul aplicației se mai afișează mesajul „Corect!” și se aude un sunet pentru confirmare. În cazul unui cod greșit, se va afișa pe ecranul LCD mesajul „Incorect!”, iar în cazul aplicației se mai afișează mesajul „Greșit!” și se aude un sunet pentru infirmare. La apăsarea oricărei taste de pe keypad se va auzi un sunet și se va afișa pe ecranul LCD caracterul introdus.

Hardware Design

Listă piese:

Software Design

software_scheme.jpg

Mediu de dezvoltare: Arduino IDE Librării:

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 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.

Rezultate Obţinute

ASCII���Screenshot lock_insert.jpg ASCII���Screenshot lock_open.jpg lock_insert_incorrect.jpg lock_incorrect.jpg ASCII���Screenshot

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

adrian-vasilepop_332cb_smartlock.rar

Bibliografie/Resurse

ATmega328P: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
LiquidCrystal_I2C.h: https://github.com/johnrickman/LiquidCrystal_I2C
ESP8266: https://www.youtube.com/watch?v=KCGlOvU8M3E&ab_channel=DPVTECHNOLOGY
LCD LCD1602 with I2C module: https://www.youtube.com/watch?v=q9YC_GVHy5A
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/