INHOUDSOPGAWE:

Gesigsherkenningspieël met geheime kompartement: 15 stappe (met foto's)
Gesigsherkenningspieël met geheime kompartement: 15 stappe (met foto's)

Video: Gesigsherkenningspieël met geheime kompartement: 15 stappe (met foto's)

Video: Gesigsherkenningspieël met geheime kompartement: 15 stappe (met foto's)
Video: Waarom hebben ze miljoenen achtergelaten? ~ Verlaten 16e-eeuws heroïsch kasteel! 2024, November
Anonim
Gesigsherkenningspieël met geheime kompartement
Gesigsherkenningspieël met geheime kompartement
Gesigsherkenningspieël met geheime kompartement
Gesigsherkenningspieël met geheime kompartement
Gesigsherkenningspieël met geheime kompartement
Gesigsherkenningspieël met geheime kompartement

Ek was nog altyd geïnteresseerd in die immer kreatiewe geheime kompartemente wat in verhale, films en dies meer gebruik word. Toe ek die geheime kompartementkompetisie sien, het ek besluit om self met die idee te eksperimenteer en 'n gewone spieël te maak wat 'n geheime sylaai oopmaak wanneer die regte persoon daarin kyk.

Deur gebruik te maak van 'n Raspberry Pi, 'n bietjie kennis van pythonprogrammering en 'n winkelklas van die 8ste klas, kan ons hierdie spitsagtige toestel skep om voorwerpe in die oog te verberg waartoe slegs die regte gebruiker toegang het.

Ek wil 'n spesiale dankie sê aan hierdie mense/platforms waaruit ek ook my inligting en hulpbronne gekry het:

TeCoEd - Youtube -kanaal

Emmet van PiMyLifeUp

MJRoBot op Hackster.io (profiel)

Gaven MacDonald - Youtube -kanaal

Tucker Shannon on Thingiverse (profiel)

Voorrade

Raambenodigdhede:

  • Houtplank (die afmetings van hierdie bord was 42 "by 7.5" by 5/16 ")
  • Potloodprentraam (met glas)
  • Sproeiverf
  • Een manier reflektiewe gom
  • Glasreiniger en lappie
  • MDF Hout

Gesigsherkenningsbenodigdhede:

  • Framboos Pi (ek het die Pi 3 B+ gebruik, maar daar is ander opsies)
  • Kameramodule
  • Stapmotor

Gereedskap:

  • Tafelsaag
  • Jig gesien
  • SkuurpapierHout
  • GlueTape
  • Meet
  • Skêr
  • Spuit bottel
  • 3D -drukker
  • Wondergom

Stap 1: Sny vir die boksraamwerk

Snitte vir die boksraamwerk
Snitte vir die boksraamwerk
Snitte vir die boksraamwerk
Snitte vir die boksraamwerk
Snitte vir die boksraamwerk
Snitte vir die boksraamwerk
Snitte vir die boksraamwerk
Snitte vir die boksraamwerk

Ek het 'n foto raam in die tweedehandse winkel gekoop. Net 'n waarskuwing, maak seker dat die planke van die raam minstens 1 1/2 breed is. Dit is sodat u ander houtplate daarop kan plak met genoeg ruimte om mee te werk. Maak ook seker dat die glas daarin die raam is heeltemal duidelik. Ek het per ongeluk 'n matte gekoop en moes toe nog 'n raam koop net vir die helder glas. Omdat my raam gebruik word, kan die afmetings vir die boksraamwerk verskil.

  • Plaas die raam in portretoriëntasie. Meet die lang sye (LS) van die glasgatkant aan die raam met 'n ekstra ½ "aan die bokant en onderkant. (dws voeg 'n duim by die lang kant van die meting van die glasgat. Teken dit op en merk LSM (Long Side Measurement).
  • Meet ook die bokant van die gat en voeg 'n ekstra 1 "by. Teken dit op en merk SSM (Short Side Measurement).
  • Kry u bord en sny met 'n tafelsaag twee LSM x 2 "en twee SSM x 2".
  • Neem een van die LSM -snitte en meet 'n reghoek van 2 "x1" wat 1 "van die onderkant en ½" van die linker- en regterkant is (soos in foto 3 getoon).
  • Gebruik 'n figuursaag om die gat uit te sny. Gebruik dan die skuurpapier om die rande uit te skuur.

Stap 2: Sny vir die laai

Snitte vir die laai
Snitte vir die laai
Snitte vir die laai
Snitte vir die laai
Snitte vir die laai
Snitte vir die laai
Snitte vir die laai
Snitte vir die laai

Nou begin ons met die bou van die laai (ook bekend as 'n geheime kompartement).

  • Sny twee 4 "x 1" kante, 'n 3 "x 1" (agterkant), 'n 4 "x 1" (voorkant) en 'n 4 "x 3" (platform) uit.
  • Plak die eerste 4 "x 1" kant langs die 4 "kant van die platform vas. Ek het 'n paar papiertjies onder die platformkant gesit sodat dit effens opgelig is, sodat dit nie die gat wat ek in die LS -plank uitgesny het, kan sleep nie. Laat droog word vir 30 minute.
  • Plak die 3 "x 1" langs die rand van die platform ook vas. Laat droog word vir 30 minute. Plak dan die tweede kant van 4 "x 1" aan die teenoorgestelde kant van die eerste. Laat droog word vir 30 minute.
  • Sit die voorkant vir eers opsy. Dit is die laaste ding wat op die laai geplak word.
  • As u klaar is, kyk of dit pas in die gat wat u in die LSM -plank gesny het. Indien nie, skuur die gat totdat die laai maklik in en uit gly, en daar is geen sleep nie.

Stap 3: Sit die raam saam

Om die raam bymekaar te sit
Om die raam bymekaar te sit
Om die raam bymekaar te sit
Om die raam bymekaar te sit
Om die raam bymekaar te sit
Om die raam bymekaar te sit

Met al die dele voltooi, kan ons begin om die geheel van die raam te monteer.

  • Plak die LSM -plank in die middel van die glasgat met 'n ½ "aan elke kant. Maak seker dat dit met 'n halwe meter van die gat vasgeplak is (soos op foto 1 getoon). Laat droog word vir 30 minute.
  • Plak die eerste SSM -plank vas met die rand wat die binnekant van die LSM -plank raak wat pas vasgeplak is. (Gebruik 'n liniaal om seker te maak dat dit reguit vasgeplak is). Laat droog word vir 30 minute.
  • Neem die ander LSM -kant en plak dieselfde as die eerste een. Maak seker dit is ½”van die gat af en dat die SSM wat pas aangebring is, aan die binnekant van die plank vasgeplak is. Laat droog word vir 30 minute.
  • Plak die laaste SSM op die boonste rand vas. Aangesien u twee LSM's aan beide kante het, afhangende van hoe reguit u dit vasgemaak het, moet u moontlik die kante van die SSM afskuur om seker te maak dat dit pas (my sny is soms af). Laat droog word vir 30 minute.
  • Meet die klein spasie tussen die onderkant van die laai en die raam. Sny 'n stuk MDF -hout met hierdie meting, 4 ". U wil hierdie stuk naby die laai maak, maar raak dit nie. Dit is bedoel om die laai met minimale wrywing te ondersteun.
  • As dit klaar is, spuit ek die raam net sodat al die stukke ooreenstem.

Stap 4: Vir die spieël

Vir die spieël
Vir die spieël
Vir die spieël
Vir die spieël
Vir die spieël
Vir die spieël
Vir die spieël
Vir die spieël

Die eenrigting-kleefmiddel wat ek by Amazon gekoop het, was ongeveer $ 10. Daar is produkte van beter gehalte wat 'n bietjie duurder is as u belangstel. Die een wat ek gebruik, weerspieël, maar u kan sien dat dit nie 'n gewone spieël is wat u in 'n huis sou sien nie. Die duurder sal jou so laat lyk.

  • Maak die glas aan beide kante skoon met 'n glasreiniger.
  • Rol die eenrigting gom uit en lê die glas bo-op. Knip die kleefmiddel uit sodat daar ten minste 'n oormaat aan elke kant van die glas is.
  • Sit die glas eenkant en maak die een kant nat met water. Trek dan die plastieklaag van die eenrigtinggom af en spuit die nuut blootgestelde kant met water.
  • Plaas die nat kant van die glas aan die nat kant van die gom. Laat sit vir 30 minute.
  • Draai om en gebruik jou duim om enige borrels tussen die kleefmiddel en die glas te druk. Sny dan die oortollige gom om die rande.

Stap 5: Installeer Raspbian Stretch

Dit was die eerste keer dat ek in die Raspberry Pi -omgewing ingegaan het, en ek het begin soek na instruksies oor hoe om die bedryfstelsel te installeer. Uiteindelik het ek 'n eenvoudige handleiding op Youtube van TeCoEd gevind wat die proses deurgemaak het om Stretch op die SD -kaart geïnstalleer te kry (ook met 'n baie mooi inleiding). Hier is die skakel na die tutoriaal:

Alles wat u hoef te doen is in wese:

  • Formateer die SD -kaart deur u Drive >> Drive Tools >> Format te kies. Laai die zip-lêer af vir Raspian Stretch (hier gevind:
  • Flits die OS -beeld na die SD -kaart. TeCoEd het Win32 Disk Imager gebruik om dit te voltooi. Ek het uiteindelik balenaEtcher geïnstalleer, wat 'n bietjie eenvoudiger gelyk het. (Hier is die aflaai skakel vir balenaEtcher:
  • Sodra u in balenaEtcher gekom het, kies 'Flash From File' en kies die zip -lêer wat voorheen afgelaai is. Kies dan die gewenste SD -kaart (as dit nie outomaties gekies word nie). Druk dan op die sappige flits -knoppie en wag totdat die magie gebeur.

Sodra dit op die SD -kaart geïnstalleer is, kan u dit in die Raspberry Pi plaas en die algemene Pi -opstellingsproses deurloop.

Stap 6: Installeer OpenCV

Nou na die meer gesig-herkenningsgerigte dele. Om gesigte te herken, moet ons die OpenCV -biblioteek aflaai, wat 'n groot aantal gereedskap bevat om met rekenaarvisie te werk.

Die installering van OpenCV was vir my die moeilikste deel van die sagteware -aspek. Maar nadat ek baie instruksies gevolg het, het ek uiteindelik 'n tutoriaal van Emmet van PiMyLifeUp gevind wat die truuk gedoen het:

Ek sal nie deur hierdie stappe gaan nie, aangesien u beter geskik sal wees om dit vanaf die skakel te volg (met die gegewe verduidelikings en die moontlikheid om makliker van die webwerf af te kopieer en te plak).

Stap 7: Aktiveer/toets die kamera

Aktiveer/toets die kamera
Aktiveer/toets die kamera
Aktiveer/toets die kamera
Aktiveer/toets die kamera

Nadat ek OpenCV geïnstalleer het, is die res van my reis voltooi met 'n handleiding van MJRoBot op Hackster.io wat u hier vind:

Voordat ons begin, wil ek u daaraan herinner dat ek nie die oorspronklike skepper van hierdie skrifte is nie, maar ek het uiteindelik dele daarvan verander.

Om mee te begin, moet ons die kamera toets om seker te maak dat ons video op die skerm kan neem. Ek het ongeveer 'n uur lank probeer om die script wat in stap 3 van MJRoBot voorsien is, uit te voer. Soos die lewe dit wil hê, moet ons die kamera op die Raspberry Pi eintlik aktiveer (dit blyk dat dit 'n goeie idee is om die instruksies te lees … mmm nah). Volg die volgende stappe nadat u die kamera aan die regte poort gekoppel het:

  • Maak 'n opdragterminale oop en tik sudo raspi-config
  • Kies 'Aktiveer kamera' (dit kan gevind word onder 'n toestelopsie)
  • Druk "Enter"
  • Gaan na "Voltooi" en u sal gevra word om weer te begin

Volg dan hierdie stappe:

  • Gaan na die framboos se hoofkieslys (links bo)
  • Voorkeure
  • Raspberry Pi -konfigurasie
  • Koppelvlakke
  • Kies dan "Ingeskakel" in Kamera
  • Dan "OK"

Nou moet u hierdie script suksesvol uit die MJRoBot-tutoriaal kan uitvoer om die kamera uit te toets (onthou dat al hierdie kode plus 'n meer diepgaande beskrywing gevind word in die skakel hierbo na die tutoriaal van MJRobot):

invoer numpy as np

invoer 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 (raam, -1) # Draai kamera vertikaal grys = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) cv2.imshow ('raam', raam) cv2.imshow ('grys', grys) k = cv2.waitKey (30) & 0xff as k == 27: # druk 'ESC' om af te sluit break cap.release () cv2.destroyAllWindows ()

Die vorige kode moet twee vensters vertoon, een in kleur en die ander in grysskaal. As jy so ver gekom het, dink ek jy verdien 'n lekker toebroodjie.

Stap 8: Versamel data en opleidingsdata

Versameling van data en opleidingsdata
Versameling van data en opleidingsdata
Versameling van data en opleidingsdata
Versameling van data en opleidingsdata
Versameling van data en opleidingsdata
Versameling van data en opleidingsdata

In die geleerde handleiding gaan die skrywer dieper in op die prosesse van die kode wat binnekort verskaf word, maar aangesien dit instruksies is oor hoe hierdie spieël gemaak is, gaan ek nie meer in op die geskiedenis of die ingewikkelde meganika nie. Ek beveel u egter aan om 'n maand van u lewe te lees oor hierdie twee dinge, aangesien dit u gedagtes goed kan dien.

Daar is nog net drie ander skrifte om uit te voer voordat ons dit alles kan laat werk. Die eerste is vir die versameling van data, die tweede is vir die opleiding daarvan en die laaste is eintlik vir erkenning. Om data te versamel, moet werklike foto's van die gesig geneem word en op 'n spesifieke plek gestoor word vir opleiding. Die skepper van hierdie kode het dit baie eenvoudig gemaak om dit alles te doen, dus ek beveel aan om hierdie instruksies te volg om hoofpyn te vermy.

Maak 'n opdragreël oop en maak 'n nuwe gids wat dit iets lekker noem (ek het my FaceRec genoem)

mkdir FaceRec

Verander nou die gids in FaceRec en maak 'n subgids om die dataset te noem

cd FaceRec

mkdir -datastel

Terwyl ons besig is, kan ons ook die ander subgids met die naam trainer maak

mkdir afrigter

U kan nou die aanwysings van die eerste skrif volg en foto's van 'n gebruiker neem. (Net 'n opskrif, voer die gebruikers -ID in as 1, 2, 3, ens.)

invoer cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # stel video breedte cam.set (4, 480) # stel videohoogte face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Vir elke persoon, voer een numeriese gesig -ID in face_id = input ('\ n voer gebruikers -ID in; druk pers ==>') druk ("\ n [INFO] Initialiseer gesigopname. Kyk na die kamera en wag …") # Initialiseer individuele monstermonsters count = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip video image vertically grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_detector.detectMultiScale (grys, 1.3, 5) vir (x, y, w, h) in vlakke: cv2. reghoek (img, (x, y), (x+w, y+h), (255, 0, 0), 2) telling + = 1 # Stoor die vasgelegde prent in die datastelle -vouer cv2.imwrite ("dataset/User." + Str (face_id) + '.' + Str (count) + ".jpg", grys [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Druk op 'ESC' om die video te verlaat as k == 27: breek eliftelling> = 30: # Neem 30 gesigmonsters en stop video -opname k druk ("\ n [INFO] Program verlaat en dinge wat opruim") cam.release () cv2.destroyAllWindows ()

Maak op hierdie punt seker dat u 'n kussing op die Pi geïnstalleer het. Indien nie, voer die opdrag uit:

pip installeer kussing

Nadat dit voltooi is, kan u die opleidingsskrif (tweede skrip) uitvoer, wat u naadloos 'n.yaml -lêer sal gee wat in die finale skrif gebruik sal word

invoer cv2import numpy as np van PIL invoer Beeld invoer os # Pad vir gesig beeld databasis pad = 'dataset' herkenner = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funksie om die beelde te kry en data te benoem def getImagesAndLabels (pad): imagePaths = [os.path.join (pad, f) vir f in os.listdir (pad)] faceSamples = ids = vir imagePath in imagePaths: PIL_img = Image.open (imagePath).convert ('L') # omskep dit in grysskaal img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. split (".") [1]) gesigte = detector.detectMultiScale (img_numpy) vir (x, y, w, h) in gesigte: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Opleidingsgesigte. Dit sal 'n paar sekondes neem. Wag …") gesigte, ids = getImagesAndLabels (pad) identifier.train (gesigte, np.array (ids)) # Stoor die model in trainer/trainer.yml werkenaar.skryf ('trainer/trainer.yml') # herkenner.save () het op Mac gewerk, maar nie op Pi nie # Druk die aantal gesigte wat opgelei is af en druk die program af ("\ n [INFO] {0} opgeleide gesigte. Verlaat program".format (len (np.unique (ids))))

Wat aangenaam is met hierdie stel skrifte, is dat verskeie gesigte in die stelsel ingevoer kan word, wat beteken dat meer as een persoon toegang tot die binneste van die spieël kan kry.

Hier onder het ek die Data Capture script en Training script beskikbaar om af te laai.

Stap 9: Tyd vir gesigherkenning

Gesigsherkenningstyd
Gesigsherkenningstyd
Gesigsherkenningstyd
Gesigsherkenningstyd

Uiteindelik kan ons die herkenningskrip uitvoer. Meer kode is by hierdie skrip gevoeg om die motoriese proses funksioneel te maak, so ek sal die dele 'n bietjie meer deeglik verduidelik. Ek sal dit in afdelings verdeel, maar ek sal die hele script aan die einde van die stap plaas as dit is waarna u op soek is.

Ons begin met die invoer van alle modules wat ons benodig en stel dan die GPIO -modus in op GPIO. BCM

invoer numpy as np

invoer os invoertyd invoer RPi. GPIO as GPIO GPIO.setwarnings (Onwaar) GPIO.setmode (GPIO. BCM)

Hierdie volgende lys met die naam ControlPin is 'n verskeidenheid getalle wat uitsetpenne verteenwoordig wat vir ons stapmotor gebruik sal word.

ControlPin = [14, 15, 18, 23]

Die for-lus stel hierdie penne as uitsette in en maak dan seker dat hulle afgeskakel is. Ek het nog 'n kode hier om die laai met 'n druk op 'n knoppie te laat sluit, maar ek het besluit om eerder 'n timer te gebruik.

GPIO.setup (ControlPin , GPIO. OUT)

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

Die volgende twee veranderlikes is rye wat ons sal gebruik om die motor aan te dryf. Ek het hierdie inligting geleer uit 'n wonderlike video van Gaven MacDonald, waarna ek dit ten sterkste aanbeveel om nie net die kode nie, maar ook die werklike motor te ondersoek (hier: https://www.youtube.com/embed/Dc16mKFA7Fo). In wese word elke volgorde herhaal deur die geneste for-loops te gebruik in die komende openComp- en closeComp-funksies. As u mooi kyk, is seq2 presies die teenoorgestelde van seq1. Ja, jy het dit raai. Die een is om die motor vorentoe te laat beweeg, en die ander is om te keer.

seq1 =

seq2 =

Vanaf ons openComp-funksie, skep ons 'n for-lus wat 1024 keer sal herhaal. Volgens MacDonald se video sou 512 iterasies 'n volledige rotasie van die motor bied, en ek het gevind dat ongeveer twee rotasies 'n goeie lengte is, maar dit kan aangepas word, afhangende van die grootte van 'n individu. Die volgende for-lus bestaan uit 8 iterasies om rekening te hou met die 8 skikkings wat in seq1 en seq2 voorkom. En laastens herhaal die laaste lus vier keer vir die vier items wat in elk van hierdie skikkings voorkom, sowel as die 4 GPIO-penne waarmee ons ons motor gekoppel het. Die lyn hier onder kies die GPIO -pen en skakel dit dan aan of uit, afhangende van watter herhaling dit is. Die lyn daarna bied 'n bietjie buffertyd, sodat ons motor glad nie draai nie. Nadat die motor gedraai het om die laai uit te skuif, slaap hy 5 sekondes voordat hy verder gaan. Hierdie tyd kan hier aangepas word, of u kan die kode met kommentaar aktiveer wat die gebruik van 'n drukknop moontlik maak om met die script vorentoe te gaan eerder as met 'n timer.

vir i in reeks (1024):

vir halfstap in reeks (8): vir pen in reeks (4): GPIO.output (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) '' 'terwyl True: if GPIO.input (2) == GPIO. LOW: break; '' 'time.sleep (5)

Die closeComp -funksie werk op dieselfde manier. Nadat die motor teruggeskakel het, gaan ek voort om ons laaste GPIO -penne op laag te sit om seker te maak dat ons geen energie mors nie, en dan voeg ek nog drie sekondes tyd by voordat ek verder gaan.

vir i in reeks (1024):

vir halfstap in reeks (8): vir pen in reeks (4): GPIO.output (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) print ("Kompartement gesluit") GPIO.output (ControlPin [0], 0) GPIO.output (ControlPin [3], 0) time.sleep (3)

Die grootste deel van die volgende deel word gebruik om die kamera op te stel en die gesigsherkenning te begin. Weereens, die instruksies van MKRoBot gaan meer oor die dele, maar vir eers wys ek net die dele wat vir die spieël gebruik is.

Eers het ek die lysname verander sodat my naam in die indeks is wat ek dit toegeken het terwyl ek die data versamel het (in my geval 1). En dan stel ek die res van die waardes op None aangesien ek nie meer gesigte in die dataset gehad het nie.

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

Ons laaste paar reëls kode word geïmplementeer in die thicc for-lus. Ek het 'n veranderlike geskep om die vertroue as 'n heelgetal (intConfidence) te stoor voordat die veranderlike vertroue in 'n string verander word. Dan gebruik ek 'n if-verklaring om te kyk of die vertroue groter is as 30 en of die ID (watter persoon die rekenaar in hierdie geval 'Daniel' opspoor) gelyk is aan my naam. Nadat dit bevestig is, word die funksie openComp genoem, wat (soos voorheen verduidelik) die motor beweeg, na 5 sekondes uitskop en dan na die sluiting van die motor beweeg, wat die motor in die teenoorgestelde rigting beweeg en 'n opruiming doen voordat die tiklus voortgaan.

as intConfidence> 30 en id == 'Daniel':

openComp () closeComp ()

'N Fout wat ek hier gevind het, is dat die kode soms na die terugkeer van closeComp voortgaan, maar die voorwaardelike if-statement blyk weer waar te wees asof dit die videostroom lees wat nog in die buffer is. Alhoewel dit nie elke keer gebeur nie, moet ek nog 'n manier vind om te verseker dat dit nooit gebeur nie, so laat weet my as iemand 'n idee het.

Hier is die hele skrif op een plek (en net onder dit is die aflaaibare):

voer cv2 in

invoer numpy as np invoer os invoer tyd invoer RPi. GPIO as GPIO GPIO.setwarnings (Onwaar) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] vir i in reeks (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Stap 10: Monteer die Pi en koppel die motor aan

Monteer die Pi en koppel die motor aan
Monteer die Pi en koppel die motor aan
Monteer die Pi en koppel die motor aan
Monteer die Pi en koppel die motor aan
Monteer die Pi en koppel die motor aan
Monteer die Pi en koppel die motor aan

Dit was redelik eenvoudig om die Raspberry Pi aan die raam te monteer. Ek het 'n klein elmboog van 90 grade ontwerp met een gesig met 'n gaatjie en die ander kant heeltemal plat. Na die druk van twee hiervan, kan hulle met skroewe aan die Raspberry Pi op die bevestigingsgate vasgemaak word (ek het die twee gate aan elke kant van die GPIO -penne gebruik).

Daarna het ek supergom op die teenoorgestelde vlakke van die 3D -gedrukte elmboë gebruik om die Pi net bokant die laai op die raam te plak. Nadat ek die gom laat droog het, kon ek die Pi eenvoudig en gemaklik met sy twee skroewe in posisie verwyder of vervang. Ek het die.stl vir die elmboog hieronder gekoppel.

Koppel nou eenvoudig die motorbestuurder aan die PI met IN1, IN2, IN3, IN4 wat onderskeidelik aansluit by GPIO 14, 15, 18, 23. Koppel laastens die 5v- en grondpenne van die beheerbord aan die 5v -uitgang en die grondpenne van die Pi.

Hier is 'n skakel na die Pi's Pinout vir 'n paar verwysings:

Stap 11: Monteer die kamera

Die montering van die kamera
Die montering van die kamera
Die montering van die kamera
Die montering van die kamera
Die montering van die kamera
Die montering van die kamera

Die bevestiging van die kamera was effens minder robuust as die Pi, maar die metode het die werk gedoen. Nadat ek 'n dun balk met 2 gate aan elke kant ontwerp en gedruk het, het ek die balk deur die monteergat aan die Rasberry Pi vasgemaak. Heg die kamera dan met 'n ander skroef aan die teenoorgestelde kant van die balk vas. Ta-da! Dit lyk mooi vlieg.

Stap 12: Skep en monteer die laaibewegingsmeganisme

Skep en monteer van die laaibewegingsmeganisme
Skep en monteer van die laaibewegingsmeganisme
Skep en monteer die laaibewegingsmeganisme
Skep en monteer die laaibewegingsmeganisme
Skep en monteer die laaibewegingsmeganisme
Skep en monteer die laaibewegingsmeganisme

Hierdie stap is maklik gemaak danksy die immer welwillende gawes van die makergemeenskap. Na 'n vinnige soektog op Thingiverse kon ek 'n lineêre aktuator vind wat deur TucksProjects geskep is (hier: https://www.thingiverse.com/thing:2987762). Al wat u hoef te doen is om dit op 'n SD -kaart te druk en die drukker te laat werk.

Ek het uiteindelik in Fusion 360 gegaan en die toring aangepas, aangesien die as van my motor te groot was vir die van TucksProjects. Ek het die.stl daarvoor hieronder. Nadat die drukwerk gedoen is, hoef ons dit net te monteer deur die spoor op die motoras te plaas, en dan die motor en die omhulsel se kante met 2 skroewe vas te maak (maak seker dat u die rak tussenin sit voordat u dit toemaak). Uiteindelik moes ek 'n sentimeter van die rek afsny sodat dit tussen die laai en die raam kon pas.

Al wat oorbly, is om die meganisme aan die raam en laai vas te maak. "Maar hoe sal ons dit doen?" jy vra … ja, sê dit saam met my: Super Glue. Soos in die foto's hierbo getoon, plaas die meganisme teen die onderkant van die raam en druk dit teen die stuk hout waarop die laai skuif. Dit is hier baie belangrik dat u die rek/meganisme so parallel as moontlik met die raam probeer kry, sodat die laai reguit en nie skuins gedruk word as die meganisme beweeg nie. Nadat die gom droog is, plaas nog 'n bietjie gom op die rand van die rek en plaas die laai in posisie en laat dit droog word. As ons klaar is, het ons 'n stewige meganisme om ons geheime laai in en uit te skuif.

Stap 13: Voeg karton agter die spieël by

Voeg karton agter die spieël by
Voeg karton agter die spieël by
Voeg karton agter die spieël by
Voeg karton agter die spieël by
Voeg karton agter die spieël by
Voeg karton agter die spieël by

Om hierdie tweerigtingfilm meer spieëlagtig te laat lyk, het ek gevind dat dit ons doel goed dien om karton agter die glas te plaas. Die karton wat gebruik word, is een wat by die raam kom, maar enige stuk wat daarby gesny word, werk. Dit verseker ook geen lig van die kamera -LED, die motorbeheerder of die Pi -vertonings aan die ander kant van die spieël nie. Met alles op sy plek, gebruik 'n potlood om te merk waar die kamera op die karton sit. Gebruik dan 'n skeermes om 'n reghoek te sny sodat die kamera kan kyk as dit op sy plek is.

Stap 14: Trek die finale stuk aan

Sit die finale stuk op
Sit die finale stuk op
Sit die finale stuk op
Sit die finale stuk op

Die laaste ding om te doen is om die voorkant van die laai wat vroeër opsy gesit is, aan te trek. Beweeg die motor sodat die laai uitsteek. Plak dan die voorkant vas sodat die lappie in die middel is (daar moet 'n bietjie hang aan alle kante wees. Dan kan u dit net aan 'n muur hang.

Stap 15: Finale

Finale
Finale
Finale
Finale

Daar het jy dit! Daar kan verskeie verbeterings aangebring word, soos om die drukknoppie by te voeg, 'n beter tweerigtingfilm te koop en die fout in die kode op te los, maar alles in ag genome: dit lyk soos 'n spieël, dit herken die voorafbepaalde gebruiker se gesig en dit maak die oulike laaitie oop. Soos altyd hoor ek graag u gedagtes, vrae en herinneringe in die kommentaar hieronder.

Algehele beoordeling: 10/10

Opmerkings: #WouldNotTryAgain … tensy ek hierdie instruksies kon volg;)

Geheime kompartementuitdaging
Geheime kompartementuitdaging
Geheime kompartementuitdaging
Geheime kompartementuitdaging

Groot prys in die geheime kompartementuitdaging

Aanbeveel: