Innholdsfortegnelse:

Ansiktsgjenkjenningsspeil med hemmelig rom: 15 trinn (med bilder)
Ansiktsgjenkjenningsspeil med hemmelig rom: 15 trinn (med bilder)

Video: Ansiktsgjenkjenningsspeil med hemmelig rom: 15 trinn (med bilder)

Video: Ansiktsgjenkjenningsspeil med hemmelig rom: 15 trinn (med bilder)
Video: DETROIT EVOLUTION - Детройт: станьте человеком, фанат фильм / фильм Reed900 2024, Juli
Anonim
Ansiktsgjenkjenningsspeil med hemmelig rom
Ansiktsgjenkjenningsspeil med hemmelig rom
Ansiktsgjenkjenningsspeil med hemmelig rom
Ansiktsgjenkjenningsspeil med hemmelig rom
Ansiktsgjenkjenningsspeil med hemmelig rom
Ansiktsgjenkjenningsspeil med hemmelig rom

Jeg har alltid blitt fascinert av de stadig kreative hemmelige rom som brukes i historier, filmer og lignende. Så da jeg så den hemmelige avdelingskonkurransen bestemte jeg meg for å eksperimentere med ideen selv og lage et vanlig speil som åpner en hemmelig sideskuff når den rette personen ser på den.

Ved å bruke en Raspberry Pi, litt kunnskap om python-programmering og butikklasse i 8. klasse, kan vi lage denne spiffy-enheten for å skjule objekter i ren sikt som bare den riktige brukeren vil ha tilgang til.

Jeg vil rette en spesiell takk til disse personene/plattformene der jeg også har fått informasjon og ressurser fra:

TeCoEd - Youtube -kanal

Emmet fra PiMyLifeUp

MJRoBot på Hackster.io (profil)

Gaven MacDonald - Youtube -kanal

Tucker Shannon on Thingiverse (profil)

Rekvisita

Rammemateriell:

  • Wood Plank (Dimensjonene til dette brettet var 42 "x 7,5" x 5/16 ")
  • Blyantramme (med glass)
  • Spraymaling
  • Enveis reflekterende lim
  • Glassrens og fille
  • MDF tre

Ansiktsgjenkjenning:

  • Raspberry Pi (jeg brukte Pi 3 B+, men det er andre alternativer)
  • Kameramodul
  • Trinnmotor

Verktøy:

  • Bordsag
  • Jig så
  • SandpapirTre
  • LimTape
  • Måle
  • Saks
  • Sprayflaske
  • 3D -skriver
  • Superlim

Trinn 1: Kutt for boksrammen

Kutt for boksrammen
Kutt for boksrammen
Kutt for boksrammen
Kutt for boksrammen
Kutt for boksrammen
Kutt for boksrammen
Kutt for boksrammen
Kutt for boksrammen

Jeg kjøpte en bilderamme fra bruktbutikken. Bare en advarsel, sørg for at planker som utgjør rammen er minst 1 1/2 brede. Dette er slik at du kan lime andre treplater på den med nok plass til å jobbe med. Sørg også for at glasset i rammen er helt klar. Jeg kjøpte en frostet ved et uhell og måtte deretter kjøpe en annen ramme bare for det klare glasset. Fordi rammen min er brukt, kan målingene for boksrammen variere.

  • Legg rammen i stående retning. Mål langsiden (LS) på glasshullssiden på rammen med ytterligere ½”både på toppen og bunnen. (dvs. legg til en tomme på langsiden av glasshullmålingene. Noter dette og merk LSM (Long Side Measurement).
  • På samme måte måler du oversiden av hullet og legger til ytterligere 1 ". Registrer dette og merk SSM (Short Side Measurement).
  • Skaff brettet ditt og kutt to LSM x 2”og to SSM x 2” med en bordsag.
  • Ta en av LSM -kuttene og mål et 2 "x1" rektangel som er 1 "fra bunnen og ½" fra venstre og høyre side (som vist på bilde 3).
  • Bruk et stikksag til å skjære ut hullet. Bruk deretter sandpapiret til å slipe ut kantene.

Trinn 2: Kutt for skuffen

Kutt for skuffen
Kutt for skuffen
Kutt for skuffen
Kutt for skuffen
Kutt for skuffen
Kutt for skuffen
Kutt for skuffen
Kutt for skuffen

Nå skal vi begynne å bygge skuffen (også kjent som et hemmelig rom).

  • Klipp ut to 4 "x 1" sider, en 3 "x 1" (bakkant), en 4 "x 1" (forkant) og en 4 "x 3" (plattform).
  • Lim den første 4 "x 1" siden langs 4 "siden av plattformen. Jeg la et par foldede papirer under plattformsiden slik at det ble litt løftet, på denne måten ville det ikke trekke hullet som jeg skar ut i LS -planken. Sett til tørk i 30 minutter.
  • Lim på samme måte 3 ⅜ "x 1" langs 3 ⅜ "-kanten av plattformen. Sett til tørk i 30 minutter. Lim deretter den andre 4 "x 1" siden på motsatt side av den første. Sett til tørk i 30 minutter.
  • Sett av kantkanten for øyeblikket. Det vil være det siste som limes på skuffen.
  • Når du er ferdig, sjekk om den passer inn i hullet du puslet inn i LSM -planken. Hvis ikke, slip hullet til skuffen lett glir inn og ut, og det er ingen dra.

Trinn 3: Sett rammen sammen

Å sette rammen sammen
Å sette rammen sammen
Å sette rammen sammen
Å sette rammen sammen
Å sette rammen sammen
Å sette rammen sammen

Med alle delene ferdige kan vi begynne å montere hele rammen.

  • Lim LSM -planken sentrert med glasshullet med en ½”på hver side. Sørg for at den er limt med ½”vekk fra hullet (som vist på bilde 1). Sett til tørk i 30 minutter.
  • Lim den første SSM -planken med kanten som berører innsiden av LSM -planken som nettopp ble limt. (Bruk en linjal for å sikre at den er limt på rett). Sett til tørk i 30 minutter.
  • Ta den andre LSM -siden og lim lik den første. Sørg for at det er ½”unna hullet, og at SSM som nettopp var festet er limt på innsiden av planken. Sett til tørk i 30 minutter.
  • Lim den siste SSM på overkanten. Siden du har to LSM -er på begge sider, avhengig av hvor rett du festet dem, må du kanskje slipe sidene av SSM -en for å sikre at den passer (klippingen min er noen ganger av). Sett til tørk i 30 minutter.
  • Mål det lille mellomrommet mellom bunnen av skuffen og rammen. Skjær et stykke MDF -tre med denne målingen, med 4 ". Du vil lage dette stykket nær skuffen, men berører det ikke. Det er ment å støtte skuffen med minimal friksjon.
  • Når alt var ferdig sprayet jeg rammen slik at alle brikkene passet.

Trinn 4: For speilet

For speilet
For speilet
For speilet
For speilet
For speilet
For speilet
For speilet
For speilet

Enveis filmlimet som jeg kjøpte av Amazon var rundt $ 10. Det er bedre kvaliteter som er litt dyrere hvis du er interessert. Den jeg bruker reflekterer, men du kan se at det ikke er et vanlig speil som du ville se i et hjem. De dyrere får deg det utseendet.

  • Rengjør glasset med glassrenser på begge sider.
  • Rull ut enveislimet og legg glasset på toppen. Klipp ut limet slik at det er minst ½”overflødig på hver side av glasset.
  • Sett glasset til side og fukt den ene siden av det med vann. Deretter skreller du plaststrøket av enveislimet og sprayer den nylig eksponerte siden med vann.
  • Plasser den våte siden av glasset på den våte siden av limet. La sitte i 30 minutter.
  • Vend om og bruk tommelen til å flate eventuelle bobler mellom limet og glasset. Skjær deretter overflødig lim rundt kantene.

Trinn 5: Installer Raspbian Stretch

Dette var min første gang jeg dypet inn i Raspberry Pi -miljøet, og jeg begynte å lete etter instruksjoner om hvordan jeg kan installere operativsystemet. Jeg fant til slutt en enkel opplæring på Youtube av TeCoEd som gikk gjennom prosessen med å få Stretch installert på SD -kortet (med en ganske nydelig introduksjon også). Her er lenken til opplæringen:

I hovedsak er alt du trenger å gjøre:

  • Formater SD -kortet ved å velge Disk >> Stasjonsverktøy >> Format. Last ned ZIP-filen for Raspian Stretch (finnes her:
  • Flash OS -bildet til SD -kortet. TeCoEd brukte Win32 Disk Imager for å fullføre dette. Jeg endte opp med å installere balenaEtcher som virket litt mer grei. (Her er nedlastingskoblingen for balenaEtcher:
  • Når du er i balenaEtcher velger du "Flash From File" og velger den tidligere nedlastede ZIP -filen. Velg deretter ønsket SD -kort (hvis det ikke velges automatisk). Trykk deretter på den saftige blitzknappen og vent på at magien skal skje.

Når det er installert på SD -kortet, kan du sette det inn i Raspberry Pi og gå gjennom den generiske Pi -oppsettprosessen.

Trinn 6: Installer OpenCV

Nå til de mer ansiktsgjenkjenningsorienterte delene. For å gjenkjenne ansikter må vi laste ned OpenCV -biblioteket som inneholder et stort antall verktøy for å arbeide med datasyn.

Å installere OpenCV var den vanskeligste delen av programvareaspektet for meg. Men etter å ha fulgt mange instruksjoner fant jeg endelig en opplæring av Emmet fra PiMyLifeUp som gjorde susen som finnes her:

Jeg vil ikke gå gjennom disse trinnene, siden du vil være bedre egnet til å følge dem fra lenken (med de gitte forklaringene og muligheten til å kopiere og lime inn direkte fra nettstedet med lettere bruk).

Trinn 7: Aktiver/test kameraet

Aktiver/test kameraet
Aktiver/test kameraet
Aktiver/test kameraet
Aktiver/test kameraet

Etter å ha installert OpenCV ble resten av reisen min fullført med en opplæring av MJRoBot på Hackster.io som du finner her:

Før vi begynner, vil jeg minne deg på at jeg ikke er den opprinnelige skaperen av disse skriptene, men endte med å endre deler av dem.

For å starte opp bør vi teste kameraet for å sikre at vi kan ta opp video på skjermen. Jeg brukte omtrent en time på å prøve å kjøre skriptet som ble gitt i trinn 3 i MJRoBot. Som livet ville ha det, må vi faktisk aktivere kameraet på Raspberry Pi (det viser seg at det kan være lurt å lese instruksjonene som følger med … mmm nah). Så etter å ha koblet kameraet til den riktige porten, følg disse trinnene:

  • Åpne en kommandoterminal og skriv sudo raspi-config
  • Velg "Aktiver kamera" (dette finnes kanskje under et enhetsalternativ)
  • Trykk "Enter"
  • Gå til "Fullfør", og du blir bedt om å starte på nytt

Følg deretter disse trinnene:

  • Gå til bringebærets hovedmeny (øverst til venstre)
  • Preferanser
  • Raspberry Pi -konfigurasjon
  • Grensesnitt
  • Velg deretter "Enabled" i Kamera
  • Deretter "OK"

Nå bør du kunne kjøre dette skriptet fra MJRoBots opplæring for å teste kameraet (husk at all denne koden pluss en mer grundig beskrivelse finnes i den medfølgende lenken ovenfor til MJRobots opplæring):

importer numpy som 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) # Flip camera vertically grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('grå', grå) k = cv2.waitKey (30) & 0xff hvis k == 27: # trykk 'ESC' for å avslutte break cap.release () cv2.destroyAllWindows ()

Den forrige koden skal vise to vinduer, ett i farger og det andre i gråtoner. Hvis du kom så langt, synes jeg du fortjener en god sandwich.

Trinn 8: Innsamling av data og opplæringsdata

Innsamling av data og opplæringsdata
Innsamling av data og opplæringsdata
Innsamling av data og opplæringsdata
Innsamling av data og opplæringsdata
Innsamling av data og opplæringsdata
Innsamling av data og opplæringsdata

I den medfølgende opplæringen går forfatteren nærmere inn på prosessene i koden som snart kommer, men siden dette er instruksjoner om hvordan dette speilet ble laget, vil jeg ikke gå nærmere inn på historien eller den kompliserte mekanikken. Jeg anbefaler deg imidlertid å bruke en måned av livet ditt på å lese om disse to tingene, da de kan tjene tankene dine godt.

Det er omtrent tre skript til å kjøre før vi kan få alt til å fungere. Den første er for å samle inn data, den andre er for å trene den, og den siste er faktisk for gjenkjenning. Innsamling av data krever at faktiske bilder av ansiktet tas og lagres på et bestemt sted for trening. Skaperen av denne koden gjorde det veldig enkelt å få alt dette gjort, så jeg anbefaler å følge disse instruksjonene for å unngå hodepine.

Åpne en kommandolinje og lag en ny katalog som heter den noe morsomt (jeg kalte min FaceRec)

mkdir FaceRec

Nå, bytt katalog til FaceRec og lag en underkatalog, og sørg for å kalle det datasettet

cd FaceRec

mkdir datasett

Mens vi er i gang, kan vi også lage den andre underkatalogen som heter trener

mkdir trener

Nå kan du kjøre og følge instruksjonene i det første skriptet som tar bilder av en bruker. (Bare på hodet, husk å angi bruker -ID som enten 1, 2, 3 osv.)

import cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set video width cam.set (4, 480) # set video height face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # For hver person, skriv inn et numerisk ansikts -ID face_id = input ('\ n skriv inn bruker -ID slutt trykk ==>') utskrift ("\ n [INFO] Initialiserer ansiktsopptak. Se på kameraet og vent …") # Initialiser individuell prøvetaking av ansiktstall count = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip video image vertically grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansikter = face_detector.detectMultiScale (grå, 1,3, 5) for (x, y, w, h) i ansikter: cv2.rektangel (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Lagre det fangede bildet i datasettmappen cv2.imwrite ("datasett/bruker." + Str (face_id) + '.' + Str (count) + ".jpg", grå [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Trykk på 'ESC' for å avslutte videoen hvis k == 27: bryt eliftelling> = 30: # Ta 30 ansiktsprøver og stopp videoopptaket k print ("\ n [INFO] Avslutter program og opprydding") cam.release () cv2.destroyAllWindows ()

På dette tidspunktet må du sørge for at du har installert pute på Pi. Hvis ikke, kjør kommandoen:

pip installer pute

Etter at det er fullført kan du kjøre treningsskriptet (andre skript) som sømløst vil gi deg en.yaml -fil som skal brukes i det endelige skriptet

import cv2import numpy as np from PIL import Image import os # Path for face image database path = 'datasett' gjenkenner = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funksjon for å få bildene og etikettdata def getImagesAndLabels (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] faceSamples = ids = for imagePath i imagePaths: PIL_img = Image.open (imagePath).convert ('L') # konverter det til gråtoner img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. split (".") [1]) ansikter = detector.detectMultiScale (img_numpy) for (x, y, w, h) i ansikter: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Treningsflater. Det vil ta noen sekunder. Vent …") ansikter, ids = getImagesAndLabels (path) anerkjenner.trening (ansikter, np.array (ids)) # Lagre modellen i trainer/trainer.yml anerkjennere.skrive ('trainer/trainer.yml') # gjenkjenne. lagre () jobbet på Mac, men ikke på Pi # Skriv ut antall ansikter som er trent og avslutt programutskrift ("\ n [INFO] {0} ansikter trent. Avslutter program".format (len (np.unique (ids))))

Det som er kult med dette settet med skript, er at flere ansikter kan legges inn i systemet, noe som betyr at flere individer kan få tilgang til speilets indre hvis det er ønskelig.

Nede under har jeg Data Capture script og Training script tilgjengelig for nedlasting.

Trinn 9: Ansiktsgjenkjenningstid

Ansiktsgjenkjenningstid
Ansiktsgjenkjenningstid
Ansiktsgjenkjenningstid
Ansiktsgjenkjenningstid

Til slutt kan vi kjøre gjenkjenningsskriptet. Mer kode ble lagt til i dette skriptet for å gjøre motorprosessen funksjonell, så jeg skal forklare disse delene litt mer grundig. Jeg vil dele det opp i seksjoner, men jeg vil sette hele manuset på slutten av trinnet hvis det er det du er ute etter.

Vi starter med å importere alle modulene vi trenger og setter deretter GPIO -modus til GPIO. BCM

importer numpy som np

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

Denne neste listen som heter ControlPin er en rekke tall som representerer utgangspinner som skal brukes til vår trinnmotor.

ControlPin = [14, 15, 18, 23]

Forløkken setter disse pinnene som utganger og sørger deretter for at de er slått av. Jeg har fremdeles litt kode her for å la skuffen lukke ved å trykke på en knapp, men jeg bestemte meg for å bruke en tidtaker i stedet.

GPIO.setup (ControlPin , GPIO. OUT)

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

De to neste variablene er sekvenser vi skal bruke til å drive motoren. Jeg lærte denne informasjonen fra en fantastisk video av Gaven MacDonald, som jeg anbefaler på det sterkeste å se når han går i dybden med ikke bare koden, men selve motoren (finnes her: https://www.youtube.com/embed/Dc16mKFA7Fo). I hovedsak blir hver sekvens iterert gjennom bruk av de nestede for-loops i de kommende openComp- og closeComp-funksjonene. Hvis du ser nøye etter er seq2 det stikk motsatte av seq1. Jepp, du gjettet det. Den ene er for å flytte motoren fremover, og den andre er for revers.

seq1 =

seq2 =

Fra og med openComp-funksjonen lager vi en for-loop som vil gjenta 1024 ganger. I følge MacDonalds video ville 512 iterasjoner gi en full rotasjon av motoren, og jeg fant ut at omtrent to rotasjoner var en god lengde, men dette kan justeres avhengig av individets størrelse. Den neste forløkken består av 8 iterasjoner for å ta hensyn til de 8 matrisene som finnes i seq1 og seq2. Og til slutt gjentar den siste forløkken fire ganger for de fire elementene som finnes i hver av disse matrisene, samt de 4 GPIO-pinnene vi har motoren tilkoblet. Linjen under her velger GPIO -pinnen og slår den deretter på eller av avhengig av hvilken iterasjon den er på. Linjen etter gir litt buffertid for at ikke motoren skal rotere i det hele tatt. Etter at motoren roterer for å flytte skuffen ut, sover den i 5 sekunder før den går videre. Denne tiden kan justeres her, eller du kan aktivere den kommenterte koden som gjør det mulig å bruke en trykknapp for å videresende med skriptet i stedet for en timer.

for jeg i rekkevidde (1024):

for halvt trinn i området (8): for pinne i område (4): GPIO.output (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) '' 'mens True: if GPIO.input (2) == GPIO. LOW: pause; '' 'time.sleep (5)

CloseComp -funksjonen fungerer på en lignende måte. Etter at motoren går tilbake, fortsetter jeg med å sette de siste GPIO -pinnene til lave for å sikre at vi ikke sløser med energi, og så legger jeg til tre sekunder til før jeg går videre.

for jeg i rekkevidde (1024):

for halv trinn i området (8): for pinne i område (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)

Hoveddelen av den neste delen brukes til å sette opp kameraet og begynne ansiktsgjenkjenning. Igjen, MKRoBots instruksjoner går mer inn i delene, men foreløpig viser jeg bare delene som brukes til speilet.

Først endret jeg navnene på listen slik at navnet mitt er i indeksen som jeg tildelte det mens jeg samlet dataene (i mitt tilfelle 1). Og så satte jeg resten av verdiene til None siden jeg ikke hadde flere ansikter i datasettet.

names = ['None', 'Daniel', 'None', 'None', 'None', 'None']

De siste kodelinjene våre er implementert i thicc for-loop. Jeg opprettet en variabel for å lagre konfidensen som et heltall (intConfidence) før variabelens tillit blir til en streng. Deretter bruker jeg en if-setning for å sjekke om tilliten er større enn 30 og om ID-en (hvilken person datamaskinen oppdager, i dette tilfellet “Daniel”) er lik navnet mitt. Etter at dette er bekreftet kalles funksjonen openComp som (som forklart før) beveger motoren, sparker ut etter 5 sekunder og deretter fortsetter å lukkeComp som beveger motoren i motsatt retning og gjør noen opprydding før du fortsetter med thicc loop.

hvis intConfidence> 30 og id == 'Daniel':

openComp () closeComp ()

En feil som jeg fant her er at noen ganger etter closeComp-returen fortsetter koden, men den betingede if-setningen viser seg å være sann igjen som om den leser videofeed som fremdeles er i bufferen. Selv om det ikke skjer hver gang jeg ennå har funnet en måte å sikre at det aldri skjer, så gi meg beskjed i kommentarene hvis noen har noen ideer.

Her er hele skriptet alt på ett sted (og like under dette er det nedlastbare):

importer 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 i område (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Trinn 10: Montering av Pi og tilkobling av motoren

Montering av Pi og tilkobling av motor
Montering av Pi og tilkobling av motor
Montering av Pi og tilkobling av motor
Montering av Pi og tilkobling av motor
Montering av Pi og tilkobling av motor
Montering av Pi og tilkobling av motor

Montering av Raspberry Pi på rammen var ganske enkel. Jeg designet en liten 90-graders albue med det ene ansiktet med et hull og den andre siden var helt flat. Etter 3D -utskrift av to av disse kan de festes med skruer til Raspberry Pi på monteringshullene (jeg brukte de to hullene på hver side av GPIO -pinnene).

Deretter fortsatte jeg med å bruke superlim på de motsatte sidene av de 3D -trykte albuene for å lime Pi like over skuffen på rammen. Etter å ha latt limet tørke, var jeg i stand til å fjerne eller bytte Pi på plass enkelt og praktisk med bare de to skruene. Jeg har.stl for albuen lenket nedenfor.

Nå er det bare å koble motordriveren til PI -en med henholdsvis IN1, IN2, IN3, IN4 til GPIO 14, 15, 18, 23. Til slutt kobler du 5v- og jordpinnene på kontrollerkortet til 5v -utgangen og jordpinnene på Pi.

Her er en lenke til Pi's Pinout for litt referanse:

Trinn 11: Montering av kameraet

Montering av kameraet
Montering av kameraet
Montering av kameraet
Montering av kameraet
Montering av kameraet
Montering av kameraet

Montering av kameraet var litt mindre robust enn Pi, men metoden fikk jobben gjort. Etter å ha designet og skrevet ut en tynn stråle med 2 hull i hver ende festet jeg strålen til Rasberry Pi gjennom monteringshullet. Deretter er det bare å feste kameraet til motsatt ende av strålen med en annen skrue. Ta-da! Det ser pen flue ut.

Trinn 12: Lage og montere mekanismen for skuffeskift

Lage og montere skuff-flytte-mekanismen
Lage og montere skuff-flytte-mekanismen
Opprette og montere skuff-flytte-mekanisme
Opprette og montere skuff-flytte-mekanisme
Lage og montere skuff-flytte-mekanismen
Lage og montere skuff-flytte-mekanismen

Dette trinnet ble gjort enkelt takket være de alltid velvillige gaver fra maker -samfunnet. Etter et raskt søk på Thingiverse kunne jeg finne en lineær aktuator opprettet av TucksProjects (funnet her: https://www.thingiverse.com/thing:2987762). Alt som var igjen å gjøre var å slå det på et SD -kort og la skriveren gjøre jobben.

Jeg endte opp med å gå inn på Fusion 360 og redigerte sporen siden akselen på motoren min var for stor for den som ble levert av TucksProjects. Jeg har.stl for det nedenfor. Etter at utskriften var ferdig, trenger vi bare å montere den ved å plassere sporen på motorakselen, deretter ved å feste motoren og skapets sider med 2 skruer (sørg for at du setter stativet i mellom før du lukker det). Jeg endte opp med å måtte kutte en tomme av stativet slik at det skulle passe mellom skuffen og rammen.

Nå gjenstår det bare å feste mekanismen til rammen og skuffen. "Men hvordan skal vi gjøre det?" du spør … ja, si det med meg: Super Lim. Som vist på bildene ovenfor, plasserer du bare mekanismen mot bunnen av rammen og skyver den opp mot treverket som skuffen glir på. Det er viktig her at du prøver å få stativet/mekanismen så parallell med rammen som mulig, slik at når mekanismen beveger seg skyver den skuffen rett og ikke i en vinkel. Etter at limet har tørket, legg litt mer lim på kanten av stativet og flytt skuffen på plass og la det tørke. Når den er ferdig, har vi en solid mekanisme for å skyve den hemmelige skuffen inn og ut.

Trinn 13: Legge i papp bak speilet

Legge til papp bak speilet
Legge til papp bak speilet
Legge til papp bak speilet
Legge til papp bak speilet
Legge til papp bak speilet
Legge til papp bak speilet

For å få denne toveisfilmen til å se mer speilaktig ut, fant jeg ut at den tjener vårt formål godt å plassere papp bak glasset. Kartongen som brukes er en som fulgte med rammen, men et stykke som ble kuttet for å passe vil fungere. Dette sikrer heller ikke noe lys fra kameraets LED, motorstyringen eller Pi -skjermen på den andre siden av speilet. Med alt på plass, bruk en blyant for å markere hvor kameraet sitter på pappet. Bruk deretter en barberhøvel til å skjære et rektangel slik at kameraet kan titte gjennom når det er på plass.

Trinn 14: Sette på det siste stykket

Tar på seg det siste stykket
Tar på seg det siste stykket
Tar på seg det siste stykket
Tar på seg det siste stykket

Det siste du må gjøre er å sette på den fremre delen av skuffen som var satt til side tidligere. Flytt motoren slik at skuffen stikker ut. Lim deretter den fremre delen på plass slik at skuffstykket er sentrert (det skal være litt heng på alle sider. Så kan du bare henge det på en vegg.

Trinn 15: Avslutt

Finale
Finale
Finale
Finale

Der har du det! Det er flere forbedringer som kan gjøres, for eksempel å legge til den trykknappen, kjøpe en bedre toveis film og fikse den feilen i koden, men alt i alt får den jobben gjort: det ser ut som et speil, det gjenkjenner den forhåndsbestemte brukerens ansikt, og den åpner den søte lille skuffen. Som alltid vil jeg gjerne høre tankene dine, spørsmålene og memoarene i kommentarene nedenfor.

Samlet vurdering: 10/10

Kommentarer: #WouldNotTryAgain … med mindre jeg kunne følge denne instruksen;)

Hemmelig romutfordring
Hemmelig romutfordring
Hemmelig romutfordring
Hemmelig romutfordring

Storpris i den hemmelige romutfordringen

Anbefalt: