Kunci Pintu Pintar Tanpa Kunci – Sistem Password Arduino & Android Bluetooth
Komponen dan Perlengkapan
- Arduino UNO – 1 unit
- Modul Bluetooth HC-05 – 1 unit
- Servo (Tower Pro MG996R) – 1 unit
Alat dan Mesin yang Diperlukan
Aplikasi dan Layanan Online
Tentang Proyek Ini
Pendahuluan
Kunci pintu pintar ini aman, sederhana, dan mudah untuk mengelola kunci rumah Anda. Kunci ini tidak membutuhkan kunci dan kunci dipasang di dalam pintu dan Anda dapat mengontrolnya dari luar pintu menggunakan Bluetooth. Karena kunci ada di dalam pintu tidak ada cara untuk membobol pintu oleh pencuri. Aplikasi Android diperlukan untuk membuka dan menutup kunci dan saya akan menjelaskan detail bagaimana Anda dapat mengembangkan aplikasi Android di bagian selanjutnya tutorial ini. Sebuah password dikirim ke kunci menggunakan aplikasi Android dan jika password cocok dengan password kunci yang telah diatur sebelumnya maka kunci akan terbuka dan mengirim umpan balik ke ponsel Anda seperti kunci terbuka.
Desain 3D Kunci Pintu
Semua bagian kunci dicetak 3D. Saya ingin mengucapkan terima kasih kepada pengguna Thingiverse ridercz untuk desain bagusnya. Dia merancang dan menerbitkan kunci pintu berbasis servo ini di thingiverse.com. Semua file kecuali Rack_Holder.stl diambil dari desainnya. Anda dapat mengunduh file dari sini atau dari Thingiverse.com. Beberapa file memiliki versi LT. Versi ringan membutuhkan lebih sedikit PLA dibandingkan versi normal dan memiliki kekuatan yang lebih rendah. Saya mencetak versi LT dan berfungsi baik. Saya menggunakan Anet A8 untuk mencetak semua bagian. Foto bagian yang dicetak dilampirkan.
Merakit Bagian Cetak 3D
Rakit semua bagian cetak satu per satu seperti yang ditunjukkan dalam foto. Anda juga dapat mengikuti petunjuk video yang dilampirkan di langkah pertama. Setelah merakit gunakan empat sekrup untuk mengikat semua bagian dengan erat.
Program Arduino untuk Kunci Pintu Terlindungi Password dengan Kontrol Bluetooth
Kode untuk kunci pintu pintar kontrol bluetooth sangat sederhana. Saya merancang aplikasi Android sedemikian rupa sehingga mengirimkan perintah dengan password. Sebenarnya saya menetapkan dua perintah, satu adalah "OPEN=" dan yang lain adalah "CLOSE=" dan password dapat berisi angka, huruf, simbol, atau kombinasi dari semuanya sesuai keinginan Anda. Dalam aplikasi saya menggunakan dua tombol satu untuk membuka pintu dan yang lain untuk menutup pintu. Ketika password diberikan ke kotak password dan tombol buka diklik maka aplikasi menggabungkan perintah "OPEN=" dengan password dan mengirimkannya ke Arduino. Saya menambahkan tanda '=' dengan perintah sehingga saya akan memisahkan perintah dan password dengan menggunakan tanda '=' ini. Setelah menerima string dari ponsel program Arduino memisahkan perintah dan password dari string yang diterima dan menyimpannya ke dalam dua variabel terpisah. Lalu periksa password terlebih dahulu, jika password cocok dengan password yang disimpan maka buka pintu untuk perintah "OPEN", dan tutup pintu untuk perintah "CLOSE". "=" membantu memisahkan perintah dan password. Sketsa Arduino lengkap diberikan di bawah ini.
Skematik
Koneksi antara komponen sangat sederhana. Pertama, hubungkan modul Bluetooth HC-05 ke Arduino. Perhatikan skematik. Pin TX pada papan Arduino terhubung ke pin RX pada modul Bluetooth dan pin RX pada Arduino terhubung ke pin TX pada modul Bluetooth.
Memasang Kunci pada Pintu
Saya harap Anda telah memprogram papan Arduino Anda dengan sketsa yang dilampirkan di langkah sebelumnya dan Anda telah menguji semua koneksi sesuai skematik. Jika Anda menyelesaikan semua langkah maka saatnya untuk menempatkan kunci di tempat yang sesuai pada pintu. Pertama, pasang kunci dengan empat sekrup. Lalu, pasang modul Bluetooth di tempat yang tepat pada kunci dan tambahkan sedikit lem panas untuk mengatur modul dengan erat dengan kunci. Setelah itu, tempatkan papan Arduino di sisi bawah kunci dan hubungkan semua kabel sesuai skematik. Setelah menempatkan kunci dan membuat koneksi Anda harus menyala-kan kunci. Saya menggunakan adapter dinding 5V, 1A untuk menyediakan daya pada rangkaian.
Pengembangan Aplikasi Android untuk Kunci Pintu Terlindungi Password
Saya akan menunjukkan kepada Anda bagaimana mengembangkan aplikasi Android Bluetooth menggunakan MIT App Inventor. Saya menggunakan App Inventor karena tidak memerlukan coding dan tidak perlu instalasi perangkat lunak. Anda hanya perlu akun Google. Kunjungi https://ai2.appinventor.mit.edu/, Anda akan diminta untuk masuk menggunakan akun Google.
Masuk ke App Inventor menggunakan gmail dan ikuti langkah-langkah di bawah ini:
- i. Terima syarat & ketentuan gambar 1
- ii. Klik 'take survey later' lalu 'continue' untuk menutup layar sambutan gambar 2, 3
- iii. Mulai proyek baru (tanpa spasi!) gambar 4
- iv. Beri nama proyek "BluetoothControlDoorLock" (tanpa spasi!) gambar 5
Anda sekarang berada di Designer, tempat Anda menyusun "antarmuka pengguna" aplikasi Anda (gambar 6). Jendela Designer adalah tempat Anda menyusun tampilan dan nuansa aplikasi Anda, dan menentukan fungsionalitas apa yang harus dimilikinya. Anda memilih hal-hal untuk antarmuka pengguna seperti Tombol, Gambar, Label, Kotak Teks, dan fungsionalitas seperti Text-to-Speech, Bluetooth, Sensor, dan GPS.
Sekarang, ikuti gambar 7 dan tambahkan List Picker ke viewer. Ganti namanya menjadi "Connect to Bluetooth Device" (gambar 8). Tambahkan satu Label, satu Kotak Teks Password, dan dua tombol yang ditunjukkan dalam gambar 10. Ubah properti teks komponen menjadi "Enter Password", "Open Door", dan "Close Door" masing-masing. Antarmuka Pengguna Akhir harus terlihat seperti gambar 11. Sekarang tambahkan Bluetooth Client ke viewer. Ini adalah komponen tidak terlihat dan tidak memiliki UI. Lihat Gambar 12.
Beralih ke Editor Blok
Saatnya memberitahu aplikasi Anda apa yang harus dilakukan! Klik "Blocks" untuk pindah ke Editor Blok (gambar 13). Pikirkan tombol Designer dan Blok seperti tab- Anda menggunakannya untuk bergerak maju mundur antara dua area App Inventor. Editor Blok adalah tempat Anda memprogram perilaku aplikasi Anda. Ada blok bawaan yang menangani hal-hal seperti matematika, logika, dan teks. Di bawahnya adalah blok yang menyertai setiap komponen dalam aplikasi Anda. Untuk mendapatkan blok untuk komponen tertentu untuk muncul di Editor Blok, Anda pertama-tama harus menambahkan komponen itu ke aplikasi Anda melalui Designer.
Mari kita, desain blok untuk List Picker. List Picker adalah elemen UI ketika diklik akan menampilkan daftar elemen yang sesuai di sini adalah perangkat Bluetooth yang dipasangkan. Kita harus menambahkan dua blok ListPicker.BeforePicking dan ListPicker.AfterPicking (gambar 14). Blok lengkap ditunjukkan dalam gambar 18 & 19.
Buat file apk
Desain kami selesai, sekarang kita perlu membangun file apk untuk ponsel Android kita. Klik menu build dan pilih "App(save .apk to my computer)". Tunggu sebentar. File apk akan diunduh ke folder unduhan default Anda. Instal dan gunakan.
Aplikasi Android Lebih Kaya Fitur
Dalam langkah sebelumnya saya telah menunjukkan kepada Anda bagaimana mengembangkan aplikasi bluetooth dasar di App Inventor. Tapi aplikasi itu tidak begitu ramah pengguna. Ini tidak akan menunjukkan pesan apa pun apakah pintu Anda terbuka atau tertutup atau bluetooth tidak dapat terhubung karena kesalahan. Saya melampirkan di sini aplikasi yang lebih canggih untuk proyek kami.
Ketika Anda menjalankan aplikasi Anda aplikasi ini memeriksa apakah radio bluetooth Anda diaktifkan atau tidak, jika tidak diaktifkan dialog pengaktifan bluetooth akan muncul. Klik yes untuk menyala-kan radio bluetooth Anda. Lalu pasangkan perangkat menggunakan tombol pair device. Lalu klik tombol connect, jika berhasil terhubung ke perangkat mana pun aplikasi akan menunjukkan alamat MAC dan nama perangkat yang terhubung. Masukkan password ke kotak password lalu klik tombol buka pintu, jika Anda memasukkan password yang benar pintu akan terbuka dan aplikasi akan menunjukkan pesan bahwa pintu Anda sekarang terbuka. Lalu masukkan password lagi jika Anda ingin menutup pintu. Jika Anda memberikan password yang salah, maka aplikasi akan menunjukkan pesan password salah.
File sumber App Inventor lengkap (BTcontrol.aia) dilampirkan bersama ini. Jika Anda tidak suka membuat aplikasi Anda sendiri atau memodifikasinya, cukup unduh BTcontrol.apk dan instal di ponsel Android Anda.
Anda juga dapat mengunduhnya dari Google Play Store menggunakan tautan: https://play.google.com/store/apps/details?id=appinventor.ai_khairul_uapstu.BTcontrol&hl=en
Untuk memodifikasi sumber klik menu "Projects" dan pilih "Import project (.aia) from my computer" yang ditunjukkan dalam gambar 24 dan telusuri file BTcontrol.aia dari komputer Anda. Setelah diimpor Anda dapat memodifikasinya dengan mudah.
Jika Anda ingin mengetahui lebih banyak tentang pengembangan aplikasi Android menggunakan App Inventor telusuri: https://appinventor.mit.edu/explore/ai2/tutorials.html. Anda juga dapat mencoba https://meta-guide.com/videography/100-best-appinventor-videos/
Kode
Sketsa Arduino
#include <Servo.h> Servo myservo; // create servo object to control a servo String inputString = ""; String command = ""; String value = ""; String password = "arduPi"; // this is the password for opening and closing your door // you can set any pasword you like using digit and symbols boolean stringComplete = false; void setup(){ //start serial connection Serial.begin(9600); // baud rate is 9600 must match with bluetooth //The String reserve() function allows you to allocate a buffer in memory for manipulating strings. inputString.reserve(50); // reserve 50 bytes in memory to save for string manipulation command.reserve(50); value.reserve(50); boolean stringOK = false; myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop(){ // if arduino receive a string termination character like \n stringComplete will set to true if (stringComplete) { delay(100); int pos = inputString.indexOf('='); if (pos > -1) { command = inputString.substring(0, pos); value = inputString.substring(pos+1, inputString.length()-1); if(!password.compareTo(value) && (command == "OPEN")){ openDoor(); Serial.println(" OPEN"); delay(100); } else if(!password.compareTo(value) && (command == "CLOSE")){ closeDoor(); Serial.println(" CLOSE"); delay(100); } else if(password.compareTo(value)){ Serial.println(" WRONG"); delay(100); } } inputString = ""; stringComplete = false; } } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); inputString += inChar; if (inChar == '\n' || inChar == '\r') { stringComplete = true; } } } void openDoor(){ myservo.write(0); delay(100); } void closeDoor(){ myservo.write(65); delay(100); } Bagian Kustom dan Penutup
Thingiverse
https://www.thingiverse.com/thing:2350856 CAD file on thingiverse.com
Skematik
Gambar skematik tersedia dalam dokumen proyek.