Indholdsfortegnelse:

Ansigtsgenkendelsesspejl med hemmeligt rum: 15 trin (med billeder)
Ansigtsgenkendelsesspejl med hemmeligt rum: 15 trin (med billeder)

Video: Ansigtsgenkendelsesspejl med hemmeligt rum: 15 trin (med billeder)

Video: Ansigtsgenkendelsesspejl med hemmeligt rum: 15 trin (med billeder)
Video: "Hva' Sker Der Dansker" Fuldt Show | 2016 Tour 2024, Juli
Anonim
Ansigtsgenkendelsesspejl med hemmeligt rum
Ansigtsgenkendelsesspejl med hemmeligt rum
Ansigtsgenkendelsesspejl med hemmeligt rum
Ansigtsgenkendelsesspejl med hemmeligt rum
Ansigtsgenkendelsesspejl med hemmeligt rum
Ansigtsgenkendelsesspejl med hemmeligt rum

Jeg har altid været fascineret af de evigt kreative hemmelige rum, der bruges i historier, film og lignende. Så da jeg så den hemmelige afdelingskonkurrence, besluttede jeg at eksperimentere med ideen selv og lave et almindeligt spejl, der åbner en hemmelig sideskuffe, når den rigtige person kigger ind i den.

Ved at bruge en Raspberry Pi, noget kendskab til pythonprogrammering og butiksklasse i 8. klasse, kan vi oprette denne spiffy enhed til at skjule objekter i almindeligt syn, som kun den korrekte bruger har adgang til.

Jeg vil gerne rette en særlig tak til disse mennesker/platforme, hvor jeg også har mine oplysninger og ressourcer fra:

TeCoEd - Youtube -kanal

Emmet fra PiMyLifeUp

MJRoBot på Hackster.io (profil)

Gaven MacDonald - Youtube -kanal

Tucker Shannon on Thingiverse (profil)

Forbrugsvarer

Rammeudstyr:

  • Træplank (Dimensionerne på dette bræt var 42 "x 7,5" x 5/16 ")
  • Blyantbilledramme (med glas)
  • Spraymaling
  • Envejs reflekterende klæbemiddel
  • Glasrens og klud
  • MDF Træ

Ansigtsgenkendelsesudstyr:

  • Raspberry Pi (jeg brugte Pi 3 B+, men der er andre muligheder)
  • Kameramodul
  • Trinmotor

Værktøjer:

  • Bordsav
  • Jig så
  • Sandpapir Træ
  • LimTape
  • Måle
  • Saks
  • Spray dåse
  • 3D printer
  • Super lim

Trin 1: Skær til boksrammen

Nedskæringer til boksrammen
Nedskæringer til boksrammen
Nedskæringer til boksrammen
Nedskæringer til boksrammen
Nedskæringer til boksrammen
Nedskæringer til boksrammen
Nedskæringer til boksrammen
Nedskæringer til boksrammen

Jeg købte en billedramme fra genbrugsbutikken. Bare en advarsel, sørg for at plankerne, der udgør rammen, er mindst 1 1/2 brede. Dette er så du kan lime andre træplader på det med nok plads til at arbejde med. Sørg også for, at glasset i rammen er helt klar. Jeg købte en frostet ved et uheld og måtte derefter købe en anden ramme bare til det klare glas. Fordi min ramme er brugt, kan målingerne for boksrammen variere.

  • Læg rammen i stående retning. Mål de lange sider (LS) af glassets hulside på rammen med yderligere ½”både på toppen og bunden. (dvs. tilføj en tomme til langsiden af målingerne af glashuller. Noter dette og mærk LSM (Long Side Measurement).
  • Mål på samme måde oversiden af hullet og tilføj yderligere 1 ". Registrer dette og mærk SSM (Short Side Measurement).
  • Få dit bræt og skær med en bordssav to LSM x 2”og to SSM x 2”.
  • Tag et af LSM -snittene og mål et 2 "x1" rektangel, der er 1 "fra bunden og ½" fra venstre og højre side (som vist på billede 3).
  • Brug et stiksav til at skære hullet ud. Brug derefter sandpapiret til at slibe kanterne ud.

Trin 2: Skær til skuffen

Snit til skuffen
Snit til skuffen
Snit til skuffen
Snit til skuffen
Snit til skuffen
Snit til skuffen
Snit til skuffen
Snit til skuffen

Nu begynder vi at bygge skuffen (også kendt som et hemmeligt rum).

  • Skær to sider på 4 "x 1" ud, en 3 "x 1" (bagkant), en 4 "x 1" (forkant) og en 4 "x 3" (platform).
  • Lim den første 4 "x 1" side langs 4 "siden af platformen. Jeg lagde et par foldede papirer under platformens side, så det blev let løftet, på denne måde ville det ikke trække på det hul, som jeg skar ud i LS -planken. Sæt til tørre i 30 minutter.
  • På samme måde limes 3 "x 1" langs platformens 3 ⅜ "kant. Sæt til tørre i 30 minutter. Lim derefter den anden 4 "x 1" side på den modsatte side af den første. Sæt til tørre i 30 minutter.
  • Afsæt forkanten for nu. Det vil være det sidste, der er limet på skuffen.
  • Når du er færdig, skal du kontrollere, om den passer ind i det hul, du har puslet i LSM -planken. Hvis ikke, slib hullet, indtil skuffen let glider ind og ud, og der ikke er træk.

Trin 3: Sæt rammen sammen

At sætte rammen sammen
At sætte rammen sammen
At sætte rammen sammen
At sætte rammen sammen
At sætte rammen sammen
At sætte rammen sammen

Med alle delene færdige kan vi begynde at samle hele rammen.

  • Lim LSM -planken centreret med glashullet med et ½”på hver side. Sørg for, at den er limet med ½”væk fra hullet (som vist på billede 1). Sæt til tørre i 30 minutter.
  • Lim den første SSM -planke med kanten, der rører indersiden af LSM -planken, der lige var limet. (Brug en lineal til at sikre, at den er limet på lige). Sæt til tørre i 30 minutter.
  • Tag den anden LSM -side og lim lignende den første. Sørg for, at det er ½”væk fra hullet, og at den SSM, der lige var fastgjort, er limet på indersiden af planken. Sæt til tørre i 30 minutter.
  • Lim den sidste SSM på den øverste kant. Da du har to LSM’er på begge sider, afhængigt af hvor lige du har fastgjort dem, skal du muligvis slibe SSM -siderne ned for at sikre, at det passer (min skæring er nogle gange slukket). Sæt til tørre i 30 minutter.
  • Mål det lille mellemrum mellem bunden af skuffen og rammen. Skær et stykke MDF -træ med denne måling med 4 ". Du vil gerne lave dette stykke tæt på skuffen, men rører det ikke. Det er beregnet til at understøtte skuffen med minimal friktion.
  • Når alt var færdigt, sprøjtede jeg rammen, så alle stykkerne passede.

Trin 4: Til spejlet

Til spejlet
Til spejlet
Til spejlet
Til spejlet
Til spejlet
Til spejlet
Til spejlet
Til spejlet

Envejs filmklæbemidlet, som jeg købte af Amazon, var omkring $ 10. Der er dem af bedre kvalitet, der er lidt dyrere, hvis du er interesseret. Den, jeg bruger, afspejler, men du kan se, at det ikke er et almindeligt spejl, som du ville se i et hjem. De dyrere får dig det look.

  • Rengør glasset med glasrens på begge sider.
  • Rul envejsklæbemidlet ud og læg glasset ovenpå. Skær klæbemidlet ud, så der er mindst ½”overskud på hver side af glasset.
  • Sæt glasset til side og fugt den ene side af det med vand. Skræl derefter plastfrakken af envejsklæbemidlet og sprøjt den nyligt eksponerede side med vand.
  • Placer den våde side af glasset på den våde side af klæbemidlet. Lad sidde i 30 minutter.
  • Vend om og brug tommelfingeren til at flade eventuelle bobler mellem klæbemidlet og glasset. Skær derefter det overskydende klæbemiddel rundt om kanterne.

Trin 5: Installer Raspbian Stretch

Dette var min første gang, der gik ind i Raspberry Pi -miljøet, og jeg begyndte at lede efter instruktioner om, hvordan man får OS installeret. Til sidst fandt jeg en ligetil tutorial på Youtube af TeCoEd, der gennemgik processen med at få Stretch installeret på SD -kortet (også med en ret dejlig introduktion). Her er linket til denne vejledning:

I det væsentlige er alt du skal gøre:

  • Formater SD -kortet ved at vælge dit Drev >> Drevværktøjer >> Format. Download ZIP-filen til Raspian Stretch (findes her:
  • Flash OS -billedet til SD -kortet. TeCoEd brugte Win32 Disk Imager til at fuldføre dette. Jeg endte med at installere balenaEtcher, som virkede lidt mere ligetil. (Her er downloadlinket til balenaEtcher:
  • Når du er i balenaEtcher, skal du vælge "Flash From File" og vælge den tidligere downloadede ZIP -fil. Vælg derefter det ønskede SD -kort (hvis det ikke vælges automatisk). Tryk derefter på den saftige flash -knap, og vent på, at magien skal ske.

Når det er installeret på SD -kortet, kan du indsætte det i Raspberry Pi og gennemgå den generiske Pi -installationsproces.

Trin 6: Installer OpenCV

Nu til de mere ansigtsgenkendelsesorienterede dele. For at genkende ansigter skal vi downloade OpenCV -biblioteket, som indeholder et stort antal værktøjer til at arbejde med computersyn.

Installation af OpenCV var den mest besværlige del af software aspektet for mig. Men efter at have fulgt mange instruktioner fandt jeg endelig en tutorial af Emmet fra PiMyLifeUp, der gjorde tricket, som findes her:

Jeg går ikke igennem disse trin, da du vil være bedre egnet til at følge dem fra linket (med de givne forklaringer og muligheden for lettere at kopiere og indsætte direkte fra webstedet).

Trin 7: Aktiver/test kameraet

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

Efter at have installeret OpenCV blev resten af min rejse gennemført ved hjælp af en tutorial af MJRoBot på Hackster.io fundet her:

Inden vi går i gang vil jeg gerne minde dig om, at jeg ikke er den oprindelige skaber af disse scripts, men endte med at ændre dele af dem.

For at starte skal vi teste kameraet for at sikre, at vi kan optage video på skærmen. Jeg brugte cirka en time på at køre scriptet i trin 3 i MJRoBot. Som livet ville have det, er vi faktisk nødt til at aktivere kameraet på Raspberry Pi (viser sig at det kan være en god idé at læse de medfølgende instruktioner … mmm nej). Så efter at have tilsluttet kameraet til den korrekte port, følg disse trin:

  • Åbn en kommandoterminal, og skriv sudo raspi-config
  • Vælg "Aktiver kamera" (dette findes muligvis under en enhedsindstilling)
  • Tryk på "Enter"
  • Gå til "Afslut", og du bliver bedt om at genstarte

Følg derefter disse trin:

  • Gå til hindbærets hovedmenu (øverst til venstre)
  • Præferencer
  • Raspberry Pi -konfiguration
  • Grænseflader
  • Vælg derefter "Aktiveret" i Kamera
  • Derefter "OK"

Nu skulle du være i stand til at køre dette script med succes fra MJRoBots tutorial for at teste kameraet (husk at al denne kode plus en mere dybdegående beskrivelse findes i det medfølgende link ovenfor til MJRobots tutorial):

import 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 (ramme, -1) # Flip kamera lodret grå = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('grå', grå) k = cv2.waitKey (30) & 0xff hvis k == 27: # tryk på 'ESC' for at afslutte break cap.release () cv2.destroyAllWindows ()

Den tidligere kode skulle vise to vinduer, et i farver og det andet i gråtoner. Hvis du nåede så langt, synes jeg, at du fortjener en dejlig sandwich.

Trin 8: Indsamling af data og uddannelsesdata

Indsamling af data og uddannelsesdata
Indsamling af data og uddannelsesdata
Indsamling af data og uddannelsesdata
Indsamling af data og uddannelsesdata
Indsamling af data og uddannelsesdata
Indsamling af data og uddannelsesdata

I den medfølgende vejledning går forfatteren langt mere i dybden med kodens processer, der snart skal leveres, men da dette er instruktioner om, hvordan dette spejl blev lavet, vil jeg ikke gå i dybden med historien eller den komplicerede mekanik. Jeg anbefaler dog, at du tager en måned af dit liv med at læse om disse to ting, da de kan tjene dit sind godt.

Der er næsten tre scripts til at køre, før vi kan få det hele til at fungere. Den første er til indsamling af data, den anden er til træning af den, og den sidste er faktisk til genkendelse. Indsamling af data kræver, at faktiske billeder af ansigtet tages og opbevares et bestemt sted til træning. Skaberen af denne kode gjorde det meget enkelt at få alt dette gjort, så jeg anbefaler at følge disse instruktioner for at undgå hovedpine.

Åbn en kommandolinje, og lav en ny mappe, der kalder den noget sjovt (jeg kaldte min FaceRec)

mkdir FaceRec

Skift nu bibliotek til FaceRec, og sørg for, at et underkatalog sørger for at navngive det datasæt

cd FaceRec

mkdir datasæt

Mens vi er i gang, kan vi også lave den anden underkatalog, der hedder træner

mkdir træner

Nu kan du køre og følge anvisningerne i det første script, som vil tage billeder af en bruger. (Bare et head up, sørg for at indtaste bruger -id'et som enten 1, 2, 3 osv.)

import cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # sæt videobredde cam.set (4, 480) # sæt videohøjde face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # For hver person, indtast et numerisk ansigt -id face_id = input ('\ n indtast bruger -id slut tryk ==>') udskriv ("\ n [INFO] Initialiserer ansigtsoptagelse. Se på kameraet og vent …") # Initialiser individuelle sampling ansigtsantal count = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip video image lodret grå = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansigter = face_detector.detectMultiScale (grå, 1,3, 5) for (x, y, w, h) i ansigter: cv2.rektangel (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Gem det optagne billede i datasætmappen cv2.imwrite ("datasæt/bruger." + Str (face_id) + '.' + Str (count) + ".jpg", grå [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Tryk på 'ESC' for at afslutte video, hvis k == 27: break elif count> = 30: # Tag 30 ansigtsprøver, og stop video brea k print ("\ n [INFO] Afslutter program og oprydning") cam.release () cv2.destroyAllWindows ()

På dette tidspunkt skal du sørge for at have installeret pude på Pi. Hvis ikke, skal du køre kommandoen:

pip installer pude

Når det er afsluttet, kan du køre træningsscriptet (andet script), som problemfrit vil give dig en.yaml -fil, der vil blive brugt i det endelige script

import cv2import numpy som np fra PIL import Billedimport os # Sti til ansigtsbilleddatabasesti = 'datasæt' anerkender = cv2.face. LBPHFaceRecognizer_create () detektor = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funktion for at hente billederne og mærke data def getImagesAndLabels (sti): imagePaths = [os.path.join (sti, f) for f i os.listdir (sti)] 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]) ansigter = detektor.detectMultiScale (img_numpy) for (x, y, w, h) i ansigter: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Træningsflader. Det vil tage et par sekunder. Vent …") ansigter, ids = getImagesAndLabels (sti) anerkender.train (ansigter, np.array (ids)) # Gem modellen i trainer/trainer.yml anerkender.skrive ('træner/træner.yml') # genkender.save () arbejdede på Mac, men ikke på Pi # Udskriv antallet af ansigter, der er uddannet, og afslut programudskrivning ("\ n [INFO] {0} uddannede ansigter. Afslutter program".format (len (np.unique (ids))))

Det fede ved dette sæt scripts er, at flere ansigter kan indtastes i systemet, hvilket betyder, at flere individer kan få adgang til spejlets indre, hvis det ønskes.

Nedenfor har jeg Data Capture script og Training script tilgængeligt til download.

Trin 9: Ansigtsgenkendelsestid

Ansigtsgenkendelsestid
Ansigtsgenkendelsestid
Ansigtsgenkendelsestid
Ansigtsgenkendelsestid

Endelig kan vi køre genkenderscriptet. Der blev tilføjet mere kode til dette script for at gøre motorprocessen funktionel, så jeg vil forklare disse dele lidt mere grundigt. Jeg vil dele det op i sektioner, men jeg vil lægge hele scriptet i slutningen af trinnet, hvis det er det, du leder efter.

Vi starter med at importere alle de moduler, vi skal bruge, og derefter indstiller GPIO -tilstanden til GPIO. BCM

import numpy som np

import os importtid import RPi. GPIO som GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM)

Denne næste liste med navnet ControlPin er en række tal, der repræsenterer outputpinde, der vil blive brugt til vores trinmotor.

ControlPin = [14, 15, 18, 23]

Forløkken sætter disse ben som udgange og sørger derefter for, at de er slukket. Jeg har stadig lidt kode herinde for at lade skuffen lukke ved et tryk på en knap, men jeg besluttede at bruge en timer i stedet.

GPIO.setup (ControlPin , GPIO. OUT)

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

De næste to variabler er sekvenser, vi vil bruge til at drive motoren. Jeg lærte disse oplysninger fra en vidunderlig video af Gaven MacDonald, som jeg stærkt anbefaler at se, da han går i dybden med ikke kun koden, men den faktiske motor (findes her: https://www.youtube.com/embed/Dc16mKFA7Fo). I det væsentlige gentages hver sekvens ved hjælp af de indlejrede for-loops i de kommende openComp- og closeComp-funktioner. Hvis du ser nærmere på, er seq2 det stik modsatte af seq1. Ja, du gættede det. Den ene er til at flytte motoren fremad, og den anden er til baglæns.

seq1 =

seq2 =

Fra og med vores openComp-funktion skaber vi en for-loop, der gentages 1024 gange. Ifølge MacDonalds video ville 512 iterationer give en fuld rotation af motoren, og jeg fandt ud af, at omkring to rotationer var en god længde, men dette kan justeres afhængigt af en persons størrelse. Den næste for-loop består af 8 iterationer for at tage højde for de 8 arrays, der findes i seq1 og seq2. Og endelig gentager den sidste for-loop fire gange for de fire emner, der findes i hver af disse arrays samt de 4 GPIO-ben, vi har vores motor tilsluttet. Linjen her under vælger GPIO -stiften og tænder den derefter enten eller fra, afhængigt af hvilken iteration den er tændt. Linjen efter giver en vis buffertid, så vores motor slet ikke roterer. Når motoren roterer for at flytte skuffen ud, sover den i 5 sekunder, før den fortsætter. Denne tid kan justeres her, eller du kan aktivere den kommenterede kode, der gør det muligt at bruge en trykknap til at videresende med scriptet frem for en timer.

for i inden for rækkevidde (1024):

for halvtrin i området (8): for pin 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 -funktionen fungerer på en lignende måde. Efter at motoren bevæger sig tilbage, fortsætter jeg med at indstille vores sidste GPIO -ben til lavt for at sikre, at vi ikke spilder energi, og derefter tilføjer jeg tre sekunder mere, før jeg går videre.

for i inden for rækkevidde (1024):

for halvtrin i området (8): for pin i område (4): GPIO.output (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) print ("rum lukket") GPIO.output (ControlPin [0], 0) GPIO.output (ControlPin [3], 0) time.sleep (3)

Hovedparten af den næste del bruges til at opsætte kameraet og starte ansigtsgenkendelsen. Igen går MKRoBots instruktioner mere ind i delene, men i øjeblikket viser jeg bare de dele, der bruges til spejlet.

Først ændrede jeg listenavne, så mit navn er i indekset, som jeg tildelte det, mens jeg indsamlede dataene (i mit tilfælde 1). Og så satte jeg resten af værdierne til None, da jeg ikke havde flere ansigter i datasættet.

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

Vores sidste par kodelinjer er implementeret i thicc for-loop. Jeg oprettede en variabel for at gemme tilliden som et heltal (intConfidence), før variabelens tillid bliver til en streng. Derefter bruger jeg en if-sætning til at kontrollere, om tilliden er større end 30, og om id'et (hvilken person computeren registrerer, i dette tilfælde "Daniel") er lig med mit navn. Efter at dette er bekræftet kaldes funktionen openComp, som (som forklaret før) bevæger motoren, sparker ud efter 5 sekunder og derefter fortsætter med at lukkeComp, der bevæger motoren i den modsatte retning og foretager en vis oprydning, inden du fortsætter med ticc -sløjfen.

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

openComp () closeComp ()

En fejl, jeg fandt her, er, at nogle gange efter closeComp vender koden videre, men den betingede if-sætning viser sig at være sand igen, som om den læser videofeed, der stadig er i bufferen. Selvom det ikke sker hver gang, jeg endnu ikke har fundet en måde at sikre, at det aldrig sker, så lad mig vide det i kommentarerne, hvis nogen har nogen ideer.

Her er hele scriptet på ét sted (og lige under dette kan downloades):

import cv2

import numpy som np import os import tid import RPi. GPIO som 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 =

Trin 10: Montering af Pi og tilslutning af motoren

Montering af Pi og tilslutning af motoren
Montering af Pi og tilslutning af motoren
Montering af Pi og tilslutning af motoren
Montering af Pi og tilslutning af motoren
Montering af Pi og tilslutning af motoren
Montering af Pi og tilslutning af motoren

Montering af Raspberry Pi på rammen var ret enkel. Jeg designede en lille 90-graders albue med det ene ansigt med et hul, og den anden side var helt flad. Efter 3D -udskrivning af to af disse kan de fastgøres med skruer til Raspberry Pi på dens monteringshuller (jeg brugte de to huller på hver side af GPIO -benene).

Jeg fortsatte derefter med at bruge superlim på de modsatte sider af de 3D -trykte albuer til at lime Pi lige over skuffen på rammen. Efter at have ladet limen tørre var jeg i stand til at fjerne eller udskifte Pi'en på plads enkelt og bekvemt med kun de to skruer. Jeg har.stl til albuen forbundet nedenfor.

Tilslut nu blot motordriveren til PI'en med IN1, IN2, IN3, IN4 tilslutning til henholdsvis GPIO 14, 15, 18, 23. Tilslut til sidst styrekortets 5v- og jordstifter til 5v -udgangen og jordstifterne på Pi.

Her er et link til Pi's Pinout for en vis reference:

Trin 11: Montering af kameraet

Montering af kameraet
Montering af kameraet
Montering af kameraet
Montering af kameraet
Montering af kameraet
Montering af kameraet

Montering af kameraet var lidt mindre robust end Pi, men metoden fik jobbet gjort. Efter design og udskrivning af en tynd stråle med 2 huller i hver ende fastgjorde jeg strålen til Rasberry Pi gennem dens monteringshul. Sæt derefter kameraet fast på den modsatte ende af strålen med en anden skrue. Ta-da! Det ser smukt ud.

Trin 12: Oprettelse og montering af skuffemekanisme

Oprettelse og montering af skuffe-flytte-mekanisme
Oprettelse og montering af skuffe-flytte-mekanisme
Oprettelse og montering af skuffe-flytte-mekanisme
Oprettelse og montering af skuffe-flytte-mekanisme
Oprettelse og montering af skuffe-flytte-mekanisme
Oprettelse og montering af skuffe-flytte-mekanisme

Dette trin blev gjort let takket være de altid velvillige gaver fra maker -samfundet. Efter en hurtig søgning på Thingiverse kunne jeg finde en lineær aktuator skabt af TucksProjects (findes her: https://www.thingiverse.com/thing:2987762). Det eneste, der var tilbage at gøre, var at slå det på et SD -kort og lade printeren udføre arbejdet.

Jeg endte med at gå ind i Fusion 360 og redigerede ansporet, da akslen på min motor var for stor til den, der blev leveret af TucksProjects. Jeg har.stl til det herunder. Efter at udskrivningen var udført, skal vi bare samle den ved at placere ansporet på motorakslen, derefter ved at fastgøre motoren og kabinettets sider med 2 skruer (sørg for at sætte risten ind imellem, før du lukker den). Jeg endte med at skulle skære en tomme af stativet, så det passede mellem skuffen og rammen.

Det eneste, der er tilbage, er at fastgøre mekanismen til rammen og skuffen. "Men hvordan skal vi gøre det?" du spørger … ja, sig det med mig: Super Lim. Som vist på ovenstående billeder skal du blot placere mekanismen mod bunden af rammen og skubbe den op mod det stykke træ, skuffen glider på. Det er vigtigt her, at du prøver at få stativet/mekanismen så parallelt med rammen som muligt, så når mekanismen bevæger sig, skubber den skuffen lige og ikke i en vinkel. Når limen er tørret, skal du lægge lidt mere lim på kanten af stativet og flytte skuffen på plads og lade den tørre. Når vi er færdige, har vi en robust mekanisme til at skubbe vores hemmelige skuffe ind og ud.

Trin 13: Tilføjelse af pap bag spejlet

Tilføjelse af pap bag spejlet
Tilføjelse af pap bag spejlet
Tilføjelse af pap bag spejlet
Tilføjelse af pap bag spejlet
Tilføjelse af pap bag spejlet
Tilføjelse af pap bag spejlet

For at få denne tovejsfilm til at se mere spejlagtig ud, fandt jeg ud af, at det tjener vores formål godt at placere pap bag glasset. Den anvendte pap er en, der fulgte med rammen, men ethvert stykke, der blev skåret til at passe, vil fungere. Dette sikrer også intet lys fra kameraets LED, motorstyringen eller Pi viser på den anden side af spejlet. Med alt på sin plads skal du bruge en blyant til at markere, hvor kameraet sidder på pap. Brug derefter en barbermaskine til at skære et rektangel, så kameraet kan kigge igennem, når det er på plads.

Trin 14: Påsætning af det sidste stykke

Sætter det sidste stykke på
Sætter det sidste stykke på
Sætter det sidste stykke på
Sætter det sidste stykke på

Den sidste ting at gøre er at tage den forreste del af skuffen på, der var afsat tidligere. Flyt motoren, så skuffen stikker ud. Lim derefter den forreste del fast, så skuffestykket er centreret (der skal hænge lidt på alle sider. Så kan du bare hænge det på en væg.

Trin 15: Afslut

Finale
Finale
Finale
Finale

Der har du det! Der er flere forbedringer, der kan foretages, f.eks. At tilføje denne trykknap, købe en bedre tovejsfilm og rette den fejl i koden, men alt i alt får det jobbet gjort: det ligner et spejl, det genkender det forudbestemte brugerens ansigt, og det åbner den søde lille skuffe. Som altid ville jeg elske at høre dine tanker, spørgsmål og erindringer i kommentarerne herunder.

Samlet vurdering: 10/10

Kommentarer: #WouldNotTryAgain … medmindre jeg kunne følge dette instruerbare;)

Hemmelig rumudfordring
Hemmelig rumudfordring
Hemmelig rumudfordring
Hemmelig rumudfordring

Storpris i den hemmelige rumudfordring

Anbefalede: