Uradi sam: Izrada SmartLocka za vaš dom koji se otvara samo s vašim pametnim telefonom

Danas je na tržištu dostupno toliko brava kojima je potrebna neka vrsta lozinke da bi se otvorile. Te su brave vrlo učinkovite, ali vrlo skupe. Ako trebamo napraviti bravu za male svrhe koja je automatizirana i otključava se ili zaključava bez ikakve lozinke, ali pomoću pametnog telefona, možemo je izraditi pomoću nekih komponenata koje su lako dostupne na tržištu.



Ova će brava biti vrlo niska u cijeni i savršeno će raditi u malim razmjerima. An android aplikacija bit će potreban za upravljanje ovom bravom. Krenimo sada prema postavljanju ESP32, instaliranju potrebnih paketa na njega i uvođenju određenih hardverskih promjena!

Automatsko zaključavanje vrata



Bez gubljenja vremena, krenimo s proučavanjem važnih koncepata i radom na ovom projektu.



Kako napraviti SmartLock na Androidu?

Korak 1: Prikupljanje komponenata

Prije nego što započnete bilo koji projekt, ako postoji strah da ćete zapeti usred projekta i izgubiti vrijeme, postoji izvrstan pristup da ga izbjegnete. Napravite cjelovit popis svih komponenata koje će vam trebati u projektu i kupite ih uopće. Slijedi cjelovit popis svih komponenata koje ćemo koristiti u ovom projektu. Sve su ove komponente lako dostupne na tržištu.



  • ESP32
  • Jumper žice
  • Servo motor
  • Vijci
  • Zaključaj
  • Bušilica

Korak 2: Izrada aplikacije

Kako ćemo napraviti pametnu bravu kojom će upravljati mobilni telefon, trebamo razviti android aplikaciju koja će sadržavati gumb. Pritiskom na taj gumb moći ćemo otvoriti ili zatvoriti pametnu bravu. Prije smo ih razvili nekoliko android aplikacija. Već smo razvili aplikaciju koja se sastoji od samo jednog gumba u njemu. Ovaj se gumb koristi za slanje podataka u bazu podataka. ako se '1' ugura u Firebase bazu podataka, otvorit će se brava prekidača, a ako se u tu bazu gurne '0', brava će se zatvoriti.

Pogledajte naš članak pod nazivom Stvaranje bežičnog prekidača za uključivanje / isključivanje za vaše računalo za pomoć u razvoju vlastite android aplikacije koja će se koristiti za upravljanje pametnom bravom.

Korak 3: Sastavljanje komponenata

Budući da imamo cjelovit popis svih komponenata koje su nam potrebne za dovršetak ovog projekta, pomaknimo se korak dalje i sastavimo sve komponente zajedno.



Uzmite servo motor i spojite njegov Vcc i masu na Vcc i masu ESP ploče. Spojite PWM pin vašeg servo motora na pin 34 vašeg ESP32 ploča . Sada pogledajte da na servo motoru postoji gumb tipa zupčanika. Izvadite ručicu brave okrećući je i pomoću nekih ljepila učvrstite gumb zupčanika u bravi.

Sada uz pomoć bušilice izbušite neke rupe na vratima gdje želite postaviti ovu pametnu bravu. Pazite da rupe izbušite na takav način da rupe brave preklapaju rupe na vratima, otvarajući mjesto za pričvršćivanje vijka.

Korak 4: Rad

Kako sada znamo glavnu ideju koja stoji iza ovog projekta, shvatimo kako će ovaj projekt funkcionirati.

ESP32 je srce ovog projekta. Na ovu ploču povezan je servo motor, a ovaj mikrokontroler ima vezu s Firebase bazom podataka. Kad se pritisne gumb u aplikaciji za otvaranje brave, u bazu podataka Firebase gurne se '1', a kada se zatvori brava pritisne gumb '0' u bazu podataka Firebase. ESP ploča neprekidno čita ovu vrijednost u Firebase bazi podataka. Sve dok postoji 0, ESP32 će usmjeravati servo motor da ostane u početnom položaju. Čim 1 uđe u vatrenu bazu, ESP ploča će ga pročitati i reći servo motoru da izvrši rotaciju koja će otvoriti bravu.

Korak 5: Početak rada s ESP32

Ako prije niste radili na Arduino IDE-u, ne brinite jer je korak po korak za postavljanje Arduino IDE-a prikazan u nastavku.

  1. Preuzmite najnoviju verziju Arduino IDE sa Arduino.
  2. Spojite svoju Arduino ploču s računalom i otvorite upravljačku ploču. Kliknite na Hardver i zvuk. Sada otvoreno Uređaji i pisač i pronađite priključak na koji je spojena vaša ploča. U mom slučaju jest COM14 ali je različito u različitim računalima.

    Pronalaženje luke

  3. Kliknite Datoteka, a zatim Postavke. Kopirajte sljedeću vezu u Dodatni URL upravitelja odbora. “ https://dl.espressif.com/dl/package_esp32_index.json '

    Postavke

  4. Sada, da bismo koristili ESP32 s Arduino IDE-om, moramo uvesti posebne biblioteke koje će nam omogućiti da narežemo kod na ESP32 i da ga koristimo. ove su dvije knjižnice u prilogu na donjoj poveznici. Da biste uključili knjižnicu, idite na Skica> Uključi biblioteku> Dodaj ZIP biblioteku . Pojavit će se okvir. Pronađite mapu ZIP na računalu i kliknite U redu da biste uključili mape.

    Uključi biblioteku

  5. Sad idi Skica> Uključi biblioteku> Upravljanje knjižnicama.

    Upravljanje knjižnicama

  6. Otvorit će se izbornik. U traku za pretraživanje upišite Arduino JSON. Pojavit će se popis. Instalirati Arduino JSON Benoita Blanchona.

    Arduino JSON

  7. Sada kliknite na Alati. Pojavit će se padajući izbornik. Postavite ploču na ESP razvojni modul.

    Odbor za postavljanje

  8. Ponovno kliknite izbornik Alat i postavite priključak koji ste prije vidjeli na upravljačkoj ploči.

    Postavka porta

  9. Sada prenesite kôd koji je priložen na donjoj poveznici i kliknite gumb za prijenos da biste spalili kôd na ESP32 mikrokontroleru.

    Učitaj

Dakle, sada kada učitate kôd, može se dogoditi pogreška. Ovo je najčešća pogreška koja se može dogoditi ako koristite novu verziju Arduino IDE-a i Arduino JSON-a. Slijede pogreške koje se mogu vidjeti na ekranu.

U datoteci uključenoj iz C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, iz C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: StaticJsonBuffer je klasa iz ArduinoJsona 5. Molimo pogledajte arduinojson.org/upgrade da biste saznali kako nadograditi svoj program na ArduinoJson verzija 6 StaticJsonBuffer jsonBuffer; ^ U datoteci uključenoj iz C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, iz C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: error: StaticJsonBuffer je klasa iz ArduinoJsona 5. Pogledajte arduinojson.org/upgrade da biste saznali kako nadograditi svoj program na ArduinoJson verzija 6 vraća StaticJsonBuffer (). ParseObject (_data); ^ Pronađeno je više knjižnica za 'WiFi.h' Korišteno: C:  Users  Pro  AppData  Local  Arduino15  paketi  esp32  hardware  esp32  1.0.2  libraries  WiFi Ne koristi se: C:  Programske datoteke ( x86)  Arduino  libraries  WiFi Korištenje knjižnice WiFi u verziji 1.0 u mapi: C:  Users  Pro  AppData  Local  Arduino15  Packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Korištenje knjižnice IOXhop_FirebaseESP32-master u mapi: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Korištenje knjižnice HTTPClient verzije 1.2 u mapi: C:  Users  Pro  AppData  Local  Arduino15  paketi  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Korištenje knjižnice WiFiClientSecure na verziji 1.0 u mapi: C:  Users  Pro  AppData  Local  Arduino15  Packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Korištenje knjižnice ArduinoJson na verzija 6.12.0 u mapi: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson status izlaza 1 Pogreška pri sastavljanju za modul ESP32 Dev.

Ne treba se brinuti jer ove pogreške možemo ukloniti slijedeći nekoliko jednostavnih koraka. Te pogreške nastaju jer nova verzija Arduino JSON-a ima drugu klasu umjesto StaticJsonBuffer. Ovo je klasa JSON 5. Dakle, ovu grešku možemo jednostavno ukloniti snižavanjem verzije Arduino JSON našeg Arduino IDE-a. Jednostavno idite na Skica> Uključi biblioteku> Upravljanje knjižnicama. Traziti Arduino JSON Benoita Blanchona koje ste već instalirali. Prvo ga deinstalirajte, a zatim postavite njegovu verziju na 5.13.5. Sada, kad smo postavili staru verziju Arduino JSON-a, instalirajte je ponovo i prekompajlirajte kôd. Ovaj put, vaš će se kod uspješno sastaviti.

Da biste preuzeli kôd, klik ovdje.

6. korak: kôd

kôd ovog projekta je vrlo jednostavan, ali ipak, neki njegovi dijelovi objašnjeni su u nastavku.

1. Na početku koda uključit ćemo tri knjižnice. Prvo je omogućiti Wifi na ESP ploči, drugo je omogućiti ESP-u upotrebu servo motora i treće je povezati ESP ploču s bazom podataka firebase. Nakon toga u kôd ćemo dodati domaćina Firebasea, provjeru autentičnosti, naziv naše lokalne internetske veze i lozinku. Nakon toga stvorite objekt za upotrebu servo motora.

#include // uključi knjižnicu za korištenje WiFi-a #include // uključi biblioteku za servo motor #include // uključi biblioteku za povezivanje s Firebaseom #define FIREBASE_HOST 'xxxxxxxxxx' // zamijeni xxxxxxxxxx svojim firebase domaćinom ovdje #define FIREBASE_AUTH 'xxxxxxx / zamijeniti XXXXXXXXXX vaš firebase autentičnosti ovdje #define WIFI_SSID 'xx koda, xxxxxxxx' // zamijeniti XXXXXXXXXX po imenu našeg bežičnom vezom #define WIFI_PASSWORD 'XXXXXXXXXX' // zamijeniti XXXXXXXXXX vaš WiFi password Servo myservo; // izrada objekta za servo motor int pos = 0; // stvaranje varijable int state; // stvaranje varijable

2. void postavljanje () je funkcija koja se u programu pokreće samo jednom kada je ploča mikrokontrolera uključena ili je pritisnuta tipka za omogućivanje. Brzina prijenosa je postavljena u ovoj funkciji. Brzina prijenosa zapravo je brzina komunikacije u bitovima u sekundi kroz koju mikrokontroler komunicira s vanjskim uređajima. Servo motor je spojen na pin34 ESP ploče. u ovoj je funkciji napisan kod za povezivanje mikrokontrolera s lokalnom internetskom vezom.

void setup () {Serial.begin (115200); // postavljanje brzine prijenosa myservo.attach (34); // spojimo PWM pin servo motora na pin34 ESP32 myservo.write (60); kašnjenje (1000); // spojiti na wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('povezivanje'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); kašnjenje (500); } Serial.println (); Serial.print ('povezano:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. petlja void () je funkcija koja se uvijek iznova izvodi u petlji. U ovoj funkciji govorimo mikrokontroleru, koje operacije i kako izvršiti. Ovdje se podaci čitaju iz firebase-a i pohranjuju u imenovanu varijablu država . Ako stanje ima vrijednost ‘0’, položaj servo motora postavljen je na 8 stupnjeva. Ako je vrijednost u promjenjivom stanju jednaka '1', položaj servo motora bit će postavljen na 55 stupnjeva.

petlja void () {stanje = Serial.println (Firebase.getFloat ('motor')); // čitanje podataka iz firebase-a // ako je stanje '0', istosmjerni motor će se isključiti if (state == '0') {myservo.write (8); // postavljen položaj kašnjenja servo motora (1000); // čekamo onw drugi Serial.println ('Vrata zaključana'); } else if (stanje == '1') {myservo.write (55); // postavljanje novog položaja kašnjenja servo motora (1000); // čekamo jednu sekundu Serial.println ('Vrata otključana'); } // // obrađuje pogrešku ako (Firebase.failed ()) {Serial.print ('postavka / broj nije uspio:'); Serial.println (Firebase.error ()); povratak; } kašnjenje (1000);