Taula de continguts:
- Subministraments
- Pas 1: talls del quadre de quadre
- Pas 2: talls del calaix
- Pas 3: ajuntar el marc
- Pas 4: pel mirall
- Pas 5: instal·leu Raspbian Stretch
- Pas 6: Instal·leu OpenCV
- Pas 7: activeu / proveu la càmera
- Pas 8: recopilació de dades i dades de formació
- Pas 9: temps de reconeixement facial
- Pas 10: muntatge del Pi i connexió del motor
- Pas 11: muntatge de la càmera
- Pas 12: Creació i muntatge del mecanisme de moviment del calaix
- Pas 13: Afegir cartró darrere del mirall
- Pas 14: posar la peça final
- Pas 15: final
Vídeo: Mirall de reconeixement facial amb compartiment secret: 15 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Sempre m’han fascinat els compartiments secrets sempre creatius que s’utilitzen en històries, pel·lícules i similars. Per tant, quan vaig veure el Concurs de compartiments secrets, vaig decidir experimentar jo mateixa amb la idea i fer un mirall d’aspecte normal que obrís un calaix lateral secret quan la persona adequada s’hi fixés.
Mitjançant la utilització d’un Raspberry Pi, alguns coneixements sobre programació de python i una classe de botiga de vuitè grau, podem crear aquest dispositiu espeluznant per amagar objectes a la vista als quals només l’usuari correcte tindrà accés.
M'agradaria donar un agraïment especial a aquestes persones / plataformes d'on també vaig obtenir la meva informació i recursos:
TeCoEd: canal de Youtube
Emmet de PiMyLifeUp
MJRoBot a Hackster.io (perfil)
Gaven MacDonald: canal de Youtube
Tucker Shannon a Thingiverse (perfil)
Subministraments
Subministraments de marcs:
- Tauló de fusta (les dimensions d'aquest tauler eren de 42 "per 7,5" per 5/16 ")
- Marc de llapis (amb vidre)
- Pintura d'esprai
- Adhesiu reflectant unidireccional
- Netejador de vidre i drap
- Fusta MDF
Subministraments de reconeixement facial:
- Raspberry Pi (he utilitzat el Pi 3 B + però hi ha altres opcions)
- Mòdul de càmera
- Motor pas a pas
Eines:
- Serra de taula
- Jig Saw
- Fusta de vidre
- Cola adhesiva
- Mesura
- Tisores
- Ampolla de polvorització
- Impressora 3D
- Super Glue
Pas 1: talls del quadre de quadre
Vaig comprar un marc de fotos a la botiga de segona mà. Només un advertiment, assegureu-vos que els taulons que formen el marc tinguin una amplada d'almenys 1 1/2 . Això és perquè pugueu enganxar-hi altres taulers de fusta amb prou espai per treballar-hi. A més, assegureu-vos que el vidre el marc és completament clar. Vaig comprar un esmaltat per accident i després vaig haver de comprar un altre marc només per al vidre transparent. Com que el meu marc s'utilitza, les mesures del marc de la caixa poden variar.
- Col·loqueu el marc en orientació vertical. Mesureu els costats llargs (LS) del forat de vidre del marc amb un ½”addicional tant a la part superior com a la inferior. (és a dir, afegiu una polzada al costat llarg del forat de vidre. Graveu-ho i etiqueteu LSM (Long Side Measurement).
- De la mateixa manera, mesureu la part superior del forat i afegiu-hi 1”addicional. Enregistreu-ho i etiqueteu SSM (Short Side Measurement).
- Aconsegueix el tauler i, amb una serra de taula, talla dos LSM x 2 "i dos SSM x 2".
- Agafeu un dels talls LSM i mida un rectangle de 2 "x1" que es troba a 1 "de la part inferior i ½" dels costats esquerre i dret (com es mostra a la imatge 3).
- Utilitzeu una serra per trencar el forat. A continuació, utilitzeu el paper de vidre per polir les vores.
Pas 2: talls del calaix
Ara començarem a construir el calaix (també conegut com a compartiment secret).
- Retalleu dos costats de 4 "x 1", un 3 ⅜ "x 1" (vora posterior), un 4 ¼ "x 1 ¼" (vora frontal) i un 4 "x 3 ⅜" (plataforma).
- Enganxeu el primer costat de 4 "x 1" al llarg del costat de 4 "de la plataforma. Vaig posar un parell de papers plegats sota el costat de la plataforma perquè quedés lleugerament aixecat, d’aquesta manera no arrossegaria cap al forat que vaig tallar a la planxa LS. Posar a assecar durant 30 minuts.
- De la mateixa manera, enganxeu els 3 ⅜”x 1” al llarg de la vora de 3 ⅜”de la plataforma. Posar a assecar durant 30 minuts. A continuació, enganxeu el segon costat de 4 "x 1" al costat oposat del primer. Posar a assecar durant 30 minuts.
- Deixeu de banda la vora frontal per ara. Serà l’últim enganxat al calaix.
- Quan hàgiu acabat, comproveu si s'adapta al forat que heu inserit al taulell LSM. En cas contrari, liureu el forat fins que el calaix llisqui cap a dins i cap a fora fàcilment i no hi hagi cap arrossegament.
Pas 3: ajuntar el marc
Amb totes les parts completes, podem començar a muntar la totalitat del marc.
- Enganxeu el tauler LSM centrat amb el forat de vidre amb un ½”a cada costat. Assegureu-vos que estigui enganxat a ½”del forat (tal com es mostra a la imatge 1). Posar a assecar durant 30 minuts.
- Enganxeu el primer tauler SSM amb la vora que toca l’interior del tauler LSM que s’acaba d’enganxar. (Utilitzeu una regla per assegurar-vos que estigui enganxada a la recta). Posar a assecar durant 30 minuts.
- Agafeu l’altre costat LSM i enganxeu-lo de manera similar a la primera. Assegureu-vos que estigui a ½”del forat i que el SSM que s’acaba d’adherir estigui enganxat a la part interior del tauler. Posar a assecar durant 30 minuts.
- Enganxeu l’últim SSM a la vora superior. Com que teniu dos LSM als dos costats, en funció de la recta que els hàgiu fixat, és possible que hàgiu de treure els costats del SSM per assegurar-vos que encaixa (de vegades el meu tall està desactivat). Posar a assecar durant 30 minuts.
- Mesureu el petit espai entre la part inferior del calaix i el marc. Talleu una peça de fusta MDF amb aquesta mesura, de 4 ". Voleu que aquesta peça s'acosti al calaix però no la toqui. Està destinada a suportar el calaix amb una fricció mínima.
- Quan ho he fet, he pintat amb esprai el marc de manera que coincideixin totes les peces.
Pas 4: pel mirall
L’adhesiu de pel·lícula unidireccional que vaig comprar a Amazon tenia uns 10 dòlars. N’hi ha de millors, que s’interessen una mica més cares. El que faig servir reflecteix, però es nota que no és un mirall habitual que es veuria a casa. Els més cars us donaran aquest aspecte.
- Netegeu el vidre amb un netejador de vidre pels dos costats.
- Desenrotlleu l’adhesiu unidireccional i col·loqueu el got per sobre. Retalleu l’adhesiu perquè quedi almenys ½”d’excés a cada costat del got.
- Deixeu el got de banda i mulleu-ne un costat amb aigua. A continuació, retireu la capa de plàstic de l'adhesiu unidireccional i ruixeu amb aigua el costat recentment exposat.
- Col·loqueu el costat humit del got al costat humit de l’adhesiu. Deixar reposar 30 minuts.
- Doneu la volta i feu servir el polze per aplanar les bombolles entre l’adhesiu i el vidre. A continuació, talleu l'excés d'adhesiu de les vores.
Pas 5: instal·leu Raspbian Stretch
Aquesta és la meva primera vegada que aprofundeixo en l’entorn Raspberry Pi i vaig començar a buscar instruccions sobre com instal·lar el sistema operatiu. Finalment vaig trobar un senzill tutorial a Youtube de TeCoEd que va passar pel procés d’instal·lació d’Stretch a la targeta SD (amb una introducció força bonica també). Aquí teniu l’enllaç d’aquest tutorial:
En essència, tot el que heu de fer és:
- Formateu la targeta SD seleccionant Drive >> Eines de Drive >> Format. Descarregueu el fitxer ZIP de Raspian Stretch (aquí:
- Feu clic a la imatge del sistema operatiu a la targeta SD. TeCoEd va utilitzar Win32 Disk Imager per completar-ho. Vaig acabar instal·lant balenaEtcher, que semblava una mica més senzill. (Aquí teniu l’enllaç de descàrrega de balenaEtcher:
- Un cop a balenaEtcher, seleccioneu "Flash From File" i trieu el fitxer ZIP descarregat anteriorment. A continuació, seleccioneu la targeta SD desitjada (si no se selecciona automàticament). A continuació, premeu el botó flash sucós i espereu que passi la màgia.
Un cop instal·lat a la targeta SD, podeu inserir-lo al Raspberry Pi i passar pel procés de configuració genèric del Pi.
Pas 6: Instal·leu OpenCV
Passem ara a les parts més orientades al reconeixement facial. Per reconèixer les cares, hem de descarregar la biblioteca OpenCV que conté un gran nombre d’eines per treballar amb la visió per ordinador.
Instal·lar OpenCV va ser la part més àrdua de l’aspecte del programari per a mi. Però després de seguir nombroses instruccions, finalment vaig trobar un tutorial d’Emmet de PiMyLifeUp que feia el truc que es troba aquí:
No seguiré aquests passos, ja que serà més adequat seguir-los des de l'enllaç (amb les explicacions donades i la possibilitat de copiar i enganxar directament del lloc amb més facilitat).
Pas 7: activeu / proveu la càmera
Després d’instal·lar OpenCV, la resta del meu viatge es va completar amb un tutorial de MJRoBot a Hackster.io que es troba aquí:
Abans de començar, voldria recordar-vos que jo no sóc el creador original d’aquests scripts, però sí que vaig acabar modificant-ne parts.
Per començar, hem de provar la càmera per assegurar-nos que podem capturar vídeo a la pantalla. Vaig passar aproximadament una hora intentant executar el guió proporcionat al pas 3 de MJRoBot. Com la vida ho desitgem, realment necessitem habilitar la càmera al Raspberry Pi (resulta que pot ser una bona idea llegir les instruccions proporcionades … mmm nah). Per tant, després de connectar la càmera al port correcte, seguiu aquests passos:
- Obriu un terminal d’ordres i escriviu sudo raspi-config
- Seleccioneu "Activa la càmera" (es pot trobar a l'opció de dispositius)
- Prem "Retorn"
- Aneu a "Finalitza" i se us demanarà que reinicieu
A continuació, seguiu aquests passos:
- Aneu al menú principal del gerd (a la part superior esquerra)
- Preferències
- Configuració de Raspberry Pi
- Interfícies
- A continuació, a Càmera, seleccioneu "Habilitat"
- A continuació, "D'acord"
Ara hauríeu de poder executar amb èxit aquest script des del tutorial de MJRoBot per provar la càmera (recordeu que tot aquest codi més una descripció més profunda es troba a l’enllaç proporcionat més amunt al tutorial de MJRobot):
importar numpy com a np
import cv2 cap = cv2. VideoCapture (0) cap.set (3, 640) # set Amplada cap.set (4, 480) # set Altura mentre que (True): ret, frame = cap.read () frame = cv2. flip (frame, -1) # Flip camera verticalment gris = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('gray', gris) k = cv2.waitKey (30) & 0xff si k == 27: # premeu 'ESC' per sortir del break cap.release () cv2.destroyAllWindows ()
El codi anterior hauria de mostrar dues finestres, una en color i l’altra en escala de grisos. Si heu arribat fins aquí crec que us mereixeu un bon entrepà.
Pas 8: recopilació de dades i dades de formació
Al tutorial proporcionat, l’autor aprofundeix molt més en els processos del codi que aviat es proporcionarà, però com que són instruccions sobre com es va fer aquest mirall, no aprofundiré en la història ni en la complicada mecànica. Tanmateix, us recomano que preneu un mes de la vostra vida llegint sobre aquestes dues coses, ja que us poden servir bé.
Queden tres scripts més per executar abans que puguem funcionar tot. El primer és per recopilar dades, el segon per entrenar-los i el darrer és, en realitat, per al reconeixement. La recopilació de dades requereix fer fotografies reals de la cara i emmagatzemar-les en un lloc específic per a l’entrenament. El creador d'aquest codi va fer que sigui molt senzill fer tot això, així que us recomano seguir aquestes instruccions per evitar mal de cap.
Obriu una línia d'ordres i creeu un directori nou amb un nom divertit (he anomenat el meu FaceRec)
mkdir FaceRec
Ara, canvieu el directori a FaceRec i feu un subdirectori assegurant-vos que nomenareu el conjunt de dades
cd FaceRec
conjunt de dades mkdir
Mentre hi estem, també podem fer l’altre subdirectori anomenat formador
entrenador mkdir
Ara podeu executar i seguir les instruccions del primer script que capturarà imatges d'un usuari. (Només cal que aneu cap amunt, assegureu-vos d'introduir l'identificador d'usuari com a 1, 2, 3, etc.)
import cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set width video cam.set (4, 480) # set video height face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Per a cada persona, introduïu un identificador de cara numèrica face_id = input ('\ n introduïu l'identificador d'usuari final premeu ==>') imprimir ("\ n [INFO] Inicialitzant la captura de cares. Mireu la càmera i espereu …") # Inicialitzeu el recompte de cares de mostreig individual count = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip imatge de vídeo verticalment gris = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_detector.detectMultiScale (gris, 1,3, 5) per a (x, y, w, h) en cares: cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) count + = 1 # Deseu la imatge capturada a la carpeta de conjunts de dades cv2.imwrite ("dataset / User." + Str (face_id) + '.' + Str (count) + ".jpg", gris [y: y + h, x: x + w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Premeu 'ESC' per sortir del vídeo si k == 27: interrupció del nombre d'elif> = 30: # Preneu 30 mostres de cara i atureu la respiració del vídeo k print ("\ n [INFO] S'està sortint del programa i les coses de neteja") cam.release () cv2.destroyAllWindows ()
En aquest punt, assegureu-vos que heu instal·lat el coixí al Pi. Si no, executeu l'ordre:
pip instal·lar coixí
Després d'això, podeu executar l'script de formació (segon script) que us proporcionarà un fitxer.yaml que s'utilitzarà a l'script final
import cv2import numpy as np from PIL import Image import os # Path for face image database path = 'dataset' recognizer = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funció per obtenir les imatges i etiquetar les dades def getImagesAndLabels (ruta): imagePaths = [os.path.join (path, f) per f a os.listdir (path)] faceSamples = ids = per imagePath a imagePaths: PIL_img = Image.open (imagePath).convert ('L') # converteix-lo a escala de grisos img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [- 1]. split (".") [1]) faces = detector.detectMultiScale (img_numpy) for (x, y, w, h) in faces: faceSamples.append (img_numpy [y: y + h, x: x + w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Cares d'entrenament. Trigarà uns segons. Espereu …") cares, ids = getImagesAndLabels (path) recognizer.train (faces, np.array (ids)) # Deseu el model a trainer / trainer.yml recognizer.write ('trainer / trainer.yml') # recognizer.save () ha funcionat a Mac, però no a Pi # Imprimeix el nombre de cares entrenades i finalitza la impressió del programa ("\ n [INFO] {0} cares entrenades. Surt del programa".format (len (np.unique (ids))))
El que és interessant d’aquest conjunt d’escriptures és que es poden introduir diverses cares al sistema, de manera que diverses persones poden accedir a les entranyes del mirall si així es desitja.
A continuació, tinc disponible el script de captura de dades i el de formació per descarregar.
Pas 9: temps de reconeixement facial
Finalment, podem executar l'script de reconeixement. S'ha afegit més codi a aquest script per tal de fer que el procés motor funcioni, de manera que explicaré aquestes parts una mica més a fons. El desglossaré en seccions, però posaré tot el guió al final del pas si és el que busqueu.
Començarem per importar tots els mòduls que necessitarem i després configurarem el mode GPIO a GPIO. BCM
importar numpy com a np
importació o importació del temps d'importació RPi. GPIO com a GPIO GPIO.setwarnings (fals) GPIO.setmode (GPIO. BCM)
La següent llista anomenada ControlPin és una matriu de números que representa els pins de sortida que s’utilitzaran per al nostre motor pas a pas.
ControlPin = [14, 15, 18, 23]
El bucle for estableix aquests pins com a Sortides i, a continuació, assegura que estiguin apagats. Encara tinc algun codi aquí perquè el calaix es tanqui amb només prémer un botó, però vaig decidir utilitzar un temporitzador.
GPIO.setup (ControlPin , GPIO. OUT)
GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN)
Les dues variables següents són seqüències que utilitzarem per conduir el motor. Vaig aprendre aquesta informació amb un meravellós vídeo de Gaven MacDonald que recomano veure mentre aprofundeix no només en el codi, sinó en el motor real (que es troba aquí: https://www.youtube.com/embed/Dc16mKFA7Fo). En essència, cada seqüència serà iterada mitjançant l'ús dels bucles for-imbricats a les properes funcions openComp i closeComp. Si mireu de prop seq2 és exactament el contrari de seq2. Sí, ho has endevinat. Una és per moure el motor cap endavant i l’altra per fer marxa enrere.
seq1 =
seq2 =
Començant per la nostra funció openComp, creem un bucle for que iterarà 1024 vegades. Segons el vídeo de MacDonald, les iteracions 512 proporcionarien una rotació completa del motor i vaig trobar que aproximadament dues rotacions tenien una bona longitud, però això es pot ajustar en funció de la mida d’un individu. El següent for-loop consta de 8 iteracions per tal de tenir en compte les 8 matrius que es troben a seq1 i seq2. I, finalment, l’últim circuit bucle itera quatre vegades pels quatre elements que es troben en cadascun d’aquests arrays, així com els 4 pins GPIO als quals tenim el motor connectat. La línia que hi ha a sota selecciona el pin GPIO i, a continuació, l’activa o desactiva en funció de la iteració. La línia posterior proporciona un temps de memòria intermèdia perquè el nostre motor no giri en absolut. Després que el motor giri per treure el calaix, dorm durant 5 segons abans de continuar. Aquest temps es pot ajustar aquí o podeu habilitar el codi comentat que permet fer servir un botó per avançar amb l'script en lloc d'un temporitzador.
per a l'interval (1024):
per a mig pas del rang (8): per al pin del rang (4): sortida GPIO (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) '' 'mentre és True: si GPIO.input (2) == GPIO. LOW: break; "" time.sleep (5)
La funció closeComp funciona d’una manera similar. Després que el motor es retrocedeixi, procedeixo a posar els nostres últims pins GPIO a mínims per assegurar-nos que no malgastem cap energia i després afegeixo tres segons més de temps abans de continuar.
per a l'interval (1024):
per a mig pas del rang (8): per al pin del rang (4): sortida GPIO (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) impressió ("Compartiment tancat") GPIO.output (ControlPin [0], 0) GPIO.output (ControlPin [3], 0) time.sleep (3)
La major part de la següent part s’utilitza per configurar la càmera i començar el reconeixement facial. Una vegada més, les instruccions de MKRoBot entren més en les parts, però ara per ara només mostro les parts que s’utilitzen per al mirall.
Primer vaig canviar els noms de la llista de manera que el meu nom estigui a l’índex que l’he assignat mentre recollia les dades (en el meu cas 1). I després vaig establir la resta de valors a Cap, ja que no tenia més cares al conjunt de dades.
names = ['Cap', 'Daniel', 'Cap', 'Cap', 'Cap', 'Cap']
Les nostres darreres línies de codi s’implementen al bucle for thicc. Vaig crear una variable per emmagatzemar la confiança com a enter (intConfidence) abans que la variable confiança es convertís en una cadena. A continuació, faig servir una sentència if per comprovar si la confiança és superior a 30 i si la identificació (quina persona detecta l'ordinador, en aquest cas, "Daniel") és igual al meu nom. Després de confirmar-ho, s’anomena la funció openComp que (tal com s’ha explicat anteriorment) mou el motor, expulsa al cap de 5 segons i, a continuació, procedeix a closeComp, que mou el motor en la direcció oposada i fa una neteja abans de continuar amb el bucle thicc.
si intConfidence> 30 i id == 'Daniel':
openComp () closeComp ()
Un error que he trobat aquí és que, de vegades, després del retorn de closeComp, el codi continua, però la sentència if-condicional es troba de nou com a veritable com si estigués llegint un feed de vídeo que encara es troba al buffer. Tot i que no passa cada vegada, encara no he trobat la manera d’assegurar-me que mai no passi, així que si algú té alguna idea, només m’ho ha de fer saber als comentaris.
Aquí teniu tot aquest script en un sol lloc (i just a sota d’això es pot descarregar):
importar cv2
import numpy as np import os import time import RPi. GPIO as GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] for i in range (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =
Pas 10: muntatge del Pi i connexió del motor
Muntar el Raspberry Pi al marc va ser bastant senzill. Vaig dissenyar un petit colze de 90 graus amb una cara amb un forat i l’altra cara totalment plana. Després d’imprimir en 3D dos d’aquests, es poden connectar amb cargols al Raspberry Pi als seus forats de muntatge (he utilitzat els dos forats de cada costat dels pins GPIO).
A continuació, vaig procedir a utilitzar una súper cola a les cares oposades dels colzes impresos en 3D per enganxar el Pi just a sobre del calaix del marc. Després de deixar assecar la cola, vaig poder treure o substituir el Pi en una posició senzilla i còmoda amb només els dos cargols. Tinc el fitxer.stl per al colze enllaçat a continuació.
Ara simplement connecteu el controlador del motor al PI amb IN1, IN2, IN3, IN4 connectant-vos a GPIO 14, 15, 18, 23 respectivament. Finalment, connecteu els pins de 5v i de terra de la placa del controlador a la sortida de 5v i els pins de terra del Pi.
Aquí teniu un enllaç al Pinout del Pi per obtenir una referència:
Pas 11: muntatge de la càmera
El muntatge de la càmera era lleugerament menys robust que el Pi, però el mètode va fer la feina. Després de dissenyar i imprimir un feix prim amb 2 forats a cada extrem, vaig fixar el feix al Rasberry Pi pel seu forat de muntatge. A continuació, fixeu la càmera a l’extrem oposat del feix amb un altre cargol. Ta-da! Sembla bastant volar.
Pas 12: Creació i muntatge del mecanisme de moviment del calaix
Aquest pas es va fer fàcil gràcies als regals sempre benvolents de la comunitat de fabricants. Després d’una cerca ràpida a Thingiverse, vaig poder trobar un actuador lineal creat per TucksProjects (que es troba aquí: https://www.thingiverse.com/thing:2987762). Tot el que quedava per fer era copejar-lo en una targeta SD i deixar que la impressora fes la feina.
Vaig acabar entrant a Fusion 360 i vaig editar l'esperó, ja que l'eix del motor era massa gran per al proporcionat per TucksProjects. Tinc el.stl per a això a continuació. Un cop feta la impressió, només necessitem muntar-la col·locant l’esperó a l’eix del motor i, tot seguit, fixant els costats del motor i de la carcassa amb 2 cargols (assegureu-vos que heu col·locat el bastidor abans de tancar-lo). Vaig haver de tallar una polzada del bastidor perquè quedés entre el calaix i el marc.
Ara només queda fixar el mecanisme al marc i al calaix. “COM HO FAREM?” preguntes … sí, digues-ho amb mi: Super Glue. Com es mostra a les imatges anteriors, col·loqueu el mecanisme contra la part inferior del marc i empenyeu-lo cap amunt contra el tros de fusta que llisca el calaix. Aquí és vital que intenteu que el bastidor / mecanisme sigui el més paral·lel possible amb el marc perquè, quan es mou el mecanisme, empeny el calaix recte i no inclinat. Després que la cola s’hagi assecat, col·loqueu una mica més de cola a la vora del bastidor i moveu el calaix a la seva posició i deixeu-lo assecar. Un cop acabat, tenim un mecanisme robust per lliscar el nostre calaix secret cap a dins i cap a fora.
Pas 13: Afegir cartró darrere del mirall
Per tal de fer que aquesta pel·lícula bidireccional sembli més mirall, vaig trobar que serveix bé per col·locar cartró darrere del vidre. El cartró que s’utilitza ve amb el marc, però qualsevol peça tallada per adaptar-se funcionarà. Això també garanteix que no hi ha llum del LED de la càmera, del controlador del motor o de la pantalla Pi que es mostra a l'altre costat del mirall. Amb tot al seu lloc, utilitzeu un llapis per marcar on es troba la càmera al cartró. A continuació, utilitzeu una navalla per tallar un rectangle de manera que la càmera pugui mirar-la quan estigui al seu lloc.
Pas 14: posar la peça final
L’últim que cal fer és col·locar la part frontal del calaix que s’havia reservat anteriorment. Mou el motor perquè el calaix en surti. A continuació, enganxeu la part frontal de manera que la peça del calaix estigui centrada (hi hauria d’haver una mica de penjat per tots els costats. Després, només podeu penjar-la a la paret.
Pas 15: final
Aquí el teniu! Hi ha diverses millores que es podrien fer, com ara afegir aquest polsador, comprar una pel·lícula bidireccional millor i solucionar aquest error al codi, però, en definitiva, fa la feina: sembla un mirall, reconeix el predeterminat la cara de l’usuari i obre aquell petit calaix. Com sempre, m’encantaria escoltar els vostres pensaments, preguntes i memòries als comentaris que apareixen a continuació.
Valoració general: 10/10
Comentaris: # WouldNotTryAgain again … tret que pogués seguir aquesta instrucció;)
Gran premi en el repte compartiment secret
Recomanat:
Timbre amb reconeixement facial: 7 passos (amb imatges)
Timbre amb reconeixement facial: motivació Recentment, al meu país hi ha hagut una onada de robatoris dirigits a persones grans a casa seva. Normalment, l’accés el concedeixen els mateixos ocupants, ja que els visitants els convencen que són cuidadors / infermeres. És
Smart Lock de reconeixement facial amb LTE Pi HAT: 4 passos
Bloqueig intel·ligent de reconeixement de cares amb LTE Pi HAT: el reconeixement de rostres s’utilitza cada vegada més, podem utilitzar-lo per fer un bloqueig intel·ligent
Mirall màgic intel·ligent flotant des de l’ordinador portàtil antic amb reconeixement de veu Alexa: 6 passos (amb imatges)
Mirall màgic intel·ligent flotant des de l’ordinador portàtil antic amb reconeixement de veu Alexa: inscriviu-vos al meu curs “Electrònica en poques paraules” aquí: https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARK Consulteu també el meu canal de youtube aquí per obtenir més projectes i tutorials d'electrònica: https://www.youtube.com/channel/UCelOO
Sistema de seguretat de reconeixement facial per a una nevera amb Raspberry Pi: 7 passos (amb imatges)
Sistema de seguretat de reconeixement facial per a un refrigerador amb Raspberry Pi: navegant per Internet he descobert que els preus dels sistemes de seguretat varien de 150 a 600 $ i més, però no totes les solucions (fins i tot les molt cares) es poden integrar amb altres eines intel·ligents a casa! Per exemple, no es pot configurar
Reconeixement facial en temps real: un projecte d'extrem a extrem: 8 passos (amb imatges)
Reconeixement facial en temps real: un projecte de punta a punta: en el meu darrer tutorial que explorava OpenCV, vam aprendre EL SEGUIMENT AUTOMÀTIC D'OBJECTES DE VISIÓ. Ara utilitzarem la nostra PiCam per reconèixer les cares en temps real, com podeu veure a continuació: Aquest projecte es va fer amb aquest fantàstic "Open Source Computer Vision Library & qu