Taula de continguts:

Mirall de reconeixement facial amb compartiment secret: 15 passos (amb imatges)
Mirall de reconeixement facial amb compartiment secret: 15 passos (amb imatges)

Vídeo: Mirall de reconeixement facial amb compartiment secret: 15 passos (amb imatges)

Vídeo: Mirall de reconeixement facial amb compartiment secret: 15 passos (amb imatges)
Vídeo: Почему здесь остались миллионы? ~ Благородный заброшенный замок 1600-х годов 2024, Juliol
Anonim
Mirall de reconeixement facial amb compartiment secret
Mirall de reconeixement facial amb compartiment secret
Mirall de reconeixement facial amb compartiment secret
Mirall de reconeixement facial amb compartiment secret
Mirall de reconeixement facial amb compartiment secret
Mirall de reconeixement facial amb compartiment secret

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

Talls per al quadre de quadre
Talls per al quadre de quadre
Talls per al quadre de quadre
Talls per al quadre de quadre
Talls per al quadre de quadre
Talls per al quadre de quadre
Talls per al quadre de quadre
Talls per al 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

Talls per al calaix
Talls per al calaix
Talls per al calaix
Talls per al calaix
Talls per al calaix
Talls per al calaix
Talls per al calaix
Talls per al 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

Ajuntant el marc
Ajuntant el marc
Ajuntant el marc
Ajuntant el marc
Ajuntant el marc
Ajuntant 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

Pel Mirall
Pel Mirall
Pel Mirall
Pel Mirall
Pel Mirall
Pel Mirall
Pel Mirall
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

Activa / prova la càmera
Activa / prova la càmera
Activa / prova la càmera
Activa / prova 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ó

Recopilació de dades i dades de formació
Recopilació de dades i dades de formació
Recopilació de dades i dades de formació
Recopilació de dades i dades de formació
Recopilació de dades i dades de formació
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

Temps de reconeixement facial
Temps de reconeixement facial
Temps de reconeixement facial
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

Muntatge del Pi i connexió del motor
Muntatge del Pi i connexió del motor
Muntatge del Pi i connexió del motor
Muntatge del Pi i connexió del motor
Muntatge del Pi i connexió del motor
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

Muntatge de la càmera
Muntatge de la càmera
Muntatge de la càmera
Muntatge de la càmera
Muntatge de la càmera
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

Creació i muntatge del mecanisme de moviment del calaix
Creació i muntatge del mecanisme de moviment del calaix
Creació i muntatge del mecanisme de moviment del calaix
Creació i muntatge del mecanisme de moviment del calaix
Creació i muntatge del mecanisme de moviment del calaix
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

Afegir cartró darrere del mirall
Afegir cartró darrere del mirall
Afegir cartró darrere del mirall
Afegir cartró darrere del mirall
Afegir cartró darrere del mirall
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

Posar la peça final
Posar la peça final
Posar la peça final
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

Final
Final
Final
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ó;)

Desafiament compartiment secret
Desafiament compartiment secret
Desafiament compartiment secret
Desafiament compartiment secret

Gran premi en el repte compartiment secret

Recomanat: