DIY: Membuat SmartLock untuk Rumah Anda yang Hanya Boleh Dibuka Dengan Telefon Pintar Anda

Pada masa ini, terdapat banyak kunci yang terdapat di pasaran yang memerlukan semacam kata laluan untuk membukanya. Kunci ini sangat cekap tetapi sangat mahal. Sekiranya kita perlu membuat kunci untuk tujuan skala kecil yang automatik dan tidak terkunci atau terkunci tanpa kata laluan tetapi dengan telefon pintar, kita dapat membuatnya dengan menggunakan beberapa komponen yang mudah didapati di pasaran.



Kunci ini akan berharga rendah dan akan berfungsi dengan sempurna pada skala kecil. Seorang aplikasi android diperlukan untuk mengendalikan kunci ini. Sekarang, mari menuju ke arah penyediaan ESP32, memasang pakej yang diperlukan dan membuat perubahan perkakasan tertentu!

Kunci Pintu Automatik



Tanpa membuang masa, mari kita mula mempelajari konsep penting dan mengerjakan projek ini.



Bagaimana Membuat SmartLock yang Dikendalikan Android?

Langkah 1: Mengumpulkan Komponen

Sebelum memulakan sesuatu projek, jika ada ketakutan bahawa anda akan terjebak di tengah-tengah projek dan membuang masa, ada pendekatan yang sangat baik untuk menghindarinya. Buat senarai lengkap semua komponen yang anda perlukan dalam projek tersebut dan beli terlebih dahulu. Berikut adalah senarai lengkap semua komponen yang akan kita gunakan dalam projek ini. Semua komponen ini mudah didapati di pasaran.



  • ESP32
  • Wayar Pelompat
  • Motor servo
  • Skru
  • Kunci
  • Mesin gerudi

Langkah 2: Membuat Aplikasi

Oleh kerana kita akan membuat kunci pintar yang akan dikendalikan oleh telefon bimbit, kita perlu mengembangkan aplikasi android yang akan mengandungi butang. Dengan menekan butang itu kita akan dapat membuka atau menutup kunci pintar. Sebelum ini, kami telah mengembangkan beberapa aplikasi android. Kami telah mengembangkan aplikasi yang hanya terdiri dari satu butang di dalamnya. Butang ini digunakan untuk menghantar data ke dalam pangkalan data. jika ‘1’ didorong ke dalam pangkalan data firebase, kunci suis akan terbuka dan jika ‘0’ didorong ke dalam pangkalan data itu, kunci akan ditutup.

Sila rujuk artikel kami yang diberi nama Membuat Suis Suis Hidup / Mati Tanpa Wayar Untuk PC Anda untuk membantu mengembangkan aplikasi android anda sendiri yang akan digunakan untuk mengendalikan kunci pintar.

Langkah 3: Menyusun Komponen

Oleh kerana kita mempunyai senarai lengkap semua komponen yang kita perlukan untuk menyelesaikan projek ini, mari kita bergerak selangkah lebih maju dan mengumpulkan semua komponen bersama-sama.



Ambil servo motor dan sambungkan Vcc dan ground ke Vcc dan ground board ESP masing-masing. Sambungkan pin PWM motor servo anda ke pin 34 anda Papan ESP32 . Sekarang lihat bahawa ada tombol jenis gear pada motor servo. Keluarkan pemegang kunci dengan memutarnya dan pasangkan tombol motor gear di kunci dengan bantuan beberapa pelekat.

Sekarang, dengan bantuan mesin gerudi, gerudi beberapa lubang di pintu di mana anda ingin meletakkan kunci pintar ini. Pastikan bahawa anda mengebor lubang sedemikian rupa sehingga lubang kunci bertindih dengan lubang di pintu, sehingga skru dapat dipasang.

Langkah 4: Bekerja

Oleh kerana sekarang kita mengetahui idea utama di sebalik projek ini, marilah kita memahami bagaimana projek ini berjalan.

ESP32 adalah nadi projek ini. Motor servo disambungkan ke papan ini dan pengawal mikro ini mempunyai sambungan ke pangkalan data firebase. Apabila butang dalam aplikasi ditekan untuk membuka kunci, ‘1’ didorong ke dalam pangkalan data firebase dan ketika butang ditekan untuk menutup kunci, ‘0’ didorong ke dalam pangkalan data firebase. Papan ESP membaca nilai ini dalam pangkalan data firebase secara berterusan. Selagi ada 0, ESP32 akan mengarahkan motor servo untuk tetap berada di kedudukan awal. Sebaik sahaja 1 masuk ke pangkalan api, papan ESP akan membacanya dan memberitahu motor servo untuk membuat putaran yang akan membuka kunci.

