Membuat Pintu Kantor yang Mengunci Otomatis dengan Sensor Jarak Ponsel Cerdas
Ssst – ingin perlindungan berteknologi tinggi untuk kantor rumah Anda, atau kunci rahasia untuk “bengkel” Anda (oke, Anda mengerti, ini sebenarnya adalah ruang bawah tanah/ruang permainan) bahwa anak-anak tidak akan bisa mengetahuinya? Kami membantu Anda. Mari buat kunci pintar DIY yang otomatis mendeteksi saat Anda berada di sana, dan mengunci saat Anda tidak berada di sana.
Bagaimana cara kerjanya? TIDAK ADA YANG TAHU! Atau lebih khusus lagi, Bluetooth.
Konsep
Ponsel cerdas Anda adalah perangkat canggih yang terus-menerus mengungkapkan informasi tentang dirinya ke dunia luar; salah satu caranya adalah dengan Bluetooth.
Dalam mode penemuan, itu menyiarkan nomor identifikasi unik - tetapi bahkan ketika tidak secara khusus membiarkan dirinya ditemukan, apa pun yang mengetahui alamat itu dapat mencoba melakukan ping. Jika respons terdengar, itu akan menunjukkan apakah itu dalam jangkauan atau tidak.
Kami akan menyiapkan Raspberry Pi dengan adaptor Bluetooth untuk selalu waspada saat ponsel cerdas Anda berada di luar jangkauan, dan saat itu, relai akan beraksi dan mengunci pintu.
Anda Akan Membutuhkan
- Raspberry Pi – model apa pun dapat berfungsi karena ini bukan tugas intensif CPU, tetapi saya menggunakan model B yang lebih lama, dan pin GPIO mungkin sedikit berbeda pada model Anda. Lihat bagian pada mode papan di bawah ini. Anda juga memerlukan beberapa dasar seperti koneksi Ethernet kabel atau Wi-Fi yang dikonfigurasi; ditambah kartu SD dan kabel daya USB mikro.
- Adaptor USB Bluetooth. Adafruit menjual modul Bluetooth 4.0 BLE yang dikonfirmasi berfungsi (apa itu Bluetooth 4.0?), tetapi Anda harus menguji semua yang sudah Anda miliki sebelum membeli yang baru hanya untuk proyek ini. Saya menemukan adaptor mini Bluetooth standar lama yang saya beli di Jepang yang tampaknya berfungsi dengan baik. Kami tidak peduli dengan kecepatan transfer atau keandalan koneksi, karena yang kami lakukan hanyalah mengirimkan jabat tangan cepat untuk melihat apakah perangkat hidup dan sehat.
- Papan pemutus GPIO (“tukang sepatu”) dan kabel jumper. Anda dapat bekerja langsung dari pin pada Pi, tetapi jauh lebih mudah jika Anda memiliki label di setiap pin, dan harganya hanya $6.
- Papan estafet. Anda memiliki beragam pilihan di sini, dan apa pun akan berfungsi jika dirancang untuk digunakan dengan mikrokontroler dan dapat menggerakkan setidaknya 12 volt pada 5 amp. Saya telah menggunakan papan 4 saluran generik yang serupa dengan yang ini seharga sekitar $5, tetapi saya akan menganggap Anda tahu cara mengerjakannya.
- Kunci elektromagnet 12/24V, meskipun kunci solenoid elektronik juga dapat berfungsi. Yang saya beli memiliki daya tahan 180 KG dan dilengkapi dengan pelat pemasangan dan instruksi, dengan harga sekitar $35.
- Catu daya 12/24V. Kunci magnet harus memiliki catu daya terpisah – apa pun yang Anda lakukan, jangan coba menarik dayanya dari Pi.
- Aplikasi Lock.py Python, tetapi kami akan menulis ini seiring berjalannya waktu.
Bekerja dengan Bluetooth
Bluetooth adalah inti dari proyek ini, jadi mari kita mulai dengan memasang beberapa dukungan Bluetooth dan menguji adaptor kita. Anda dapat melakukannya langsung dari Pi, atau SSH dari jarak jauh (cara menyiapkan Windows ke SSH ke dalam Pi Anda).
sudo apt-get install bluez python-bluez
Masukkan dongle Anda jika Anda belum melakukannya, dan mari kita lihat apa yang dilaporkannya.
pengembang hcitool
Jika Anda memiliki sesuatu yang tercantum dalam output, Anda siap melakukannya. Selanjutnya kita akan menggunakan skrip Python untuk melakukan polling untuk perangkat Bluetooth terdekat, dan mengambil alamat perangkat yang unik. Kami hanya perlu melakukan ini sekali untuk setiap perangkat.
wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py python inquiry.py
Jika Anda melihat "0 perangkat ditemukan", Anda tidak memiliki dongle Bluetooth USB yang kompatibel, atau ponsel cerdas Anda tidak dapat ditemukan. Namun jangan putus asa:Saya menemukan bahwa saya harus benar-benar membuka halaman pengaturan Bluetooth di iPhone saya untuk memasukkannya ke mode penemuan, lalu ini terjadi:
Hebat, sekarang mari kita buat tahap pertama dari perangkat lunak kita yang melakukan deteksi. Buat aplikasi Python bernama detect.py , dan buka dengan Nano.
nano detect.py
Tempelkan kode contoh ini:
#!/usr/bin/python import bluetooth import time while True:print "Checking " + time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime()) result =bluetooth.lookup_name('78:7F:70:38:51:1B', timeout=5) if (hasil !=Tidak ada ):print "Pengguna ada" else:print "Pengguna di luar jangkauan" time.sleep(10)
dan sesuaikan baris berikut dengan alamat perangkat Bluetooth Anda:
result =bluetooth.lookup_name('78:7F:70:38:51:1B', timeout=5)
Tekan CTRL-X dan Y untuk menutup dan menyimpan. Jalankan kode yang sama, dan Anda melihat sesuatu seperti ini:
Kode tersebut harus sangat mudah dipahami meskipun Anda belum pernah menyentuh Python sebelumnya:kode ini memindai perangkat Bluetooth tertentu setiap 10 detik, dan mencetak pesan yang berbeda bergantung pada apakah kode itu ditemukan atau tidak. Alihkan Bluetooth di ponsel Anda untuk mensimulasikan pergerakan masuk dan keluar dari jangkauan (mungkin sekitar 4m pada kenyataannya). Anda dapat mengurangi atau menambah waktu di antara pemindaian, tetapi menurut saya 10 detik adalah waktu yang wajar untuk kemungkinan harus menunggu hingga pintu terbuka, yang merupakan tujuan utama dari keseluruhan proyek ini.
Saya harus menambahkan, saya tidak tahu tentang konsumsi daya untuk melakukan ini, tetapi saya akan menganggap ping perangkat lebih sering tentu akan menghabiskan lebih banyak daya. Saya belum melihat masalah kinerja yang jelas dalam pengujian, tetapi jika masa pakai baterai menjadi masalah serius bagi Anda, pertimbangkan untuk memiliki sakelar di dalam kantor Anda yang mengaktifkan dan menonaktifkan loop pemindaian, jadi setelah Anda berada di dalam, Anda dapat menjeda kunci sistem, lalu aktifkan kembali pemindaian saat Anda keluar.
Selamat, Anda sekarang memiliki aplikasi Python yang mengetahui kapan Anda berada dalam jangkauan, jadi kami dapat mulai menindaklanjutinya.
Mode Papan GPIO
Sebelum melanjutkan, Anda perlu mencari tahu mode papan mana yang akan Anda gunakan. Tidak ada jawaban benar atau salah, itu hanya mempengaruhi apakah Anda menentukan nomor pin literal atau nomor pin GPIO virtual.
Standarnya adalah menggunakan nomor pin literal ("mode papan"), dimulai dengan pin 1 di kiri bawah (jika melihat Pi dengan port USB di sebelah kanan). Pin 2 tepat di atasnya.
Namun, jika Anda memiliki papan breakout GPIO (“cobbler”), label yang Anda miliki berasal dari mode alternatif, yang disebut “BCM” (saluran Broadcom SOC), dan biasanya ditulis dengan awalan GPIO atau P pada nomor tersebut. Anda tidak benar-benar membutuhkan terobosan GPIO – itu hanya membuat segalanya lebih mudah. Jika Anda tidak memiliki papan breakout dan tidak ingin membelinya, gunakan diagram ini:
Perhatikan bahwa model asli B revisi 1, revisi 2, dan model B+ dan Pi2 semuanya memiliki pin out yang berbeda. Lihat pertanyaan StackExchange ini untuk diagram yang sesuai dengan papan Anda.
Dalam kode proyek ini, saya menggunakan sistem penomoran BCM GPIO yang sesuai dengan papan breakout Adafruit yang saya miliki. Modifikasi kecil diperlukan jika Anda ingin menggunakan mode pin literal.
Kawat dalam Relai
Pasang papan breakout, pastikan kabel dari pin 1 dan 2 (yang ada di sudut Pi Anda) terpasang ke 3v3 dan 5V0 pada breakout. Anda mungkin ingin mengeluarkan penguji tegangan untuk memeriksanya.
Sebelum melanjutkan, periksa apakah ada orang lain yang menggunakan relai khusus Anda dengan Raspberry Pi (atau temukan yang Anda tahu berfungsi sebelumnya). Beberapa mungkin memerlukan 5V untuk diaktifkan – tetapi RPi hanya dapat menyediakan 3.3V pada pin keluaran GPIO. Kebetulan, yang saya gunakan senang dengan 3.3V, jadi saya tidak memerlukan sirkuit tambahan, cukup 5V0 ke VCC , GND ke GND , dan GPIO pin 23 untuk input relai pertama .
Tutorial saya sebelumnya tentang GPIO menunjukkan cara memasang rangkaian transistor untuk meningkatkan 3.3V ke 5V penuh jika Anda perlu (sebenarnya, saya menggunakan papan relai yang sama untuk tutorial itu, tetapi ternyata saya tidak membutuhkan 5V setelah semua).
Tidak perlu memasang elektromagnet, karena Anda akan dapat mendengar bunyi klik saat relai menyala.
Selanjutnya, mari ambil beberapa kode untuk berinteraksi dengan port GPIO.
Kami akan mulai dengan menguji di luar Python untuk memastikan semuanya bekerja pada port itu sendiri. Instal wiringPi, yang memberi Anda beberapa alat baris perintah yang berguna.
git clone git://git.drogon.net/wiringPi cd wiringPi ./build
Setelah terinstal, konfigurasikan GPIO pin 23 menjadi output.
gpio -g mode 23 keluar
Sekarang, lakukan pemindaian cepat semua port untuk mengonfirmasi
gpio -g readall
Anda akan memiliki sesuatu yang mirip dengan ini, meskipun milik Anda mungkin lebih panjang pada model B+ atau Pi2 karena memiliki lebih banyak pin GPIO:
Untuk lebih detail:Membuat Pintu Kantor Penguncian Otomatis dengan Sensor Jarak Smartphone