Isi kandungan:

Cermin Pengecaman Muka Dengan Petak Rahsia: 15 Langkah (dengan Gambar)
Cermin Pengecaman Muka Dengan Petak Rahsia: 15 Langkah (dengan Gambar)

Video: Cermin Pengecaman Muka Dengan Petak Rahsia: 15 Langkah (dengan Gambar)

Video: Cermin Pengecaman Muka Dengan Petak Rahsia: 15 Langkah (dengan Gambar)
Video: Ciyeyy Laming setiap hari keluar dengan talent baru, baju pun sama warna 😜 #aiteam 2024, Julai
Anonim
Cermin Pengecaman Muka Dengan Ruang Rahsia
Cermin Pengecaman Muka Dengan Ruang Rahsia
Cermin Pengecaman Muka Dengan Ruang Rahsia
Cermin Pengecaman Muka Dengan Ruang Rahsia
Cermin Pengecaman Muka Dengan Ruang Rahsia
Cermin Pengecaman Muka Dengan Ruang Rahsia

Saya selalu tertarik dengan ruang rahsia yang sentiasa kreatif yang digunakan dalam cerita, filem, dan seumpamanya. Oleh itu, ketika saya melihat Peraduan Petak Rahsia, saya memutuskan untuk bereksperimen dengan idea itu sendiri dan membuat cermin biasa yang membuka laci sisi rahsia apabila orang yang tepat melihatnya.

Dengan menggunakan Raspberry Pi, beberapa pengetahuan tentang pengaturcaraan python, dan kelas kedai kelas 8, kita dapat membuat alat spiffy ini untuk menyembunyikan objek dengan pandangan yang hanya dapat diakses oleh pengguna yang betul.

Saya ingin mengucapkan terima kasih khas kepada orang / platform ini di mana saya mendapat maklumat dan sumber dari saya:

TeCoEd - Saluran Youtube

Emmet dari PiMyLifeUp

MJRoBot di Hackster.io (profil)

Gaven MacDonald - Saluran Youtube

Tucker Shannon on Thingiverse (profil)

Bekalan