Langkah 5: Bermula dengan ESP32

Sekiranya anda belum mengusahakan Arduino IDE sebelum ini, jangan risau kerana langkah demi langkah untuk menyiapkan Arduino IDE ditunjukkan di bawah.

  1. Muat turun versi terbaru dari Arduino IDE dari Arduino.
  2. Sambungkan papan Arduino anda ke PC dan buka Panel Kawalan. Klik pada Perkakasan dan Suara. Sekarang dibuka Peranti dan Pencetak dan cari port yang menghubungkan papan anda. Dalam kes saya adalah COM14 tetapi berbeza dalam komputer yang berbeza.

    Mencari Pelabuhan

  3. Klik pada Fail dan kemudian klik pada Pilihan. Salin pautan berikut di URL Pengurus Lembaga Tambahan. ' https://dl.espressif.com/dl/package_esp32_index.json '

    Keutamaan

  4. Sekarang, untuk menggunakan ESP32 dengan Arduino IDE, kita perlu mengimport perpustakaan khas yang akan membolehkan kita membakar kod pada ESP32 dan menggunakannya. kedua-dua perpustakaan ini dilampirkan dalam pautan yang diberikan di bawah. Untuk memasukkan perpustakaan, goto Lakarkan> Sertakan Perpustakaan> Tambahkan Perpustakaan ZIP . Kotak akan muncul. Cari folder ZIP di komputer anda dan klik OK untuk memasukkan folder.

    Sertakan Perpustakaan

  5. Sekarang pergi Lakarkan> Sertakan Perpustakaan> Urus Perpustakaan.

    Urus Perpustakaan

  6. Menu akan dibuka. Di bar carian, taipkan Arduino JSON. Senarai akan muncul. Pasang Arduino JSON oleh Benoit Blanchon.

    Arduino JSON

  7. Sekarang klik pada Alat. Menu lungsur turun akan muncul. Tetapkan papan ke Modul Dev ESP.

    Menetapkan Papan

  8. Klik pada menu Alat sekali lagi dan tetapkan port yang anda perhatikan di panel kawalan sebelumnya.

    Menetapkan Pelabuhan

  9. Sekarang Muat naik kod yang dilampirkan dalam pautan di bawah dan klik pada butang muat naik untuk membakar kod pada mikrokontroler ESP32.

    Muat naik

Jadi sekarang apabila anda akan memuat naik kod, kesalahan mungkin berlaku. Ini adalah ralat yang paling biasa yang mungkin berlaku jika anda menggunakan versi baru Arduino IDE dan Arduino JSON. Berikut adalah kesalahan yang mungkin anda lihat di skrin.

Dalam fail yang disertakan dari C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, dari C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: ralat: StaticJsonBuffer adalah kelas dari ArduinoJson 5. Sila lihat arduinojson.org/upgrade untuk mengetahui cara menaik taraf program anda ke ArduinoJson versi 6 StaticJsonBuffer jsonBuffer; ^ Dalam fail yang disertakan dari C:  Users  Pro  Documents  Arduino  library  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, dari 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 adalah kelas dari ArduinoJson 5. Sila lihat arduinojson.org/upgrade untuk mengetahui cara menaik taraf program anda ke ArduinoJson versi 6 mengembalikan StaticJsonBuffer (). ParseObject (_data); ^ Terdapat banyak perpustakaan untuk 'WiFi.h' Digunakan: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFi Tidak digunakan: C:  Program Files ( x86)  Arduino  library  WiFi Menggunakan perpustakaan WiFi pada versi 1.0 dalam folder: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFi Menggunakan perpustakaan IOXhop_FirebaseESP32-master dalam folder: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Menggunakan library HTTPClient pada versi 1.2 dalam folder: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  HTTPClient Menggunakan perpustakaan WiFiClientSecure pada versi 1.0 dalam folder: C:  Users  Pro  AppData  Local  Arduino15  package  esp32  hardware  esp32  1.0.2  library  WiFiClientSecure Menggunakan perpustakaan ArduinoJson di versi 6.12.0 dalam folder: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson exit status 1 Ralat menyusun untuk modul ESP32 Dev Module.

