Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

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

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


Proses manufaktur

  1. Bank Vault
  2. Sirkuit Sensor Jarak Sederhana dan Bekerja dengan Aplikasi
  3. Pertimbangkan Masalah #1 Dengan Jaringan Sensor Cerdas Berbasis Bluetooth
  4. Cypress:Bluetooth MCU menghadirkan jaringan mesh dengan konektivitas ponsel cerdas di mana-mana
  5. Sensor pelacakan garis dengan RPi
  6. API sensor lingkungan dengan RPi
  7. Sensor jarak analog sederhana dengan antarmuka digital (untuk Raspberry Pi) [pembaruan terakhir:7 Feb 2014]
  8. Portenta dan Sensor Termokopel (dengan MAX6675)
  9. Pemantauan CO2 dengan Sensor K30
  10. Arduino dengan Bluetooth untuk Mengontrol LED!