Isi kandungan:
- Bekalan
- Langkah 1: Potong Bingkai Kotak
- Langkah 2: Potong Laci
- Langkah 3: Menempatkan Bingkai Bersama
- Langkah 4: Untuk Cermin
- Langkah 5: Pasang Raspbian Stretch
- Langkah 6: Pasang OpenCV
- Langkah 7: Aktifkan / Uji Kamera
- Langkah 8: Mengumpulkan Data dan Data Latihan
- Langkah 9: Masa Pengecaman Muka
- Langkah 10: Memasang Pi dan Menyambungkan Motor
- Langkah 11: Memasang Kamera
- Langkah 12: Membuat dan Memasang Laci-Gerakan-Mekanisme
- Langkah 13: Menambah Karton Di Sebalik Cermin
- Langkah 14: Memakai Potongan Akhir
- Langkah 15: Akhir
Video: Cermin Pengecaman Muka Dengan Petak Rahsia: 15 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
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
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
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
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
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
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
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
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
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 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
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
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
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
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;)
Hadiah Utama dalam Cabaran Petak Rahsia
Disyorkan:
PNG Ini Merupakan Petak Rahsia: 4 Langkah
PNG Ini Merupakan Petak Rahsia: Cabaran anda, pembaca yang budiman, adalah untuk mengetahui apakah mesej yang tersembunyi dalam gambar output.png yang saya letakkan di github untuk anda. Anda boleh menggunakan kod MessageHider di sana untuk mengekstrak mesej. Sekiranya anda keliru, sila komen di bawah dan saya akan membantu
Sistem Keselamatan Pengecaman Muka untuk Peti Sejuk Dengan Raspberry Pi: 7 Langkah (dengan Gambar)
Sistem Keselamatan Pengecaman Muka untuk Peti Sejuk Dengan Raspberry Pi: Melayari internet saya mendapati bahawa harga untuk sistem keselamatan berbeza dari 150 $ hingga 600 $ ke atas, tetapi tidak semua penyelesaian (malah yang sangat mahal) dapat disatukan dengan yang lain alat pintar di rumah anda! Contohnya, anda tidak dapat menetapkan
Laci Mini Petak Rahsia: 5 Langkah
Laci Mini Petak Rahsia: Petunjuk ini akan menunjukkan kepada anda bagaimana saya membuat almari laci dengan petak rahsia. Terutama saya akan menggunakan butiran kecil untuk menerangkan tindakan yang saya buat
Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir: 8 Langkah (dengan Gambar)
Pengecaman Wajah Masa Nyata: Projek Akhir-ke-Akhir: Pada tutorial terakhir saya yang meneroka OpenCV, kami mempelajari TRACKING OBJEK VISI AUTOMATIK. Sekarang kami akan menggunakan PiCam kami untuk mengenali wajah dalam masa nyata, seperti yang anda lihat di bawah: Projek ini dilakukan dengan " Perpustakaan Penglihatan Komputer Sumber Terbuka & hebat ini
Pengesanan Muka + pengecaman: 8 Langkah (dengan Gambar)
Face Detection + recognition: Ini adalah contoh mudah menjalankan pengesanan dan pengecaman wajah dengan OpenCV dari kamera. CATATAN: SAYA MEMBUAT PROJEK INI UNTUK KONTES SENSOR DAN SAYA MENGGUNAKAN KAMERA SEBAGAI SENSOR UNTUK MEMAKAI DAN MENGIKTIRAF FAKTA. Oleh itu, Matlamat KamiDalam sesi ini, 1. Pasang Anaconda