DIY: Lumilikha ng isang SmartLock para sa Iyong Tahanan Na Nagbubukas Lamang Sa Iyong Smartphone

Ngayon, maraming mga kandado na magagamit sa merkado na nangangailangan ng ilang uri ng password upang buksan ito. Ang mga kandado ay napakahusay ngunit napakamahal. Kung kailangan nating gumawa ng isang kandado para sa isang maliit na layunin na naka-automate at naka-unlock o naka-lock nang walang anumang password ngunit may isang smartphone, magagawa natin ito sa pamamagitan ng paggamit ng ilang mga sangkap na madaling magagamit sa merkado.



Ang lock na ito ay magiging napakababa ng gastos at gagana nang perpekto sa isang maliit na sukat. Isang android application kakailanganin upang mapatakbo ang lock na ito. Ngayon, lumipat tayo patungo sa pag-set up ng ESP32, i-install ang mga kinakailangang package dito at paggawa ng ilang mga pagbabago sa hardware!

Awtomatikong DoorLock



Nang hindi nagsasayang ng anumang oras, magsimula tayong mag-aral ng mahahalagang konsepto at magtrabaho sa proyektong ito.



Paano Magagawa ang Android na Pinapatakbo ng SmartLock?

Hakbang 1: Pagtitipon sa Mga Bahagi

Bago simulan ang anumang proyekto, kung may takot na ma-stuck ka sa gitna ng proyekto at mag-aaksaya ng oras, mayroong isang mahusay na diskarte upang maiwasan ito. Gumawa ng isang kumpletong listahan ng lahat ng mga bahagi na kakailanganin mo sa proyekto at bilhin ang mga ito sa unang lugar. Ang sumusunod ay ang kumpletong listahan ng lahat ng mga bahagi na gagamitin namin sa proyektong ito. Ang lahat ng mga sangkap na ito ay madaling magagamit sa merkado.



  • ESP32
  • Jumper Wires
  • Servo motor
  • Mga tornilyo
  • Magkandado
  • Drill machine

Hakbang 2: Paggawa ng App

Habang gagawa kami ng isang smart lock na tatakbo ng isang mobile phone, kailangan naming bumuo ng isang android app na maglalaman ng isang pindutan. Sa pamamagitan ng pagpindot sa pindutang iyon magagawa naming buksan o isara ang smart lock. Dati, nakabuo kami ng maraming mga android application. Nakabuo na kami ng isang application na binubuo lamang ng isang pindutan dito. Ginagamit ang pindutan na ito upang magpadala ng data sa database. kung ang '1' ay naitulak sa firebase database, magbubukas ang switch lock at kung ang '0' ay itulak sa database na iyon, isasara ang lock.

Mangyaring mag-refer sa aming artikulo na pinangalanang Lumilikha ng isang Wireless On / OFF Switch Switch Para sa Iyong PC upang kumuha ng tulong upang bumuo ng iyong sariling android application na gagamitin upang mapatakbo ang smart lock.

Hakbang 3: Pagtitipon ng Mga Bahagi

Dahil mayroon kaming kumpletong listahan ng lahat ng mga sangkap na kailangan namin upang makumpleto ang proyektong ito, ilipat natin ang isang hakbang nang maaga at tipunin ang lahat ng mga bahagi.



Kunin ang servo motor at ikonekta ang Vcc at ground sa Vcc at ground ng ESP board ayon sa pagkakabanggit. Ikonekta ang PWM pin ng iyong servo motor sa pin 34 ng iyong Board ng ESP32 . Ngayon tingnan na mayroong isang gear-type knob sa isang servo motor. Alisin ang hawakan ng kandado sa pamamagitan ng pag-ikot nito at ayusin ang hawakan ng gear motor sa lock sa tulong ng ilang mga adhesives.

Ngayon, sa tulong ng drill machine, mag-drill ng ilang mga butas sa pintuan kung saan mo nais na ilagay ang smart lock na ito. Tiyaking drill mo ang mga butas sa isang paraan na ang mga butas ng lock ay magkakapatong sa mga butas sa pintuan, na ginagawang paraan upang maayos ang tornilyo.

Hakbang 4: Nagtatrabaho

Tulad ng nalalaman natin ngayon ang pangunahing ideya sa likod ng proyektong ito, ipaunawa sa amin kung paano gagana ang proyektong ito.

Ang ESP32 ang puso ng proyektong ito. Ang isang motor na servo ay nakakonekta sa board na ito at ang microcontroller na ito ay may koneksyon sa firebase database. Kapag ang pindutan sa app ay pinindot upang buksan ang lock, ang '1' ay itulak sa firebase database at kapag pinindot ang pindutan upang isara ang lock, ang '0' ay itulak sa firebase database. Binabasa ng ESP board ang halagang ito sa firebase database na tuloy-tuloy. Hangga't mayroong 0, ididirekta ng ESP32 ang servo motor na manatili sa paunang posisyon nito. Sa sandaling ang 1 ay dumating sa firebase, babasahin ito ng board ng ESP at sasabihin sa servo motor na gumawa ng isang pag-ikot na magbubukas ng kandado.

Hakbang 5: Pagsisimula Sa ESP32

Kung hindi ka pa nagtrabaho sa Arduino IDE dati, huwag mag-alala dahil ang isang hakbang-hakbang na pag-set up ng Arduino IDE ay ipinapakita sa ibaba.

  1. I-download ang pinakabagong bersyon ng Arduino IDE mula sa Arduino.
  2. Ikonekta ang iyong Arduino board sa PC at buksan ang Control Panel. Mag-click sa Hardware at Sound. Bukas na Mga Device at Printer at hanapin ang port kung saan nakakonekta ang iyong board. Sa aking kaso ito ay COM14 ngunit iba ito sa iba`t ibang mga computer.

    Paghanap ng Port

  3. Mag-click sa File at pagkatapos ay mag-click sa Mga Kagustuhan. Kopyahin ang sumusunod na link sa URL ng Karagdagang Board Manager. ' https://dl.espressif.com/dl/package_esp32_index.json '

    Mga Kagustuhan

  4. Ngayon, upang magamit ang ESP32 sa Arduino IDE, kailangan naming mag-import ng mga espesyal na aklatan na magpapahintulot sa amin na magsunog ng code sa ESP32 at magamit ito. ang dalawang aklatan na ito ay nakakabit sa link na ibinigay sa ibaba. Upang isama ang library, goto Sketch> Isama ang Library> Magdagdag ng ZIP Library . May lalabas na isang kahon. Hanapin ang ZIP folder sa iyong computer at i-click ang OK upang isama ang mga folder.

    Isama ang Library

  5. Ngayon goto Sketch> Isama ang Library> Pamahalaan ang Mga Aklatan.

    Pamahalaan ang Mga Aklatan

  6. Magbubukas ang isang Menu. Sa search bar, i-type Arduino JSON. Lilitaw ang isang listahan. I-install Arduino JSON ni Benoit Blanchon.

    Arduino JSON

  7. Ngayon mag-click sa Mga kasangkapan. Lilitaw ang isang dropdown menu. Itakda ang board sa Module ng Dev Dev.

    Setting Board

  8. Mag-click muli sa menu ng Tool at itakda ang port na napansin mo sa control panel dati.

    Setting Port

  9. Ngayon i-upload ang code na nakakabit sa link sa ibaba at mag-click sa pindutan ng pag-upload upang masunog ang code sa micro32troller ng ESP32.

    I-upload

Kaya't ngayon kapag na-upload mo ang code, maaaring maganap ang isang error. Ito ang pinakakaraniwang error na maaaring mangyari kung gumagamit ka ng isang bagong bersyon ng Arduino IDE at ng Arduino JSON. Ang mga sumusunod ay ang mga error na maaari mong makita sa screen.

Sa file na kasama mula sa C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, mula sa C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: Ang StaticJsonBuffer ay isang klase mula sa ArduinoJson 5. Mangyaring tingnan ang arduinojson.org/pag-upgrade upang malaman kung paano i-upgrade ang iyong programa sa ArduinoJson bersyon 6 StaticJsonBuffer jsonBuffer; ^ Sa file na kasama mula sa C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, mula sa C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: error: Ang StaticJsonBuffer ay isang klase mula sa ArduinoJson 5. Mangyaring tingnan ang arduinojson.org/pag-upgrade upang malaman kung paano i-upgrade ang iyong programa sa ArduinoJson bersyon 6 ibalik ang StaticJsonBuffer (). ParseObject (_data); ^ Maraming mga silid-aklatan ang nahanap para sa 'WiFi.h' Ginamit: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  library  WiFi Hindi nagamit: C:  Program Files ( x86)  Arduino  libraries  WiFi Paggamit ng library WiFi sa bersyon 1.0 sa folder: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Paggamit ng library IOXhop_FirebaseESP32-master sa folder: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Paggamit ng library HTTPClient sa bersyon 1.2 sa folder: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Paggamit ng library WiFiClientSecure sa bersyon 1.0 sa folder: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Paggamit ng library ArduinoJson sa bersyon 6.12.0 sa folder: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson exit status 1 Error sa pag-compile para sa board ng ESP32 Dev Module.

Walang dapat ikabahala dahil maaari nating alisin ang mga error na ito sa pamamagitan ng pagsunod sa ilang mga simpleng hakbang. Ang mga error na ito ay nagmumula dahil ang bagong bersyon ng Arduino JSON ay may ibang klase sa halip StaticJsonBuffer. Ito ang klase ng JSON 5. Kaya maaari lamang naming matanggal ang error na ito sa pamamagitan ng pag-downgrade ng bersyon ng Arduino JSON ng aming Arduino IDE. Pumunta lamang sa Sketch> Isama ang Library> Pamahalaan ang Mga Aklatan. Paghahanap para sa Arduino JSON ni Benoit Blanchon na na-install mo na dati. Uninstall muna ito at pagkatapos ay itakda ang bersyon nito sa 5.13.5. Ngayon na nagtatakda kami ng isang lumang bersyon ng Arduino JSON, muling i-install ito at muling buuin ang code. Sa oras na ito, ang iyong code ay matagumpay na makakabuo.

Upang mai-download ang code, mag-click dito

Hakbang 6: Code

ang code ng proyektong ito ay napaka-simple ngunit gayon pa man, ang ilang mga tipak nito ay ipinaliwanag sa ibaba.

1. Sa pagsisimula ng code, isasama namin ang tatlong mga aklatan. Ang una ay upang paganahin ang Wifi sa board ng ESP, pangalawa ay upang paganahin ang ESP na gumamit ng servo motor at ang pangatlo ay upang ikonekta ang board ng ESP sa firebase database. Pagkatapos nito, idaragdag namin ang host ng firebase, pagpapatotoo, pangalan ng aming lokal na koneksyon sa internet at ang password nito sa code. Matapos gawin iyon, lumikha ng isang bagay upang magamit ang servo motor.

#include // isama ang library na gagamit ng WiFi #include // isama ang library para sa servo motor #include // isama ang library upang kumonekta sa Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // palitan ang xxxxxxxxxx ng iyong firebase host dito #define FIREBASE_AUTH 'xxxxxxxxxx' / / palitan ang xxxxxxxxxx ng iyong firebase na pagpapatotoo dito # tukuyin ang WIFI_SSID 'xx code, xxxxxxxx' // palitan ang xxxxxxxxxx ng pangalan ng aming koneksyon sa Wifi #define WIFI_PASSWORD 'xxxxxxxxxx' // palitan ang xxxxxxxxxx ng iyong wifi password na Servo MyServer; // create object for servo motor int pos = 0; // paglikha ng variable int state; // paglikha ng variable

2. walang bisa ang pag-setup () ay isang pagpapaandar na tumatakbo nang isang beses lamang sa isang programa kapag ang microcontroller board ay pinapagana o ang pindutan ng paganahin ay pinindot. Ang baud rate ay nakatakda sa pagpapaandar na ito. Ang rate ng baud ay talagang ang bilis ng komunikasyon sa mga bits bawat segundo kung saan nakikipag-usap ang microcontroller sa mga panlabas na aparato. Ang servo motor ay konektado sa pin34 ng board ng ESP. nakasulat ang code sa pagpapaandar na ito upang ikonekta ang microcontroller sa lokal na koneksyon sa internet.

void setup () {Serial.begin (115200); // setting the baud rate myservo.attach (34); // ikonekta ang PWM pin ng servo motor sa pin34 ng ESP32 myservo.write (60); pagkaantala (1000); // kumonekta sa wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('pagkonekta'); habang (WiFi.status ()! = WL_CONNected) {Serial.print ('.'); pagkaantala (500); } Serial.println (); Serial.print ('konektado:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. walang bisa loop () ay isang pagpapaandar na tumatakbo muli at muli sa isang loop. Sa pagpapaandar na ito, sasabihin namin sa microcontroller, kung anong mga pagpapatakbo ang isasagawa at kung paano. Dito, binabasa ang data mula sa firebase at nakaimbak sa variable na pinangalanan estado . Kung ang estado ay may halagang '0' dito, ang posisyon ng servo motor ay nakatakda sa 8 degree. Kung ang halaga sa variable na estado ay katumbas ng '1', ang posisyon ng servo motor ay itatakda sa 55 degree.

void loop () {state = Serial.println (Firebase.getFloat ('motor')); // basahin ang data mula sa firebase // kung ang estado ay '0' papatayin ang DC motor kung (state == '0') {myservo.write (8); // itinakda ang posisyon ng pagkaantala ng servo motor (1000); // wait for onw second Serial.println ('Locked Lock'); } iba pa kung (estado == '1') {myservo.write (55); // magtakda ng bagong posisyon ng pagkaantala ng servo motor (1000); // maghintay para sa isang segundo Serial.println ('Door UnLocked'); } // hawakan ang error kung (Firebase.failed ()) {Serial.print ('setting / number failed:'); Serial.println (Firebase.error ()); bumalik; } pagkaantala (1000);