Tidak ada yang perlu dikhawatirkan kerana kami dapat menghilangkan kesalahan ini dengan mengikuti beberapa langkah mudah. Kesalahan ini timbul kerana versi baru Arduino JSON mempunyai kelas lain daripada StaticJsonBuffer. Ini adalah kelas JSON 5. Oleh itu, kita boleh menghapuskan ralat ini dengan menurunkan versi Arduino JSON dari IDE Arduino kami. Cukup ke Lakarkan> Sertakan Perpustakaan> Urus Perpustakaan. Carian untuk Arduino JSON oleh Benoit Blanchon yang telah anda pasangkan sebelumnya. Nyahpasang terlebih dahulu dan kemudian tetapkan versi ke 5.13.5. Sekarang kerana kami telah menetapkan versi lama Arduino JSON, pasang semula dan kumpulkan semula kodnya. Kali ini, kod anda akan berjaya disusun.

Untuk memuat turun kod, klik di sini.

Langkah 6: Kod

kod projek ini sangat mudah tetapi masih ada beberapa bahagian yang dijelaskan di bawah.

1. Pada permulaan kod, kami akan memasukkan tiga perpustakaan. Yang pertama adalah mengaktifkan Wifi pada papan ESP, yang kedua adalah untuk membolehkan ESP menggunakan servo motor dan yang ketiga adalah untuk menghubungkan papan ESP ke pangkalan data firebase. Selepas itu, kami akan menambahkan host firebase, pengesahan, nama sambungan internet tempatan kami dan kata laluannya dalam kod. Setelah melakukan itu, buat objek untuk menggunakan motor servo.

#include // include library untuk menggunakan WiFi #include // include library for servo motor #include // include library to connect to Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // ganti xxxxxxxxxx oleh host Firebase anda di sini #define FIREBASE_AUTH 'xxxxxxxxxx' / / ganti xxxxxxxxxx dengan pengesahan firebase anda di sini # tentukan WIFI_SSID 'kod xx, xxxxxxxx' // ganti xxxxxxxxxx dengan nama sambungan Wifi kami # tentukan WIFI_PASSWORD 'xxxxxxxxxx' // ganti xxxxxxxxxx dengan kata laluan wifi anda Servo myservo; // buat objek untuk servo motor int pos = 0; // mewujudkan keadaan int berubah-ubah; // mencipta pemboleh ubah

2. persediaan tidak sah () adalah fungsi yang dijalankan hanya sekali dalam program apabila papan mikrokontroler dihidupkan atau butang aktif ditekan. Kadar baud ditetapkan dalam fungsi ini. Baud rate sebenarnya adalah kelajuan komunikasi dalam bit sesaat di mana mikrokontroler berkomunikasi dengan peranti luaran. Motor servo disambungkan ke pin34 papan ESP. kod ditulis dalam fungsi ini untuk menghubungkan mikrokontroler ke sambungan internet tempatan.

persediaan tidak sah () {Serial.begin (115200); // menetapkan kadar baud myservo.attach (34); // sambungkan pin PWM motor servo ke pin34 ESP32 myservo.write (60); kelewatan (1000); // sambung ke wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('menyambung'); sementara (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); kelewatan (500); } Bersiri.println (); Serial.print ('bersambung:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. gelung kosong () adalah fungsi yang berjalan berulang-ulang dalam satu gelung. Dalam fungsi ini, kami memberitahu mikrokontroler, operasi apa yang harus dijalankan dan bagaimana. Di sini, data sedang dibaca dari firebase dan disimpan di dalam pemboleh ubah bernama negeri . Sekiranya keadaan mempunyai nilai ‘0’ di dalamnya, kedudukan motor servo ditetapkan pada 8 darjah. Sekiranya nilai dalam keadaan berubah-ubah sama dengan '1', kedudukan motor servo akan ditetapkan ke 55 darjah.

gelung void () {state = Serial.println (Firebase.getFloat ('motor')); // baca data dari firebase // jika keadaan '0' motor DC akan mati jika (state == '0') {myservo.write (8); // tetapkan kedudukan kelewatan motor servo (1000); // tunggu Serial.println kedua ('Door Locked'); } lain jika (state == '1') {myservo.write (55); // tetapkan kedudukan baru kelewatan motor servo (1000); // tunggu satu saat Serial.println ('Door UnLocked'); } // ralat menangani jika (Firebase.failed ()) {Serial.print ('setting / number gagal:'); Serial.println (Firebase.error ()); kembali; } kelewatan (1000);