DIY: SmartLock izveide jūsu mājām, kas tiek atvērta tikai ar jūsu viedtālruni

Mūsdienās tirgū ir pieejamas tik daudz slēdzenes, kuru atvēršanai nepieciešama kāda veida parole. Šīs slēdzenes ir ļoti efektīvas, bet ļoti dārgas. Ja mums ir jāveic neliela mēroga slēdzene, kas ir automatizēta un ir atbloķēta vai bloķēta bez jebkādas paroles, bet ar viedtālruni, mēs to varam izgatavot, izmantojot dažus komponentus, kas ir viegli pieejami tirgū.



Šim slēdzenim būs ļoti zemas izmaksas un tas lieliski darbosies mazā mērogā. An android lietojumprogramma būs nepieciešama, lai darbinātu šo slēdzeni. Pārejam uz ESP32 iestatīšanu, nepieciešamo pakotņu instalēšanu un noteiktu aparatūras izmaiņu veikšanu!

Automātiska durvju bloķēšana



Netērējot laiku, sāksim pētīt svarīgas koncepcijas un strādāt pie šī projekta.



Kā padarīt Android operējamu SmartLock?

1. darbība: komponentu apkopošana

Pirms jebkura projekta uzsākšanas, ja ir bailes, ka jūs iestrēgstat projekta vidū un tērējat laiku, ir lieliska pieeja, lai no tā izvairītos. Izveidojiet pilnu visu komponentu sarakstu, kas jums būs vajadzīgs projektā, un vispirms tos iegādājieties. Tālāk ir pilns visu komponentu saraksts, ko mēs izmantosim šajā projektā. Visi šie komponenti ir viegli pieejami tirgū.



  • ESP32
  • Džemperu vadi
  • Servomotors
  • Skrūves
  • Bloķēt
  • Urbjmašīna

2. solis: lietotnes izveidošana

Tā kā mēs gatavojamies izveidot viedo slēdzeni, kuru darbinās mobilais tālrunis, mums jāizstrādā android lietotne, kurā būs poga. Nospiežot šo pogu, mēs varēsim atvērt vai aizvērt viedo slēdzeni. Iepriekš mēs esam izstrādājuši vairākus android lietojumprogrammas. Mēs jau esam izstrādājuši lietojumprogrammu, kas tajā sastāv tikai no vienas pogas. Šī poga tiek izmantota datu nosūtīšanai datu bāzē. ja ‘1’ tiek iebīdīts firebase datu bāzē, atvērsies slēdža bloķētājs un, ja ‘0’ tiks iebīdīts šajā datu bāzē, slēdzene tiks aizvērta.

Lūdzu, skatiet mūsu rakstu ar nosaukumu Bezvadu ieslēgšanas / izslēgšanas slēdža izveidošana datoram izmantot palīdzību, lai izstrādātu savu android lietojumprogrammu, kas tiks izmantota viedās bloķēšanas darbībai.

3. solis: komponentu montāža

Tā kā mums ir pilns visu komponentu saraksts, kas mums nepieciešams šī projekta pabeigšanai, virzīsimies vienu soli uz priekšu un saliksim kopā visus komponentus.



Paņemiet servomotoru un pievienojiet tā Vcc un zemi attiecīgi ESP plātnes Vcc un zemei. Savienojiet servomotora PWM tapu ar sava 34. kontaktu ESP32 dēlis . Tagad redziet, ka servomotorā ir zobrata tipa poga. Izvelciet slēdzenes rokturi, to pagriežot, un ar dažu līmju palīdzību nofiksējiet pārnesumotora pogu slēdzenē.

Tagad ar urbjmašīnas palīdzību urbjiet dažas atveres uz durvīm, kur vēlaties ievietot šo viedo slēdzeni. Pārliecinieties, ka urbāt urbumus tā, lai slēdzenes caurumi pārklātu durvju atveres, ļaujot skrūvei nostiprināties.

4. solis: Darbs

Tā kā mēs tagad zinām šī projekta galveno ideju, ļaujiet mums saprast, kā šis projekts darbosies.

ESP32 ir šī projekta pamatā. Šim dēlim ir pievienots servomotors, un šim mikrokontrollerim ir savienojums ar firebase datu bāzi. Nospiežot lietotnes pogu, lai atvērtu slēdzeni, firebase datu bāzē tiek ievietots ‘1’ un, nospiežot pogu, lai aizvērtu slēdzeni, ‘0’ tiek iebīdīts firebase datu bāzē. ESP dēlis šo vērtību Firebase datu bāzē lasa nepārtraukti. Kamēr ir 0, ESP32 novirzīs servomotoru palikt sākotnējā stāvoklī. Tiklīdz 1 nonāk ugunsgrēka bāzē, ESP dēlis to nolasīs un liks servomotoram veikt rotāciju, kas atvērs slēdzeni.

5. darbība: darba sākšana ar ESP32

Ja iepriekš neesat strādājis ar Arduino IDE, neuztraucieties, jo soli pa solim, lai iestatītu Arduino IDE, ir parādīts zemāk.

  1. Lejupielādējiet jaunāko Arduino IDE versiju no Arduino.
  2. Savienojiet savu Arduino dēli ar datoru un atveriet vadības paneli. Klikšķiniet uz Aparatūra un skaņa. Tagad atvērts Ierīces un printeris un atrodiet portu, ar kuru savienots jūsu dēlis. Manā gadījumā tā ir COM14 bet dažādos datoros tas ir atšķirīgs.

    Ostas atrašana

  3. Noklikšķiniet uz Fails un pēc tam uz Preferences. Nokopējiet šo saiti mapē Papildu valdes vadītāja URL. “ https://dl.espressif.com/dl/package_esp32_index.json '

    Preferences

  4. Tagad, lai lietotu ESP32 ar Arduino IDE, mums jāimportē īpašas bibliotēkas, kas ļaus mums ierakstīt kodu ESP32 un to izmantot. šīs divas bibliotēkas ir pievienotas zemāk dotajā saitē. Lai iekļautu bibliotēku, dodieties Skice> Iekļaut bibliotēku> Pievienot ZIP bibliotēku . Parādīsies lodziņš. Datorā atrodiet mapi ZIP un noklikšķiniet uz Labi, lai iekļautu mapes.

    Iekļaut bibliotēku

  5. Tagad ej Skice> Iekļaut bibliotēku> Pārvaldīt bibliotēkas.

    Pārvaldīt bibliotēkas

  6. Tiks atvērta izvēlne. Meklēšanas joslā ierakstiet Arduino JSON. Parādīsies saraksts. Uzstādīt Benoits Blanšons Arduino JSON.

    Arduino JSON

  7. Tagad noklikšķiniet uz Rīki. Parādīsies nolaižamā izvēlne. Iestatiet dēli uz ESP Dev modulis.

    Dēļu iestatīšana

  8. Vēlreiz noklikšķiniet uz izvēlnes Rīks un iestatiet portu, kuru iepriekš novērojāt vadības panelī.

    Portas iestatīšana

  9. Tagad augšupielādējiet kodu, kas pievienots zemāk esošajā saitē, un noklikšķiniet uz augšupielādes pogas, lai sadedzinātu kodu ESP32 mikrokontrollerī.

    Augšupielādēt

Tāpēc tagad, augšupielādējot kodu, var rasties kļūda. Šī ir visizplatītākā kļūda, kas var rasties, ja izmantojat jaunu Arduino IDE un Arduino JSON versiju. Tālāk ir norādītas kļūdas, kuras varat redzēt ekrānā.

Failā, kas iekļauts C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, no 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 ir ArduinoJson klase. Lūdzu, skatiet vietni arduinojson.org/upgrade, lai uzzinātu, kā jaunināt programmu uz ArduinoJson 6. versija StaticJsonBuffer jsonBuffer; ^ Failā, kas iekļauts C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, no C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: kļūda: StaticJsonBuffer ir klase no ArduinoJson 5. Lūdzu, skatiet vietni arduinojson.org/upgrade, lai uzzinātu, kā atjaunināt programmu uz ArduinoJson 6. versija atgriež StaticJsonBuffer (). ParseObject (_data); ^ Vietnei 'WiFi.h' tika atrastas vairākas bibliotēkas. Izmantotie: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFi Nav izmantoti: C:  Program Files ( x86)  Arduino  libraries  WiFi Izmantojot bibliotēkas WiFi versiju 1.0 mapē: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFi  Izmantojot bibliotēku IOXhop_FirebaseESP32-master mapē: C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master (mantojums) Izmantojot bibliotēkas HTTPClient versijā 1.2 mapē: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Bibliotēkas WiFiClientSecure izmantošana versijā 1.0 mapē: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFiClientSecure Bibliotēkas ArduinoJson izmantošana Versija 6.12.0 mapē: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson izejas statuss 1 Kļūda sastādot plates ESP32 Dev moduli.

Nav ko uztraukties, jo šīs kļūdas mēs varam novērst, veicot dažas vienkāršas darbības. Šīs kļūdas rodas tāpēc, ka jaunajā Arduino JSON versijā ir cita klase, nevis StaticJsonBuffer. Šī ir JSON 5 klase. Tāpēc mēs varam vienkārši novērst šo kļūdu, pazeminot mūsu Arduino IDE versijas Arduino JSON versiju. Vienkārši dodieties uz Skice> Iekļaut bibliotēku> Pārvaldīt bibliotēkas. Meklēt Benoits Blanšons Arduino JSON kuru esat instalējis iepriekš. Vispirms atinstalējiet to un pēc tam iestatiet tā versiju uz 5.13.5. Tagad, kad esam iestatījuši veco Arduino JSON versiju, instalējiet to vēlreiz un atkārtoti apkopojiet kodu. Šoreiz jūsu kods tiks veiksmīgi apkopots.

Lai lejupielādētu kodu, klikšķis šeit.

6. solis: kods

šī projekta kods ir ļoti vienkāršs, bet tomēr daži tā gabali ir paskaidroti tālāk.

1. Koda sākumā mēs iekļausim trīs bibliotēkas. Pirmais ir iespējot Wifi uz ESP dēļa, otrais - ļaut ESP izmantot servomotoru un trešais ir savienot ESP plati ar firebase datu bāzi. Pēc tam kodā pievienosim firebase resursdatoru, autentifikāciju, vietējā interneta savienojuma nosaukumu un tā paroli. Pēc tam izveidojiet objektu servomotora izmantošanai.

#include // iekļauj bibliotēku, lai izmantotu WiFi #include // iekļauj bibliotēku servomotoram #include // iekļauj bibliotēku, lai izveidotu savienojumu ar Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // aizstāj xxxxxxxxxx ar savu firebase resursdatoru šeit #define FIREBASE_AUTH 'xxxxxxxxxx' / / aizstājiet xxxxxxxxxx ar savu firebase autentifikāciju šeit #define WIFI_SSID 'xx code, xxxxxxxx' // aizstājiet xxxxxxxxxx ar mūsu Wifi savienojuma nosaukumu #define WIFI_PASSWORD 'xxxxxxxxxx' // aizstājiet xxxxxxxxxx ar savu wifi paroli Servo myservo; // izveidot objektu servomotoram int pos = 0; // mainīgā int stāvokļa izveide; // mainīgā izveide

2. anulēt iestatīšanu () ir funkcija, kas programmā darbojas tikai vienu reizi, kad ir ieslēgta mikrokontrolleru plate vai nospieda iespējošanas poga. Šajā funkcijā ir iestatīts datu pārraides ātrums. Bauda ātrums faktiski ir sakaru ātrums bitos sekundē, caur kuru mikrokontrolleris sazinās ar ārējām ierīcēm. Servomotors ir savienots ar ESP plātnes pin34. Šajā funkcijā tiek ierakstīts kods, lai mikrokontrolleru savienotu ar vietējo interneta savienojumu.

void setup () {Serial.begin (115200); // datu pārraides ātruma iestatīšana myservo.attach (34); // savienojiet servomotora PWM tapu ar ESP32 myservo.write (60) pin34; kavēšanās (1000); // izveidot savienojumu ar wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('savienojums'); while (WiFi.status ()! = WL_CONNECTED) {Seriālā.druka ('.'); kavēšanās (500); } Seriālais.println (); Serial.print ('savienots:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. void loop () ir funkcija, kas darbojas atkal un atkal ciklā. Šajā funkcijā mēs pastāstām mikrokontrollerim, kādas darbības jāveic un kā. Šeit dati tiek nolasīti no firebase un tiek glabāti nosauktajā mainīgajā Valsts . Ja stāvoklī ir vērtība “0”, servomotora stāvoklis tiek iestatīts uz 8 grādiem. Ja mainīgā stāvoklī vērtība ir vienāda ar ‘1’, servomotora stāvoklis tiks iestatīts uz 55 grādiem.

void loop () {state = Serial.println (Firebase.getFloat ('motors')); // lasīt datus no firebase // ja stāvoklis ir 0, līdzstrāvas motors izslēgsies, ja (stāvoklis == '0') {myservo.write (8); // iestatīt servomotora aiztures pozīciju (1000); // gaidiet onw otro Serial.println ('Durvis ir bloķētas'); } else if (statuss == '1') {myservo.write (55); // iestatīt servomotora aiztures jauno pozīciju (1000); // pagaidiet vienu sekundi Serial.println ('Door UnLocked'); } // apstrādāt kļūdu, ja (Firebase.failed ()) {Serial.print ('iestatījums / numurs neizdevās:'); Serial.println (Firebase.error ()); atgriešanās; } kavēšanās (1000);