Bekalan Bingkai:

  • Papan Kayu (Dimensi papan ini 42 "x 7.5" x 5/16 ")
  • Bingkai Gambar Pensil (dengan kaca)
  • Cat semburan
  • Pelekat Reflektif Sehala
  • Pembersih Kaca & Kain
  • Kayu MDF

Bekalan Pengecaman Muka:

  • Raspberry Pi (Saya menggunakan Pi 3 B + tetapi ada pilihan lain)
  • Modul Kamera
  • Motor Stepper

Alat:

  • Gergaji Meja
  • Jig Saw
  • Kertas pasir Kayu
  • Pita Lek
  • Mengukur
  • Gunting
  • Botol sembur
  • Pencetak 3D
  • Lem Super

Langkah 1: Potong Bingkai Kotak

Potongan untuk Bingkai Kotak
Potongan untuk Bingkai Kotak
Potongan untuk Bingkai Kotak
Potongan untuk Bingkai Kotak
Potongan untuk Rangka Kotak
Potongan untuk Rangka Kotak
Potongan untuk Rangka Kotak
Potongan untuk Rangka Kotak

Saya membeli bingkai gambar dari kedai terpakai. Sebagai amaran, pastikan bahawa papan yang membentuk bingkai selebar sekurang-kurangnya 1 1/2 . Ini supaya anda dapat merekatkan papan kayu lain di dalamnya dengan cukup ruang untuk bekerja. Juga, pastikan kaca masuk bingkainya benar-benar jelas. Saya membeli frosted secara tidak sengaja dan kemudian harus membeli bingkai lain hanya untuk kaca bening. Kerana bingkai saya digunakan, ukuran untuk bingkai kotak mungkin berbeza-beza.

  • Letakkan bingkai dalam orientasi potret. Ukur sisi panjang (LS) sisi lubang kaca pada bingkai dengan tambahan ½ "di bahagian atas dan bawah. (iaitu tambahkan satu inci ke sisi panjang pengukuran lubang kaca. Catat ini dan labelkan LSM (Pengukuran Sisi Panjang).
  • Begitu juga, ukur bahagian atas lubang dan tambahkan tambahan 1”. Catat ini dan labelkan SSM (Pengukuran Sisi Pendek).
  • Dapatkan papan anda dan dengan gergaji meja, potong dua LSM x 2 "dan dua SSM x 2".
  • Ambil salah satu potongan LSM dan ukur segiempat tepat 2 "x1" yaitu 1 "dari bawah dan ½" dari sisi kiri dan kanan (seperti yang ditunjukkan pada gambar 3).
  • Gunakan jigsaw untuk memotong lubang. Kemudian gunakan kertas pasir untuk pasir di tepi.

Langkah 2: Potong Laci

Potongan untuk Laci
Potongan untuk Laci
Potongan untuk Laci
Potongan untuk Laci
Potongan untuk Laci
Potongan untuk Laci
Potongan untuk Laci
Potongan untuk Laci

Sekarang kita akan mula membina laci (a.k.a Secret Compartment).

  • Potong dua sisi 4 "x 1", 3 "x 1" (tepi belakang), 4 "x 1" (tepi depan), dan 4 "x 3" (platform).
  • Lekatkan sisi 4 "x 1" pertama di sisi platform 4 ". Saya meletakkan beberapa kertas yang dilipat di bawah sisi platform sehingga sedikit terangkat, dengan cara ini tidak akan menyeret lubang yang saya potong di papan LS. Tetapkan hingga kering selama 30 minit.
  • Begitu juga, lekatkan 3 "x 1" di sepanjang tepi platform 3 ". Tetapkan hingga kering selama 30 minit. Kemudian lekatkan sisi 4 "x 1" kedua di seberang yang pertama. Tetapkan hingga kering selama 30 minit.
  • Ketepikan tepi depan buat masa ini. Ini akan menjadi perkara terakhir yang terpaku pada laci.
  • Setelah selesai, periksa untuk melihat apakah ia masuk ke lubang yang anda jigsaw ke papan LSM. Sekiranya tidak, pasangkan lubang sehingga laci masuk dan keluar dengan mudah, dan tidak ada seretan.

Langkah 3: Menempatkan Bingkai Bersama

Menempatkan Bingkai Bersama
Menempatkan Bingkai Bersama
Menempatkan Bingkai Bersama
Menempatkan Bingkai Bersama
Menempatkan Bingkai Bersama
Menempatkan Bingkai Bersama

Dengan semua bahagian yang lengkap, kita dapat mulai memasang keseluruhan bingkai.

  • Lekatkan papan LSM yang berpusat pada lubang kaca dengan ½”di setiap sisi. Pastikan ia terpaku dengan ½”dari lubang (seperti yang ditunjukkan pada gambar 1). Tetapkan hingga kering selama 30 minit.
  • Lekatkan papan SSM pertama dengan tepi menyentuh bahagian dalam papan LSM yang baru dilekatkan. (Gunakan pembaris untuk memastikan ia dilekatkan pada lurus). Tetapkan hingga kering selama 30 minit.
  • Ambil bahagian LSM yang lain dan gam yang serupa dengan yang pertama. Pastikan ia berada jauh dari lubang dan SSM yang baru dipasang terpaku di bahagian dalam papan. Tetapkan hingga kering selama 30 minit.
  • Lekatkan SSM terakhir di bahagian atas. Oleh kerana anda mempunyai dua LSM di kedua sisi, bergantung pada seberapa lurus anda memasangkannya, anda mungkin perlu mengemaskan sisi SSM ke bawah untuk memastikannya sesuai (pemotongan saya kadang-kadang mati). Tetapkan hingga kering selama 30 minit.
  • Ukur ruang kecil antara bahagian bawah laci dan bingkai. Potong sekeping kayu MDF dengan ukuran ini, dengan ukuran 4 ". Anda ingin membuat potongan ini dekat dengan laci tetapi tidak menyentuhnya. Ini bertujuan untuk menyokong laci dengan geseran minimum.
  • Setelah semuanya selesai, saya menyemburkan cat bingkai supaya semua kepingannya sepadan.

Langkah 4: Untuk Cermin

Untuk Cermin
Untuk Cermin
Untuk Cermin
Untuk Cermin
Untuk Cermin
Untuk Cermin
Untuk Cermin
Untuk Cermin

Pelekat filem sehala yang saya beli dari Amazon adalah sekitar $ 10. Terdapat kualiti yang lebih baik yang sedikit lebih mahal jika anda berminat. Yang saya gunakan mencerminkan tetapi anda boleh mengatakan bahawa ia bukan cermin biasa yang akan anda lihat di rumah. Yang lebih mahal akan membuat anda kelihatan.

  • Bersihkan gelas dengan pembersih kaca di kedua-dua belah pihak.
  • Buka pelekat sehala dan letakkan gelas di atasnya. Potong pelekat sehingga terdapat sekurang-kurangnya ½”lebihan pada setiap sisi kaca.
  • Ketepikan gelas dan basahkan satu sisi dengan air. Kemudian kupas lapisan plastik dari pelekat sehala dan semburkan bahagian yang baru terdedah dengan air.
  • Letakkan bahagian kaca yang basah di bahagian pelekat yang basah. Biarkan selama 30 minit.
  • Balikkan dan gunakan ibu jari anda untuk meratakan gelembung antara pelekat dan kaca. Kemudian potong lebihan pelekat dari sekitar tepinya.

Langkah 5: Pasang Raspbian Stretch

Ini adalah kali pertama saya menyelami persekitaran Raspberry Pi, saya mula mencari arahan mengenai cara memasang OS. Saya akhirnya menemui tutorial langsung di Youtube oleh TeCoEd yang melalui proses pemasangan Stretch pada kad SD (dengan pengenalan yang agak indah juga). Berikut adalah pautan ke tutorial itu:

Pada dasarnya, yang perlu anda lakukan ialah:

  • Format kad SD dengan memilih Pemacu anda> Alat Pemacu >> Format. Muat turun fail ZIP untuk Raspian Stretch (terdapat di sini:
  • Flash gambar OS ke Kad SD. TeCoEd menggunakan Win32 Disk Imager untuk menyelesaikannya. Saya akhirnya memasang balenaEtcher yang kelihatan sedikit lebih mudah. (Inilah pautan muat turun untuk balenaEtcher:
  • Setelah di balenaEtcher pilih "Flash From File" dan pilih fail ZIP yang telah dimuat turun sebelumnya. Seterusnya, pilih kad SD yang dikehendaki (jika tidak dipilih secara automatik). Kemudian tekan butang flash berair dan tunggu sihir itu berlaku.

Setelah dipasang pada kad SD anda boleh memasukkannya ke dalam Raspberry Pi dan melalui proses penyediaan Pi generik.

Langkah 6: Pasang OpenCV

Sekarang ke bahagian yang lebih berorientasikan Pengiktirafan Muka. Untuk mengenali wajah, kita mesti memuat turun perpustakaan OpenCV yang mengandungi sebilangan besar alat untuk berfungsi dengan penglihatan komputer.

Memasang OpenCV adalah bahagian paling sukar bagi aspek perisian bagi saya. Tetapi setelah mengikuti banyak arahan saya akhirnya menemui tutorial oleh Emmet dari PiMyLifeUp yang melakukan silap mata yang terdapat di sini:

Saya tidak akan melalui langkah-langkah ini kerana anda akan lebih sesuai mengikutinya dari pautan (dengan penjelasan yang diberikan dan keupayaan untuk menyalin dan menampal terus dari laman web dengan lebih mudah).

Langkah 7: Aktifkan / Uji Kamera

Dayakan / Uji Kamera
Dayakan / Uji Kamera
Dayakan / Uji Kamera
Dayakan / Uji Kamera

Setelah memasang OpenCV, sisa perjalanan saya diselesaikan dengan menggunakan tutorial oleh MJRoBot di Hackster.io yang terdapat di sini:

Sebelum kita memulakan, saya ingin mengingatkan anda bahawa saya bukan pencipta skrip asal tetapi akhirnya mengubahsuai sebahagian dari skrip ini.

Untuk memulakan, kita harus menguji kamera untuk memastikan kita dapat menangkap video di layar. Saya menghabiskan kira-kira satu jam untuk mencuba skrip yang disediakan di Langkah 3 MJRoBot. Seperti kehidupan, kita sebenarnya perlu mengaktifkan kamera pada Raspberry Pi (ternyata mungkin idea yang baik untuk membaca arahan yang disediakan… mmm nah). Oleh itu, setelah menyambungkan Kamera ke port yang betul, ikuti langkah berikut:

  • Buka terminal arahan dan ketik sudo raspi-config
  • Pilih "Aktifkan Kamera" (ini mungkin terdapat di bawah pilihan peranti)
  • Tekan "Enter"
  • Pergi ke "Selesai" Dan anda akan diminta untuk menghidupkan semula

Kemudian ikuti langkah berikut:

  • Pergi ke Menu Utama Raspberry (kiri atas)
  • Keutamaan
  • Konfigurasi Pi Raspberry
  • Antara muka
  • Kemudian di Kamera, pilih "Diaktifkan"
  • Kemudian "OK"

Sekarang anda harus berjaya menjalankan skrip ini dari tutorial MJRoBot untuk menguji kamera (ingat bahawa semua kod ini dan keterangan yang lebih mendalam terdapat di pautan yang disediakan di atas ke tutorial MJRobot):

import numpy sebagai np

import cv2 cap = cv2. VideoCapture (0) cap.set (3, 640) # set Width cap.set (4, 480) # set Height while (True): ret, frame = cap.read () frame = cv2. flip (frame, -1) # Balikkan kamera dengan warna kelabu secara menegak = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('grey', grey) k = cv2.waitKey (30) & 0xff jika k == 27: # tekan 'ESC' untuk berhenti break cap. Lepaskan () cv2.destroyAllWindows ()

Kod sebelumnya harus memaparkan dua tingkap, satu berwarna dan satu lagi dalam skala kelabu. Sekiranya anda berjaya sejauh ini, saya rasa anda layak mendapat sandwic yang bagus.

Langkah 8: Mengumpulkan Data dan Data Latihan

Mengumpulkan Data dan Data Latihan
Mengumpulkan Data dan Data Latihan
Mengumpulkan Data dan Data Latihan
Mengumpulkan Data dan Data Latihan
Mengumpulkan Data dan Data Latihan
Mengumpulkan Data dan Data Latihan

Dalam tutorial yang disediakan, penulis akan membahas proses kod yang akan segera diberikan, tetapi kerana ini adalah petunjuk bagaimana cermin ini dibuat, saya tidak akan membahas sejarah dan mekanik yang rumit. Namun, saya mengesyorkan agar anda menghabiskan sebulan untuk membaca mengenai dua perkara ini kerana ia dapat melayan fikiran anda dengan baik.

Terdapat hampir tiga skrip lagi untuk dijalankan sebelum kita dapat membuat semua ini berfungsi. Yang pertama adalah untuk mengumpulkan data, yang kedua adalah untuk melatihnya dan yang terakhir sebenarnya untuk pengiktirafan. Mengumpulkan data memerlukan gambar sebenar wajah diambil dan disimpan di tempat tertentu untuk latihan. Pembuat kod ini menjadikannya sangat mudah untuk menyelesaikan semua ini, jadi saya cadangkan untuk mengikuti arahan ini untuk mengelakkan sakit kepala.

Buka baris arahan dan buat direktori baru yang menamakannya sesuatu yang menyeronokkan (saya memanggil saya FaceRec)

mkdir FaceRec

Sekarang, ubah direktori ke FaceRec dan buat subdirektori yang pasti akan menamakannya set data

cd FaceRec

set data mkdir

Semasa kita melakukannya, kita juga boleh menjadikan subdirektori lain bernama pelatih

pelatih mkdir

Sekarang anda boleh menjalankan dan mengikuti arahan skrip pertama yang akan menangkap gambar pengguna. (Cuma, pastikan memasukkan ID pengguna sama ada 1, 2, 3 dll.)

import cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set cam.set lebar video (4, 480) # tetapkan ketinggian video face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Untuk setiap orang, masukkan satu nombor numerik face_id = input ('\ n masukkan id pengguna akhir tekan ==>') cetak ("\ n [INFO] Memulakan tangkapan wajah. Lihat kamera dan tunggu …") # Memulakan jumlah muka persampelan individu hitung = 0 sementara (Benar): ret, img = cam.read () img = cv2.flip (img, -1) # flip gambar video kelabu menegak = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) wajah = face_detector.detectMultiScale (kelabu, 1.3, 5) untuk (x, y, w, h) di wajah: cv2. segi empat tepat (img, (x, y), (x + w, y + h), (255, 0, 0), 2) hitung + = 1 # Simpan gambar yang ditangkap ke dalam folder set data cv2.imwrite ("dataset / User." + Str (face_id) + '.' + Str (count) + ".jpg", kelabu [y: y + h, x: x + w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Tekan 'ESC' untuk keluar video jika k == 27: pecahkan bilangan elif> = 30: # Ambil 30 sampel wajah dan hentikan brea video k cetak ("\ n [INFO] Keluar dari Program dan membersihkan barang") cam.release () cv2.destroyAllWindows ()

Pada ketika ini pastikan anda telah memasang bantal pada Pi. Sekiranya tidak, jalankan arahan:

pip memasang bantal

Setelah selesai, anda boleh menjalankan skrip latihan (skrip kedua) yang akan memberi anda fail.yaml dengan lancar yang akan digunakan dalam skrip akhir

import cv2import numpy sebagai np dari PIL import Imej import os # Path untuk pangkalan data imej wajah path = 'dataset' recognition = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # fungsi untuk mendapatkan gambar dan label data def getImagesAndLabels (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] faceSamples = ids = untuk imagePath di imagePaths: PIL_img = Image.open (imagePath).convert ('L') # ubah menjadi skala kelabu img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [- 1]. split (".") [1]) face = detector.detectMultiScale (img_numpy) untuk (x, y, w, h) di wajah: faceSamples.append (img_numpy [y: y + h, x: x + w]) ids.append (id) face returnSampel, cetakan id ("\ n [INFO] Muka latihan. Ia akan mengambil masa beberapa saat. Tunggu…") wajah, ids = getImagesAndLabels (jalan) mengenali.train (wajah, np.array (ids)) # Simpan model ke dalam trainer / trainer.yml recognitionizer.write ('trainer / trainer.yml') # recognitionizer.save () bekerja pada Mac, tetapi tidak pada Pi # Cetak bilangan wajah yang dilatih dan cetakan program akhir ("\ n [INFO] {0} wajah dilatih. Keluar dari Program".format (len (np.unique (ids))))

Apa yang menarik dari sekumpulan skrip ini ialah pelbagai wajah dapat dimasukkan ke dalam sistem yang bermaksud banyak individu dapat mengakses indera cermin jika dikehendaki.

Di bawah ini saya mempunyai skrip Tangkapan Data dan skrip Latihan untuk dimuat turun.

Langkah 9: Masa Pengecaman Muka

Masa Pengecaman Muka
Masa Pengecaman Muka
Masa Pengecaman Muka
Masa Pengecaman Muka

Akhirnya, kita dapat menjalankan skrip pengecam. Lebih banyak kod ditambahkan pada skrip ini untuk menjadikan proses motor berfungsi sehingga saya akan menerangkan bahagian-bahagian tersebut dengan lebih mendalam. Saya akan memecahnya menjadi beberapa bahagian tetapi saya akan meletakkan keseluruhan skrip di akhir langkah jika itu yang anda mahukan.

Kami akan memulakan dengan mengimport semua modul yang kami perlukan dan kemudian menetapkan mod GPIO ke GPIO. BCM

import numpy sebagai np

import os import time import RPi. GPIO sebagai GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM)

Senarai seterusnya yang diberi nama ControlPin adalah susunan nombor yang mewakili pin output yang akan digunakan untuk motor stepper kami.

ControlPin = [14, 15, 18, 23]

For-loop menetapkan pin ini sebagai Output dan kemudian memastikannya dimatikan. Saya masih mempunyai beberapa kod di sini untuk membiarkan laci ditutup dengan menekan butang tetapi saya memutuskan untuk menggunakan pemasa sebagai gantinya.

GPIO.setup (ControlPin , GPIO. OUT)

GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN)

Dua pemboleh ubah seterusnya adalah urutan yang akan kami gunakan untuk menggerakkan motor. Saya belajar maklumat ini dari video hebat dari Gaven MacDonald yang sangat saya sarankan untuk menonton kerana dia melihat secara mendalam bukan hanya kod tetapi motor sebenar (terdapat di sini: https://www.youtube.com/embed/Dc16mKFA7Fo). Pada dasarnya, setiap urutan akan diulang melalui penggunaan for-loop yang bersarang dalam fungsi openComp dan closeComp yang akan datang. Sekiranya anda melihat dengan dekat seq2 adalah bertentangan dengan seq1. Yup, anda dapat meneka. Salah satunya adalah untuk menggerakkan motor ke hadapan dan yang lain adalah untuk sebaliknya.

seq1 =

seq2 =

Bermula dengan fungsi openComp kami membuat for-loop yang akan berulang 1024 kali. Menurut video MacDonald 512 lelaran akan memberikan putaran penuh motor dan saya mendapati bahawa kira-kira dua putaran adalah panjang yang baik tetapi ini dapat disesuaikan bergantung pada ukuran individu. For-loop seterusnya terdiri daripada 8 lelaran untuk menjelaskan 8 tatasusunan yang terdapat di seq1 dan seq2. Dan akhirnya, putaran untuk gelung terakhir berulang empat kali untuk empat item yang terdapat di setiap tatasusunan ini serta 4 pin GPIO yang disambungkan oleh motor kita. Garis di bawah ini memilih pin GPIO dan kemudian menghidupkan atau mematikannya bergantung pada lelaran yang dihidupkannya. Garis selepas memberikan sedikit masa penyangga agar motor kita tidak berputar sama sekali. Selepas motor berpusing untuk mengeluarkan laci, ia akan tidur selama 5 saat sebelum bergerak. Kali ini dapat disesuaikan di sini atau anda boleh mengaktifkan kod komen yang memungkinkan penggunaan butang tekan untuk meneruskan skrip dan bukannya pemasa.

untuk i dalam jarak (1024):

untuk jarak setengah langkah (8): untuk pin dalam jarak (4): GPIO.output (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) "" while True: if GPIO.input (2) == GPIO. RENDAH: rehat; "" time.sleep (5)

Fungsi closeComp berfungsi dengan cara yang serupa. Setelah motor bergerak kembali, saya terus menetapkan pin GPIO terakhir kami ke rendah untuk memastikan kami tidak membuang tenaga dan kemudian saya menambah tiga saat lagi sebelum bergerak.

untuk i dalam jarak (1024):

untuk jarak setengah langkah (8): untuk julat pin (4): GPIO.output (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) print ("Compartment Closed") GPIO.output (ControlPin [0], 0) GPIO.output (ControlPin [3], 0) time.sleep (3)

Sebahagian besar bahagian seterusnya digunakan untuk memasang kamera dan memulakan pengecaman wajah. Sekali lagi, arahan MKRoBot masuk ke bahagian lebih banyak tetapi buat masa ini, saya hanya menunjukkan bahagian yang digunakan untuk cermin.

Mula-mula saya menukar nama senarai supaya nama saya berada dalam indeks yang saya tetapkan semasa mengumpulkan data (dalam kes saya 1). Dan kemudian saya menetapkan nilai selebihnya kepada Tidak ada kerana saya tidak mempunyai wajah lagi dalam set data.

nama = ['Tiada', 'Daniel', 'Tiada', 'Tiada', 'Tiada', 'Tiada']

Beberapa baris kod terakhir kami dilaksanakan dalam gelung thicc. Saya membuat pemboleh ubah untuk menyimpan keyakinan sebagai integer (intConfidence) sebelum keyakinan pemboleh ubah berubah menjadi rentetan. Kemudian saya menggunakan pernyataan if untuk memeriksa apakah keyakinan lebih besar daripada 30 dan jika id (orang yang dikesan oleh komputer, dalam kes ini, "Daniel") sama dengan nama saya. Setelah ini disahkan fungsi openComp dipanggil yang (seperti yang dijelaskan sebelumnya) menggerakkan motor, menendang keluar setelah 5 saat, dan kemudian meneruskan untuk menutupComp yang menggerakkan motor ke arah yang bertentangan dan melakukan pembersihan sebelum meneruskan gelung thicc.

jika intConfidence> 30 dan id == 'Daniel':

openComp () tutupComp ()

Kesalahan yang saya dapati di sini adalah bahawa kadang-kadang setelah closeComp kembali, kod itu berterusan tetapi pernyataan if-bersyarat didapati benar lagi seolah-olah membaca suapan video yang masih ada dalam penyangga. Walaupun ia tidak berlaku setiap kali saya belum menemui cara untuk memastikannya tidak akan berlaku, jadi jika ada yang mempunyai idea, beritahu saya di komen.

Inilah keseluruhan skrip di satu tempat (dan di bawah ini boleh dimuat turun):

import cv2

import numpy sebagai np import os import time import RPi. GPIO sebagai GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] untuk i dalam julat (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Langkah 10: Memasang Pi dan Menyambungkan Motor

Memasang Pi dan Menyambungkan Motor
Memasang Pi dan Menyambungkan Motor
Memasang Pi dan Menyambungkan Motor
Memasang Pi dan Menyambungkan Motor
Memasang Pi dan Menyambungkan Motor
Memasang Pi dan Menyambungkan Motor

Pemasangan Raspberry Pi ke bingkai agak mudah. Saya merancang siku 90 darjah kecil dengan satu muka mempunyai lubang dan sisi lain betul-betul rata. Selepas mencetak 3D, kedua-duanya dapat dipasang dengan skru pada Raspberry Pi pada lubang pelekapnya (saya menggunakan dua lubang pada setiap sisi pin GPIO).

Saya kemudian menggunakan gam super pada wajah bertentangan siku 3D yang dicetak untuk melekatkan Pi tepat di atas laci pada bingkai. Setelah membiarkan lem kering, saya dapat melepaskan atau mengganti Pi ke kedudukannya dengan mudah dan senang hanya dengan dua skru. Saya mempunyai.stl untuk siku yang dipautkan di bawah.

Sekarang hanya sambungkan pemacu motor ke PI dengan IN1, IN2, IN3, IN4 menyambung ke GPIO 14, 15, 18, 23 masing-masing. Akhirnya, sambungkan pin Ground dan pengawal 5v ke output 5v dan pin Ground dari Pi.

Inilah pautan ke Pin's Pinout untuk rujukan:

Langkah 11: Memasang Kamera

Memasang Kamera
Memasang Kamera
Memasang Kamera
Memasang Kamera
Memasang Kamera
Memasang Kamera

Memasang Kamera sedikit kurang kuat daripada Pi tetapi kaedahnya berjaya. Setelah merancang dan mencetak balok nipis dengan 2 lubang di setiap hujungnya, saya memasang balok ke Rasberry Pi melalui lubang pemasangannya. Kemudian pasangkan kamera ke hujung balok yang bertentangan dengan skru yang lain. Ta-da! Ia kelihatan cantik.

Langkah 12: Membuat dan Memasang Laci-Gerakan-Mekanisme

Membuat dan Memasang Laci-Gerakan-Mekanisme
Membuat dan Memasang Laci-Gerakan-Mekanisme
Membuat dan Memasang Laci-Gerakan-Mekanisme
Membuat dan Memasang Laci-Gerakan-Mekanisme
Membuat dan Memasang Laci-Gerakan-Mekanisme
Membuat dan Memasang Laci-Gerakan-Mekanisme

Langkah ini dibuat dengan mudah berkat pemberian komuniti pembuat hadiah yang sentiasa baik. Selepas carian pantas di Thingiverse, saya dapat mencari penggerak linear yang dibuat oleh TucksProjects (boleh didapati di sini: https://www.thingiverse.com/thing.:987762). Yang tinggal hanyalah menampar kad SD dan membiarkan pencetak melakukan kerja.

Saya akhirnya masuk ke Fusion 360 dan mengedit spur kerana batang motor saya terlalu besar untuk yang disediakan oleh TucksProjects. Saya mempunyai.stl untuk perkara di bawah. Setelah cetakan selesai, kita hanya perlu memasangnya dengan meletakkan spur pada poros motor, kemudian dengan memasang sisi motor dan penutup dengan 2 skru (pastikan anda meletakkan rak di antara sebelum menutupnya). Saya akhirnya terpaksa memotong satu inci dari rak supaya sesuai di antara laci dan bingkai.

Sekarang yang tinggal hanyalah memasang mekanisme pada bingkai dan laci. "BAGAIMANA BAGAIMANA AKAN LAKUKAN?" anda bertanya… yup, katakan dengan saya: Super Glue. Seperti yang ditunjukkan dalam gambar di atas, letakkan mekanisme di bahagian bawah bingkai dan dorong ke atas sekeping kayu di mana laci meluncur. Sangat penting di sini bahawa anda cuba mendapatkan rak / mekanisme selari dengan bingkai mungkin sehingga ketika mekanisme bergerak, mendorong laci lurus dan tidak pada sudut. Setelah lem kering, letakkan sedikit lagi gam di tepi rak dan gerakkan laci ke kedudukannya dan biarkan kering. Setelah selesai, kami mempunyai mekanisme yang kuat untuk memasukkan laci rahsia masuk dan keluar.

Langkah 13: Menambah Karton Di Sebalik Cermin

Menambah Kadbod Di Sebalik Cermin
Menambah Kadbod Di Sebalik Cermin
Menambah Kadbod Di Sebalik Cermin
Menambah Kadbod Di Sebalik Cermin
Menambah Kadbod Di Sebalik Cermin
Menambah Kadbod Di Sebalik Cermin

Untuk menjadikan filem dua hala ini lebih menyerupai cermin, saya dapati bahawa filem ini berfungsi dengan baik untuk meletakkan kadbod di belakang kaca. Kardus yang digunakan adalah kadbod yang disertakan dengan bingkai tetapi potongan mana pun yang sesuai akan berfungsi. Ini juga memastikan tidak ada cahaya dari LED kamera, pengawal motor, atau Pi yang ditunjukkan di sisi lain cermin. Dengan semua yang ada di tempatnya gunakan pensil untuk menandakan tempat kamera berada di atas kadbod. Kemudian gunakan pisau cukur untuk memotong segi empat tepat sehingga kamera dapat mengintip ketika berada di tempatnya.

Langkah 14: Memakai Potongan Akhir

Memakai Final Piece
Memakai Final Piece
Memakai Final Piece
Memakai Final Piece

Perkara terakhir yang perlu dilakukan ialah meletakkan bahagian depan laci yang diketepikan sebelumnya. Gerakkan motor sehingga laci keluar. Kemudian tempelkan bahagian depan sehingga bahagian laci berada di tengah (harus digantung sedikit di semua sisi. Kemudian anda boleh menggantungnya di dinding.

Langkah 15: Akhir

Selesai
Selesai
Selesai
Selesai

Di sana anda memilikinya! Terdapat beberapa penambahbaikan yang dapat dilakukan seperti menambahkan butang tekan itu, membeli beberapa filem dua arah yang lebih baik dan memperbaiki bug itu dalam kod tetapi semuanya, ia dapat menyelesaikannya: ia kelihatan seperti cermin, ia menyedari yang telah ditentukan wajah pengguna dan ia membuka laci kecil yang comel itu. Seperti biasa saya ingin mendengar pendapat, soalan, dan memoar anda dalam komen di bawah.

Penilaian Keseluruhan: 10/10

Komen: # WillNot TryAgain … kecuali saya dapat mengikuti arahan ini;)

Cabaran Petak Rahsia
Cabaran Petak Rahsia
Cabaran Petak Rahsia
Cabaran Petak Rahsia

Hadiah Utama dalam Cabaran Petak Rahsia

Disyorkan: