Pasidaryk pats: „SmartLock“ sukūrimas jūsų namams, kuris atidaromas tik naudojant jūsų išmanųjį telefoną

Šiais laikais rinkoje yra tiek daug spynų, kurioms atidaryti reikia kažkokio slaptažodžio. Šios spynos yra labai efektyvios, bet labai brangios. Jei mums reikia nedidelio masto užrakto, kuris būtų automatizuotas ir būtų atrakintas ar užrakintas be jokio slaptažodžio, bet naudojant išmanųjį telefoną, galime padaryti naudodami kai kuriuos rinkoje lengvai prieinamus komponentus.



Ši spyna bus labai maža kaina ir puikiai veiks mažu mastu. An „Android“ programa reikės šiai spynai valdyti. Dabar pereikime prie ESP32 sukūrimo, būtinų paketų įdiegimo ir tam tikrų aparatūros pakeitimų!

Automatinis durų užraktas

Nešvaistydami laiko, pradėkime studijuoti svarbias koncepcijas ir dirbti prie šio projekto.



Kaip padaryti „Android“ valdomą „SmartLock“?

1 žingsnis: surinkti komponentus

Prieš pradedant bet kokį projektą, jei bijote, kad įstrigsite projekto viduryje ir gaišite laiką, yra puikus būdas jo išvengti. Sudarykite išsamų visų komponentų, kurių jums prireiks projekte, sąrašą ir pirmiausia juos nusipirkite. Toliau pateikiamas visas komponentų, kuriuos ketiname naudoti šiame projekte, sąrašas. Visi šie komponentai yra lengvai prieinami rinkoje.



  • ESP32
  • Šuolių laidai
  • Servo variklis
  • Varžtai
  • Užrakinti
  • Gręžimo mašina

2 žingsnis: Programos kūrimas

Kadangi ketiname sukurti išmanųjį užraktą, kurį valdys mobilusis telefonas, turime sukurti „Android“ programą, kurioje bus mygtukas. Paspausdami tą mygtuką galėsime atidaryti arba uždaryti išmanųjį užraktą. Anksčiau mes sukūrėme keletą „Android“ programos. Mes jau sukūrėme programą, kurią sudaro tik vienas joje esantis mygtukas. Šis mygtukas naudojamas duomenims siųsti į duomenų bazę. jei „1“ bus įstumtas į „Firebase“ duomenų bazę, atsidarys jungiklio užraktas, o jei „0“ bus įstumtas į tą duomenų bazę, užraktas bus uždarytas.

Peržiūrėkite mūsų pavadintą straipsnį Belaidžio įjungimo / išjungimo jungiklio sukūrimas jūsų kompiuteriui pasinaudoti pagalba kuriant savo „Android“ programą, kuri bus naudojama valdant išmanųjį užraktą.

3 žingsnis: komponentų surinkimas

Turime išsamų visų komponentų, kurių mums reikia užbaigti šį projektą, sąrašą, judėkime vienu žingsniu į priekį ir surenkame visus komponentus kartu.



Paimkite servo variklį ir prijunkite jo Vcc ir įžeminimą atitinkamai prie Vcc ir ESP plokštės žemės. Prijunkite servovariklio PWM kaištį prie savo 34 kaiščio ESP32 plokštė . Dabar pažiūrėkite, ar ant servo variklio yra pavaros tipo rankenėlė. Pasukdami išimkite spynos rankeną ir kai kurių klijų pagalba užfiksuokite reduktoriaus variklio rankenėlę.

Dabar, naudodamiesi gręžimo mašina, išgręžkite keletą skylių ant durų, kur norite įdėti šį išmanųjį užraktą. Išgręžkite skyles taip, kad spynos skylės sutaptų su durų skylėmis, kad varžtas galėtų įsitvirtinti.

4 žingsnis: darbas

Kadangi dabar žinome pagrindinę šio projekto idėją, supraskime, kaip šis projektas veiks.

ESP32 yra šio projekto esmė. Prie šios plokštės prijungtas servovariklis, o šis mikrovaldiklis turi ryšį su „Firebase“ duomenų baze. Paspaudus programos mygtuką, kad atidarytumėte užraktą, „1“ stumiama į „Firebase“ duomenų bazę, o paspaudus mygtuką, kad uždarytumėte užraktą, „0“ stumiama į „Firebase“ duomenų bazę. ESP plokštė nuolat skaito šią vertę „Firebase“ duomenų bazėje. Kol bus 0, ESP32 nurodys servo variklį likti pradinėje padėtyje. Kai tik 1 pateks į ugnies bazę, ESP plokštė ją perskaitys ir nurodys servo varikliui pasukti, kad atidarytų užraktą.

5 žingsnis: darbo su ESP32 pradžia

Jei anksčiau nedirbote su „Arduino IDE“, nesijaudinkite, nes žingsnis po žingsnio parodomas „Arduino IDE“ nustatymas.

  1. Atsisiųskite naujausią „Arduino IDE“ versiją iš Arduino.
  2. Prijunkite „Arduino“ plokštę prie kompiuterio ir atidarykite Valdymo skydą. Spustelėkite Aparatūra ir garsas. Dabar atidaryta Prietaisai ir spausdintuvas ir suraskite prievadą, prie kurio prijungta jūsų plokštė. Mano atveju taip yra COM14 bet skirtinguose kompiuteriuose yra skirtinga.

    Rasti uostą

  3. Spustelėkite Failas, tada spustelėkite Nuostatos. Nukopijuokite šią nuorodą į Papildomas valdybos valdytojo URL. „ https://dl.espressif.com/dl/package_esp32_index.json '

    Nuostatos

  4. Dabar, norėdami naudoti ESP32 su „Arduino IDE“, turime importuoti specialias bibliotekas, kurios leis mums įrašyti kodą ESP32 ir jį naudoti. šios dvi bibliotekos yra pridėtos žemiau pateiktoje nuorodoje. Norėdami įtraukti biblioteką, eikite Eskizas> Įtraukti biblioteką> Pridėti ZIP biblioteką . Pasirodys langelis. Kompiuteryje raskite aplanką ZIP ir spustelėkite Gerai, jei norite įtraukti aplankus.

    Įtraukti biblioteką

  5. Dabar eik Eskizas> Įtraukti biblioteką> Tvarkyti bibliotekas.

    Tvarkyti bibliotekas

  6. Bus atidarytas meniu. Paieškos juostoje įveskite Arduino JSON. Bus parodytas sąrašas. Diegti Benoit Blanchon „Arduino JSON“.

    Arduino JSON

  7. Dabar spustelėkite Įrankiai. Bus parodytas išskleidžiamasis meniu. Nustatykite lentą į ESP „Dev“ modulis.

    Nustatymo lenta

  8. Dar kartą spustelėkite meniu Įrankis ir nustatykite prievadą, kurį anksčiau pastebėjote valdymo skydelyje.

    Uosto nustatymas

  9. Dabar įkelkite kodą, pridėtą žemiau esančioje nuorodoje, ir spustelėkite mygtuką „Įkelti“, kad įrašytumėte kodą ESP32 mikrovaldiklyje.

    Įkelti

Taigi dabar, kai įkelsite kodą, gali įvykti klaida. Tai yra dažniausiai pasitaikanti klaida, kuri gali kilti, jei naudojate naują „Arduino IDE“ ir „Arduino JSON“ versiją. Toliau pateikiamos klaidos, kurias galite pamatyti ekrane.

Į failą, įtrauktą iš C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, iš 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 yra „ArduinoJson“ klasė. Norėdami sužinoti, kaip atnaujinti programą į „ArduinoJson“, žr. Arduinojson.org/upgrade. 6 versija „StaticJsonBuffer“ „jsonBuffer“; ^ Į failą, įtrauktą iš C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, iš 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 yra „ArduinoJson“ klasė 5. Norėdami sužinoti, kaip atnaujinti programą į, žr. Arduinojson.org/upgrade. „ArduinoJson“ 6 versija pateikia „StaticJsonBuffer“ (). ParseObject (_data); ^ Rasta kelios „WiFi.h“ bibliotekos. Naudota: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFi Nenaudojama: C:  Program Files ( x86)  Arduino  libraries  WiFi Naudojant bibliotekos „WiFi“ versiją 1.0 versijoje aplanke: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  bibliotekas  WiFi  Naudojant biblioteką IOXhop_FirebaseESP32-master aplanke: C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master (palikimas) Naudojant bibliotekos HTTPClient 1.2 versiją aplanke: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  bibliotekas  HTTPClient bibliotekos „WiFiClientSecure“ naudojimas naudojant 1.0 versiją aplanke: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFiClientSecure Biblioteka „ArduinoJson“ naudojimas 6.12.0 versija aplanke: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson exit status 1 Klaida rengiant plokštės ESP32 „Dev“ modulį.

Nėra ko jaudintis, nes šias klaidas galime pašalinti atlikdami kelis paprastus veiksmus. Šios klaidos kyla dėl to, kad naujojoje „Arduino JSON“ versijoje vietoj klasės yra kita klasė „StaticJsonBuffer“. Tai yra „JSON 5“ klasė. Taigi mes galime paprasčiausiai pašalinti šią klaidą, sumažinę mūsų „Arduino IDE“ versiją „Arduino JSON“. Paprasčiausiai eikite į Eskizas> Įtraukti biblioteką> Tvarkyti bibliotekas. Ieškoti Benoit Blanchon „Arduino JSON“ kurį jau įdiegėte. Pirmiausia pašalinkite jį, tada nustatykite jo versiją 5.13.5. Dabar, kai nustatėme seną „Arduino JSON“ versiją, įdiekite ją dar kartą ir sukompiliuokite kodą. Šį kartą jūsų kodas bus sėkmingai sukompiliuotas.

Norėdami atsisiųsti kodą, spustelėkite čia.

6 žingsnis: kodas

šio projekto kodas yra labai paprastas, bet kai kurie jo gabalai yra paaiškinti toliau.

1. Kodo pradžioje įtrauksime tris bibliotekas. Pirmasis - įjungti „Wifi“ ESP plokštėje, antras - leisti „ESP“ naudoti servovariklį, o trečiasis - prijungti ESP plokštę prie „Firebase“ duomenų bazės. Po to kode pridėsime „Firebase“ pagrindinį kompiuterį, autentifikavimą, vietinio interneto ryšio pavadinimą ir jo slaptažodį. Tai padarę sukurkite objektą, naudodamiesi servovarikliu.

#include // įtraukti biblioteką, kad būtų galima naudoti „WiFi“ #include // įtraukti biblioteką servovarikliui #include // įtraukti biblioteką, kad prisijungtumėte prie „Firebase“ #define FIREBASE_HOST 'xxxxxxxxxx' // pakeiskite xxxxxxxxxx savo „Firebase“ pagrindiniu kompiuteriu čia #define FIREBASE_AUTH 'xxxxxxxxxx' / / pakeiskite „xxxxxxxxxx“ savo „Firebase“ autentifikavimu čia #define WIFI_SSID 'xx code, xxxxxxxx' // pakeiskite xxxxxxxxxx mūsų Wifi ryšio pavadinimu #define WIFI_PASSWORD 'xxxxxxxxxx' // pakeiskite xxxxxxxxxx savo wifi slaptažodžiu Servo myservo; // sukurti objektą servovarikliui int pos = 0; // kintamojo int būsenos kūrimas; // kintamojo kūrimas

2. negaliojanti sąranka () yra funkcija, kuri programoje veikia tik vieną kartą, kai įjungiama mikrovaldiklio plokštė arba paspaudžiamas įjungimo mygtukas. Ši funkcija nustatoma duomenų perdavimo sparta. Perdavimo greitis iš tikrųjų yra ryšio greitis bitais per sekundę, per kurį mikrovaldiklis bendrauja su išoriniais įrenginiais. Servovariklis yra prijungtas prie ESP plokštės pin34. kodas yra parašytas šioje funkcijoje, norint prijungti mikrovaldiklį prie vietinio interneto ryšio.

negaliojanti sąranka () {Serial.begin (115200); // duomenų perdavimo spartos nustatymas myservo.attach (34); // prijunkite servovariklio PWM kaištį prie ESP32 „myservo.write“ (60) pin34; vėlavimas (1000); // prisijungti prie „wifi“. „WiFi.begin“ (WIFI_SSID, WIFI_PASSWORD); Serial.println ('jungiantis'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); vėlavimas (500); } Serial.println (); Serial.print ('prijungtas:'); Serial.println („WiFi.localIP“ ()); „Firebase.begin“ (FIREBASE_HOST, FIREBASE_AUTH); }

3. tuščia kilpa () yra funkcija, kuri veikia vėl ir vėl cikle. Šioje funkcijoje mikrovaldikliui nurodome, kokias operacijas ir kaip atlikti. Čia duomenys skaitomi iš „Firebase“ ir saugomi įvardytame kintamajame valstija . Jei būsenoje yra reikšmė „0“, servovariklio padėtis nustatoma 8 laipsniais. Jei kintamos būsenos vertė lygi „1“, servovariklio padėtis bus nustatyta 55 laipsnių.

void loop () {state = Serial.println (Firebase.getFloat ('motor')); // skaitykite duomenis iš „Firebase“ // jei būsena „0“, nuolatinės srovės variklis išsijungs, jei (būsena == '0') {myservo.write (8); // nustatyta servo variklio vėlavimo padėtis (1000); // laukti antrosios serijos.println ('Durys užrakintos'); } else if (būsena == '1') {myservo.write (55); // nustatyti naują servo variklio vėlinimo padėtį (1000); // palaukite sekundę Serial.println ('Durys atrakintos'); } // rankenos klaida, jei (Firebase.failed ()) {Serial.print ('nepavyko nustatyti / numerio:'); „Serial.println“ („Firebase.error“); grįžti; } vėlavimas (1000);