DIY: Ustvari SmartLock za vaš dom, ki se odpre samo s pametnim telefonom

Dandanes je na trgu na voljo toliko ključavnic, ki za odpiranje potrebujejo nekakšno geslo. Te ključavnice so zelo učinkovite, a zelo drage. Če moramo zaklepanje narediti za manjše namene, ki je avtomatizirano in odklenjeno ali zaklenjeno brez kakršnega koli gesla, vendar s pametnim telefonom, ga lahko naredimo z uporabo nekaterih komponent, ki so lahko dostopne na trgu.



Ta ključavnica bo poceni in bo v majhnem obsegu popolnoma delovala. An android aplikacija bo potrebna za upravljanje te ključavnice. Zdaj pa pojdimo k nastavitvi ESP32, namestitvi potrebnih paketov nanj in izvedbi nekaterih sprememb strojne opreme!

Samodejna DoorLock



Brez zapravljanja časa začnimo s preučevanjem pomembnih konceptov in delom na tem projektu.



Kako narediti SmartLock, ki ga upravlja Android?

1. korak: Zbiranje komponent

Če obstaja strah pred tem, da se boste sredi projekta zataknili in zapravili čas, obstaja odličen pristop, da se temu izognete. Naredite popoln seznam vseh komponent, ki jih boste potrebovali v projektu, in jih najprej kupite. Sledi celoten seznam vseh komponent, ki jih bomo uporabili v tem projektu. Vse te komponente so lahko dostopne na trgu.



  • ESP32
  • Jumper žice
  • Servo motor
  • Vijaki
  • Zakleni
  • Vrtalni stroj

2. korak: izdelava aplikacije

Ker bomo naredili pametno ključavnico, ki jo bo upravljal mobilni telefon, moramo razviti aplikacijo za Android, ki bo vsebovala gumb. S pritiskom na ta gumb bomo lahko pametno ključavnico odprli ali zaprli. Prej smo jih razvili več androidne aplikacije. Razvili smo že aplikacijo, ki vsebuje samo en gumb. Ta gumb se uporablja za pošiljanje podatkov v bazo podatkov. če v bazo podatkov Firebase potisnete ‘1’, se odpre ključavnica stikala in če v to bazo podatkov potisnete ‘0’, se ključavnica zapre.

Oglejte si naš članek z imenom Ustvarjanje brezžičnega stikala za vklop / izklop za vaš računalnik za pomoč pri razvoju lastne aplikacije za Android, ki bo uporabljena za upravljanje pametne ključavnice.

3. korak: Sestavljanje komponent

Ker imamo popoln seznam vseh komponent, ki jih potrebujemo za dokončanje tega projekta, pojdimo korak naprej in sestavimo vse komponente.



Vzemite servo motor in priključite njegov Vcc in ozemljitev na Vcc oziroma ozemljitev plošče ESP. Povežite zatič PWM vašega servo motorja z zatičem 34 vašega Plošča ESP32 . Zdaj pa poglejte, da je na servo motorju gumb zobnika. Z vrtenjem odstranite ročaj ključavnice in s pomočjo nekaterih lepil pritrdite gumb zobniškega motorja v ključavnico.

Zdaj s pomočjo vrtalnega stroja izvrtajte nekaj lukenj na vratih, kamor želite namestiti to pametno ključavnico. Prepričajte se, da ste izvrtali luknje tako, da luknje na ključavnici prekrivajo luknje na vratih, tako da se pritrdi vijak.

4. korak: Delo

Ker zdaj poznamo glavno idejo tega projekta, nam dovolite, da razumemo, kako bo ta projekt deloval.

Srce tega projekta je ESP32. Na to ploščo je povezan servo motor, ta mikrokrmilnik pa je povezan z zbirko podatkov firebase. Ko pritisnete gumb v aplikaciji, da odprete ključavnico, v bazo podatkov firebase potisnete ‘1’, ko pritisnete gumb, da zaprete ključavnico, pa v bazo podatkov Firebase pritisnete ‘0’. Plošča ESP neprekinjeno bere to vrednost v zbirki podatkov Firebase. Dokler je 0, bo ESP32 usmerjal servo motor, da ostane v prvotnem položaju. Takoj, ko 1 pride v ognjišče, ga bo prebrala plošča ESP in rekla servo motorju, naj naredi rotacijo, ki bo odprla ključavnico.

5. korak: Začetek uporabe ESP32

Če še niste delali na Arduino IDE, ne skrbite, ker je spodaj prikazan korak za korakom za nastavitev Arduino IDE.

  1. Prenesite najnovejšo različico Arduino IDE iz Arduino.
  2. Povežite svojo ploščo Arduino z računalnikom in odprite nadzorno ploščo. Kliknite na Strojna oprema in zvok. Zdaj odprta Naprave in tiskalnik in poiščite vrata, na katera je priključena vaša plošča. V mojem primeru je COM14 v različnih računalnikih pa je drugače.

    Iskanje pristanišča

  3. Kliknite Datoteka in nato Nastavitve. Kopirajte naslednjo povezavo v URL dodatnega upravitelja odbora. “ https://dl.espressif.com/dl/package_esp32_index.json '

    Preference

  4. Zdaj moramo za uporabo ESP32 z Arduino IDE uvoziti posebne knjižnice, ki nam bodo omogočile zapisovanje kode na ESP32 in njeno uporabo. ti knjižnici sta priloženi v spodnji povezavi. Če želite vključiti knjižnico, pojdite na Skica> Vključi knjižnico> Dodaj knjižnico ZIP . Pojavilo se bo okno. V računalniku poiščite mapo ZIP in kliknite V redu, da vključite mape.

    Vključi knjižnico

  5. Zdaj pa pojdi Skica> Vključi knjižnico> Upravljanje knjižnic.

    Upravljanje knjižnic

  6. Odpre se meni. V iskalno vrstico vnesite Arduino JSON. Pojavil se bo seznam. Namestite Arduino JSON, avtor Benoit Blanchon.

    Arduino JSON

  7. Zdaj kliknite na Orodja. Prikaže se spustni meni. Nastavite ploščo na ESP Dev modul.

    Nastavitvena plošča

  8. Ponovno kliknite meni Orodje in nastavite vrata, ki ste jih že opazili na nadzorni plošči.

    Nastavitev vrat

  9. Zdaj naložite kodo, ki je priložena spodnji povezavi, in kliknite gumb za prenos, da zapišete kodo na mikrokrmilnik ESP32.

    Naloži

Torej, ko boste naložili kodo, lahko pride do napake. To je najpogostejša napaka, ki se lahko pojavi, če uporabljate novo različico Arduino IDE in Arduino JSON. Sledijo napake, ki jih lahko vidite na zaslonu.

V datoteki, vključeni 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 razred iz ArduinoJson 5. Če želite izvedeti, kako nadgradite svoj program na ArduinoJson, glejte arduinojson.org/upgrade različica 6 StaticJsonBuffer jsonBuffer; ^ V datoteki 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 razred iz ArduinoJson 5. Glejte arduinojson.org/upgrade, če želite izvedeti, kako nadgradite svoj program na ArduinoJson različica 6 vrne StaticJsonBuffer (). ParseObject (_data); ^ Za 'WiFi.h' je bilo najdenih več knjižnic. Uporabljeno: C:  Users  Pro  AppData  Local  Arduino15  paketi  esp32  hardware  esp32  1.0.2  knjižnice  WiFi Ni uporabljeno: C:  Programske datoteke ( x86)  Arduino  libraries  WiFi Uporaba knjižnice WiFi v različici 1.0 v mapi: C:  Users  Pro  AppData  Local  Arduino15  paketi  esp32  hardware  esp32  1.0.2  libraries  WiFi Uporaba knjižnice IOXhop_FirebaseESP32-master v mapi: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Uporaba knjižnice HTTPClient različice 1.2 v mapi: C:  Users  Pro  AppData  Local  Arduino15  paketi  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Uporaba knjižnice WiFiClientSecure v različici 1.0 v mapi: C:  Users  Pro  AppData  Local  Arduino15  Packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Uporaba knjižnice ArduinoJson različica 6.12.0 v mapi: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson status izstopa 1 Napaka pri prevajanju za modul ESP32 Dev.

Skrbeti ni treba, ker lahko te napake odpravimo z nekaj preprostimi koraki. Te napake nastanejo, ker ima nova različica Arduino JSON namesto drugega razred StaticJsonBuffer. To je razred JSON 5. Torej lahko to napako preprosto odpravimo tako, da znižamo različico Arduino JSON našega Arduino IDE. Preprosto pojdite na Skica> Vključi knjižnico> Upravljanje knjižnic. Išči Arduino JSON, avtor Benoit Blanchon ki ste ga že namestili. Najprej ga odstranite in nato nastavite njegovo različico na 5.13.5. Zdaj, ko smo nastavili staro različico Arduino JSON, jo znova namestite in ponovno prevedite kodo. Tokrat bo vaša koda uspešno prevedena.

Če želite prenesti kodo, kliknite tukaj.

6. korak: koda

koda tega projekta je zelo preprosta, vendar je nekaj njegovih delov razloženo spodaj.

1. Na začetku kode bomo vključili tri knjižnice. Prvi je omogočiti Wifi na plošči ESP, drugi je omogočiti ESP uporabo servo motorja in tretji je povezati ploščo ESP z bazo podatkov firebase. Po tem bomo v kodo dodali gostitelja Firebase, preverjanje pristnosti, ime naše lokalne internetne povezave in njegovo geslo. Po tem ustvarite predmet za uporabo servo motorja.

#include // vključi knjižnico za uporabo WiFi #include // vključi knjižnico za servo motor #include // vključi knjižnico za povezavo s Firebaseom #define FIREBASE_HOST 'xxxxxxxxxx' // zamenjaj xxxxxxxxxx s svojim gostiteljem Firebase tukaj #define FIREBASE_AUTH 'xxxxxxx / nadomestite xxxxxxxxxx s preverjanjem pristnosti Firebase tukaj #define WIFI_SSID 'xx code, xxxxxxxx' // zamenjajte xxxxxxxxxxx z imenom naše povezave Wifi // ustvari objekt za servo motor int pos = 0; // ustvarjanje spremenljivke int stanje; // ustvarjanje spremenljivke

2. void setup () je funkcija, ki se v programu zažene samo enkrat, ko je plošča mikrokrmilnika vklopljena ali je pritisnjen gumb za omogočanje. V tej funkciji je nastavljena hitrost prenosa. Hitrost prenosa je dejansko hitrost komunikacije v bitih na sekundo, prek katere mikrokrmilnik komunicira z zunanjimi napravami. Servo motor je povezan z zatičem34 plošče ESP. v tej funkciji je zapisana koda za povezavo mikrokrmilnika z lokalno internetno povezavo.

void setup () {Serial.begin (115200); // nastavitev hitrosti prenosa myservo.attach (34); // priključimo PWM zatič servo motorja na zatič 34 ESP32 myservo.write (60); zamuda (1000); // povezava z wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('povezovanje'); medtem ko (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); zamuda (500); } Serial.println (); Serial.print ('povezan:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. void loop () je funkcija, ki se vedno znova izvaja v zanki. V tej funkciji povemo mikrokrmilniku, katere operacije naj izvajajo in kako. Tu se podatki berejo iz požarne baze in shranjujejo v spremenljivko z imenom država . Če ima stanje v sebi vrednost '0', je položaj servo motorja nastavljen na 8 stopinj. Če je vrednost v spremenljivem stanju enaka '1', bo položaj servo motorja nastavljen na 55 stopinj.

void loop () {state = Serial.println (Firebase.getFloat ('motor')); // preberemo podatke iz požarne baze // če je stanje '0', se enosmerni motor izklopi, če (stanje == '0') {myservo.write (8); // nastavitev položaja zakasnitve servo motorja (1000); // čakamo na onw second Serial.println ('Door Locked'); } sicer če (stanje == '1') {myservo.write (55); // nastavimo nov položaj zakasnitve servo motorja (1000); // čakamo eno sekundo Serial.println ('Door Unloocked'); } // obravnava napake, če (Firebase.failed ()) {Serial.print ('nastavitev / številka ni uspela:'); Serial.println (Firebase.error ()); vrnitev; } zamuda (1000);