Përmbajtje:

Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete: 15 hapa (me fotografi)
Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete: 15 hapa (me fotografi)

Video: Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete: 15 hapa (me fotografi)

Video: Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete: 15 hapa (me fotografi)
Video: Shenjat që tregojnë se një femër ka nevojë për seks.. 2024, Nëntor
Anonim
Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete
Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete
Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete
Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete
Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete
Pasqyrë e Njohjes së Fytyrës me Ndarje Sekrete

Unë gjithmonë jam intriguar nga ndarjet sekrete gjithnjë krijuese të përdorura në histori, filma dhe të ngjashme. Kështu, kur pashë Konkursin e Ndarjes Sekrete, vendosa të eksperimentoj vetë me idenë dhe të bëj një pasqyrë të zakonshme, që hap një sirtar të fshehtë anësor kur personi i duhur shikon në të.

Duke përdorur një Raspberry Pi, disa njohuri për programimin e python dhe klasën e dyqaneve të klasës së 8-të, ne mund të krijojmë këtë pajisje të ndyrë për të fshehur objektet në pamje të thjeshtë, në të cilat do të ketë qasje vetëm përdoruesi i duhur.

Do të doja të falënderoja veçanërisht këta njerëz/platforma nga ku kam marrë informacionin dhe burimet e mia gjithashtu:

TeCoEd - Kanali në Youtube

Emmet nga PiMyLifeUp

MJRoBot në Hackster.io (profili)

Gaven MacDonald - Kanali në Youtube

Tucker Shannon në Thingiverse (profili)

Furnizimet

Furnizimet e kornizës:

  • Dërrasë druri (Dimensionet e këtij bordi ishin 42 "me 7.5" me 5/16"
  • Kornizë Pikture me Laps (me xham)
  • Spray Paint
  • Ngjitës reflektues me një drejtim
  • Pastrues xhami & lecka
  • MDF Druri

Furnizime për njohjen e fytyrës:

  • Raspberry Pi (Kam përdorur Pi 3 B+ por ka mundësi të tjera)
  • Moduli i kamerës
  • Stepper Motor

Mjetet:

  • Tabela Saw
  • Jig Saw
  • Letër zmerile
  • Ngjitës
  • Masa
  • Gërshërë
  • Shishe spërkatëse
  • Printer 3D
  • Super ngjites

Hapi 1: Prerje për kornizën e kutisë

Prerje për kornizën e kutisë
Prerje për kornizën e kutisë
Prerje për kornizën e kutisë
Prerje për kornizën e kutisë
Prerje për kornizën e kutisë
Prerje për kornizën e kutisë
Prerje për kornizën e kutisë
Prerje për kornizën e kutisë

Bleva një kornizë fotografish nga dyqani i dorës së dytë. Vetëm një paralajmërim, sigurohuni që dërrasat që përbëjnë kornizën të jenë të paktën 1 1/2 të gjera. Kjo është kështu që ju të ngjitni dërrasa të tjera druri mbi të me hapësirë të mjaftueshme për të punuar. Gjithashtu, sigurohuni që xhami korniza është plotësisht e qartë. Bleva një të mbuluar me brymë rastësisht dhe më pas duhej të blija një kornizë tjetër vetëm për xhamin e qartë. Për shkak se korniza ime është përdorur, matjet për kornizën e kutisë mund të ndryshojnë.

  • Vendoseni kornizën në orientimin e portretit. Matni anët e gjata (LS) të anës së vrimës së xhamit në kornizë me një ½”shtesë në pjesën e sipërme dhe të poshtme. (dmth. shtoni një inç në anën e gjatë të matjes së vrimës së xhamit. Regjistroni këtë dhe etiketoni LSM (Matja e Side Long).
  • Në mënyrë të ngjashme, matni anën e sipërme të vrimës dhe shtoni një shtesë 1 ". Regjistroni këtë dhe etiketoni SSM (Matja e Side Short).
  • Merrni bordin tuaj dhe me një sharrë tryeze, prerë dy LSM x 2 "dhe dy SSM x 2".
  • Merrni një nga prerjet LSM dhe matni një drejtkëndësh 2 "x1" që është 1 "nga poshtë dhe ½" nga ana e majtë dhe e djathtë (siç tregohet në figurën 3).
  • Përdorni një bashkim pjesësh figure për të prerë vrimën. Pastaj përdorni letër zmerile për të lëmuar skajet.

Hapi 2: Prerje për sirtarin

Prerje për sirtarin
Prerje për sirtarin
Prerje për sirtarin
Prerje për sirtarin
Prerje për sirtarin
Prerje për sirtarin
Prerje për sirtarin
Prerje për sirtarin

Tani do të fillojmë të ndërtojmë sirtarin (a.k.a Ndarja Sekrete).

  • Pritini dy anët 4 "x 1", një 3 "" x 1 "(buza e pasme), një 4" "x 1 ¼" (buza e përparme) dhe një 4 "x 3 ⅜" (platformë).
  • Ngjiteni anën e parë 4 "x 1" përgjatë anës 4 "të platformës. Vendosa disa letra të palosura nën anën e platformës në mënyrë që të ngrihej pak, në këtë mënyrë nuk do të tërhiqej nga vrima që kam prerë në dërrasën LS. Vendoseni të thahet për 30 minuta.
  • Ngjashëm, ngjiteni 3 "x 1" përgjatë skajit 3 "" të platformës. Vendoseni të thahet për 30 minuta. Pastaj ngjiteni anën e dytë 4 "x 1" në anën e kundërt të së parës. Vendoseni të thahet për 30 minuta.
  • Lëreni mënjanë anën e përparme tani për tani. Do të jetë gjëja e fundit e ngjitur në sirtar.
  • Kur të keni mbaruar, kontrolloni për të parë nëse përshtatet në vrimën që keni bërë në dërrasën LSM. Nëse jo, lëroni vrimën derisa sirtari të rrëshqasë lehtë brenda dhe jashtë dhe nuk ka zvarritje.

Hapi 3: Vendosja e Kornizës së bashku

Vendosja e Kornizës së bashku
Vendosja e Kornizës së bashku
Vendosja e Kornizës së bashku
Vendosja e Kornizës së bashku
Vendosja e Kornizës së bashku
Vendosja e Kornizës së bashku

Me të gjitha pjesët e kompletuara ne mund të fillojmë të mbledhim tërësinë e kornizës.

  • Ngjiteni dërrasën LSM të përqendruar me vrimën e xhamit me një ½”në secilën anë. Sigurohuni që të jetë ngjitur me ½”larg vrimës (siç tregohet në figurën 1). Vendoseni të thahet për 30 minuta.
  • Ngjiteni dërrasën e parë SSM me skajin që prek pjesën e brendshme të dërrasës LSM që sapo ishte ngjitur. (Përdorni një vizore për t'u siguruar që është ngjitur drejt). Vendoseni të thahet për 30 minuta.
  • Merrni anën tjetër LSM dhe ngjiteni të ngjashme me të parën. Sigurohuni që është ½”larg vrimës dhe se SSM -ja që sapo ishte ngjitur është ngjitur në pjesën e brendshme të dërrasës. Vendoseni të thahet për 30 minuta.
  • Ngjiteni SSM -në e fundit në skajin e sipërm. Meqenëse keni dy LSM në të dyja anët, në varësi të mënyrës se si i keni bashkuar ato, mund t'ju duhet të lyeni anët e SSM me poshtë për t'u siguruar që përshtatet (prerja ime ndonjëherë është e fikur). Vendoseni të thahet për 30 minuta.
  • Matni hapësirën e vogël midis pjesës së poshtme të sirtarit dhe kornizës. Pritini një copë druri MDF me këtë matje, me 4 ". Ju dëshironi ta bëni këtë pjesë afër sirtarit, por nuk e prekni. Meantshtë menduar për të mbështetur sirtarin me fërkime minimale.
  • Kur të përfundoj gjithçka, unë pikturova kornizën me llak ashtu që të gjitha pjesët të përputheshin.

Hapi 4: Për pasqyrën

Për Pasqyrën
Për Pasqyrën
Për Pasqyrën
Për Pasqyrën
Për Pasqyrën
Për Pasqyrën
Për Pasqyrën
Për Pasqyrën

Ngjitësja e filmit me një drejtim që bleva nga Amazon ishte rreth 10 dollarë. Ka cilësi më të mirë që janë pak më të shtrenjta nëse jeni të interesuar. Ai që përdor reflekton, por ju mund të thoni që nuk është një pasqyrë e zakonshme që do ta shihni në një shtëpi. Ato më të shtrenjta do t'ju japin atë pamje.

  • Pastroni gotën me pastrues qelqi nga të dy anët.
  • Zhbllokoni ngjitësin me një drejtim dhe vendosni gotën në krye. Pritini ngjitësin që të ketë të paktën ½”tepricë në secilën anë të xhamit.
  • Lëreni gotën mënjanë dhe njomni njërën anë të saj me ujë. Më pas hiqeni shtresën plastike nga ngjitësi i njëanshëm dhe spërkatni me ujë anën e ekspozuar rishtas.
  • Vendoseni anën e lagur të xhamit në anën e lagur të ngjitësit. Lëreni të ulet për 30 minuta.
  • Kthejeni dhe përdorni gishtin e madh për të rrafshuar flluskat midis ngjitësit dhe xhamit. Pastaj prerë ngjitësin e tepërt nga rreth skajeve.

Hapi 5: Instaloni Raspbian Stretch

Kjo ishte hera ime e parë që hyja në mjedisin Raspberry Pi fillova të kërkoja udhëzime se si të instaloja OS. Unë përfundimisht gjeta një mësim të drejtpërdrejtë në Youtube nga TeCoEd që kaloi procesin e instalimit të Stretch në kartën SD (me një hyrje mjaft të bukur gjithashtu). Këtu është lidhja me atë tutorial:

Në thelb, gjithçka që duhet të bëni është:

  • Formatoni kartën SD duke zgjedhur Drive tuaj> Tools Drive >> Format. Shkarkoni skedarin ZIP për Raspian Stretch (gjendet këtu:
  • Ndizni imazhin e OS në Kartën SD. TeCoEd përdori Win32 Disk Imager për ta përfunduar këtë. Përfundova duke instaluar balenaEtcher e cila dukej pak më e drejtpërdrejtë. (Këtu është lidhja e shkarkimit për balenaEtcher:
  • Pasi të jeni në balenaEtcher zgjidhni "Flash From File" dhe zgjidhni skedarin ZIP të shkarkuar më parë. Tjetra, zgjidhni kartën SD të dëshiruar (nëse nuk zgjidhet automatikisht). Pastaj shtypni butonin me lëng flash dhe prisni që magjia të ndodhë.

Pasi të jetë instaluar në kartën SD, mund ta futni në Raspberry Pi dhe të kaloni nëpër procesin e konfigurimit të përgjithshëm Pi.

Hapi 6: Instaloni OpenCV

Tani për pjesët më të orientuara nga njohja e fytyrës. Për të njohur fytyrat, duhet të shkarkojmë bibliotekën OpenCV e cila përmban një numër të madh mjetesh për të punuar me vizionin kompjuterik.

Instalimi i OpenCV ishte pjesa më e mundimshme e aspektit të softuerit për mua. Por pasi ndoqa udhëzime të shumta, më në fund gjeta një mësim nga Emmet nga PiMyLifeUp që bëri trukun që gjendet këtu:

Unë nuk do t'i përshkoj këto hapa pasi do të jeni më të përshtatshëm duke i ndjekur ato nga lidhja (me shpjegimet e dhëna dhe aftësinë për të kopjuar dhe ngjitur direkt nga faqja me më shumë lehtësi).

Hapi 7: Aktivizo/Provo kamerën

Aktivizo/Testo kamerën
Aktivizo/Testo kamerën
Aktivizo/Testo kamerën
Aktivizo/Testo kamerën

Pasi instalova OpenCV, pjesa tjetër e udhëtimit tim përfundoi duke përdorur një mësim nga MJRoBot në Hackster.io të gjetur këtu:

Para se të fillojmë, do të doja t'ju kujtoja se nuk jam krijuesi origjinal i këtyre skripteve, por përfundova duke modifikuar pjesë të tyre.

Për të filluar, ne duhet të testojmë kamerën për t'u siguruar që mund të kapim video në ekran. Kalova rreth një orë duke u përpjekur të ekzekutoja skenarin e dhënë në Hapin 3 të MJRoBot. Siç do ta donte jeta, ne në të vërtetë duhet të aktivizojmë kamerën në Raspberry Pi (rezulton se mund të jetë një ide e mirë të lexoni udhëzimet e dhëna… mmm jo). Pra, pasi të keni lidhur Kamera me portën e saj të saktë, ndiqni këto hapa:

  • Hapni një terminal komandues dhe shkruani sudo raspi-config
  • Zgjidhni "Aktivizo kamerën" (kjo mund të gjendet nën një opsion të pajisjeve)
  • Shtypni "Enter"
  • Shkoni te "Përfundo" Dhe do t'ju kërkohet të rindizni

Pastaj ndiqni këto hapa:

  • Shkoni te menyja kryesore e mjedrës (lart majtas)
  • Preferencat
  • Konfigurimi i Raspberry Pi
  • Ndërfaqet
  • Pastaj në Kamera, zgjidhni "Aktivizuar"
  • Pastaj "OK"

Tani duhet të jeni në gjendje ta ekzekutoni me sukses këtë skenar nga mësimi i MJRoBot për të testuar kamerën (mbani mend se i gjithë ky kod plus një përshkrim më të thelluar gjendet në lidhjen e dhënë më sipër me tutorialin e MJRobot):

importoni numpy si 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. rrokullisje (kornizë, -1) # Kthejeni kamerën vertikalisht gri = cv2.cvtColor (kornizë, cv2. COLOR_BGR2GRAY) cv2.imshow ('kornizë', kornizë) cv2.imshow ('gri', gri) k = cv2.waitKey (30) & 0xff nëse k == 27: # shtypni 'ESC' për të lënë pushimin e kapakut.release () cv2.destroyAllWindows ()

Kodi i mëparshëm duhet të shfaqë dy dritare, njëra me ngjyrë dhe tjetra me shkallë gri. Nëse e keni arritur deri këtu mendoj se meritoni një sanduiç të bukur.

Hapi 8: Mbledhja e të dhënave dhe të dhënat e trajnimit

Mbledhja e të dhënave dhe të dhënat e trajnimit
Mbledhja e të dhënave dhe të dhënat e trajnimit
Mbledhja e të dhënave dhe të dhënat e trajnimit
Mbledhja e të dhënave dhe të dhënat e trajnimit
Mbledhja e të dhënave dhe të dhënat e trajnimit
Mbledhja e të dhënave dhe të dhënat e trajnimit

Në tutorialin e dhënë autori shkon shumë më thellë në lidhje me proceset e kodit që së shpejti do të sigurohen, por meqenëse këto janë udhëzime se si është bërë kjo pasqyrë, unë nuk do të hyj në thellësi të historisë dhe as të mekanikës së ndërlikuar. Unë megjithatë ju rekomandoj që të kaloni një muaj nga jeta juaj duke lexuar për këto dy gjëra pasi ato mund t’i shërbejnë mirë mendjes suaj.

Ka vetëm tre skripte të tjera për t'u ekzekutuar para se të fillojmë të funksionojmë. E para është për mbledhjen e të dhënave, e dyta është për trajnimin e saj dhe e fundit është në të vërtetë për njohje. Mbledhja e të dhënave kërkon që fotografitë aktuale të fytyrës të merren dhe të ruhen në një vend të caktuar për trajnim. Krijuesi i këtij kodi e bëri shumë të thjeshtë për ta bërë të gjithë këtë, kështu që unë rekomandoj të ndiqni këto udhëzime për të shmangur dhimbjen e kokës.

Hapni një linjë komande dhe bëni një drejtori të re duke e quajtur atë diçka argëtuese (unë e thirra min FaceRec)

mkdir FaceRec

Tani, ndryshoni drejtorinë në FaceRec dhe bëni një nëndrejtori duke qenë të sigurtë se do ta emërtoni atë grupin e të dhënave

cd FaceRec

të dhëna mkdir

Ndërsa jemi në të, ne gjithashtu mund të bëjmë nën -drejtorinë tjetër të quajtur trainer

trajner mkdir

Tani mund të ekzekutoni dhe ndiqni udhëzimet e skriptit të parë i cili do të kapë fotografi të një përdoruesi. (Vetëm një kokë lart, sigurohuni që të futni id -në e përdoruesit si 1, 2, 3 etj.)

import cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # vendosni gjerësinë e videos cam.set (4, 480) # vendosni lartësinë e videos face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Për secilën person, fut një ID numerike të fytyrës face_id = input ('\ n fut id -në e përdoruesit shtypi ==>') print ("\ n [INFO] Inicimi i kapjes së fytyrës. Shikoni kamerën dhe prisni …") # Filloni numërimin individual të mostrave të fytyrës numëroni = 0 ndërsa (E vërtetë): ret, img = cam.read () img = cv2.flip (img, -1) # ktheni imazhin e videos vertikalisht gri = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) fytyrat = face_detector.detectMultiScale (gri, 1.3, 5) për (x, y, w, h) në fytyra: cv2 drejtkëndësh (img, (x, y), (x+w, y+h), (255, 0, 0), 2) numërimi + = 1 # Ruani imazhin e kapur në dosjen e të dhënave cv2.imwrite ("databaza/përdoruesi." + Str (face_id) + '.' + Str (numërimi) + ".jpg", gri [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Shtypni 'ESC' për dalje nga videoja nëse k == 27: pushoni numrin elif> = 30: # Merrni 30 mostra të fytyrës dhe ndaloni videon brea k print ("\ n [INFO] Dalja nga Programi dhe gjëra pastrimi") cam.release () cv2.destroyAllWindows ()

Në këtë pikë sigurohuni që keni instaluar jastëk në Pi. Nëse jo, ekzekutoni komandën:

jastëk për instalimin e pipit

Pasi të ketë përfunduar, mund të ekzekutoni skenarin e trajnimit (skenari i dytë) i cili do t'ju ofrojë pa probleme një skedar.yaml që do të përdoret në skenarin përfundimtar

import cv2import numpy si np nga PIL import Imazh import os # Rruga për imazhin e fytyrës shtegu i bazës së të dhënave = 'dataset' = = cv2.face. LBPHFaceRecognizer_create () detektor = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funksion për të marrë imazhet dhe të dhënat e etiketës def getImagesAndLabels (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] faceSamples = ids = për imagePath në imagePaths: PIL_img = Image.open (imagePath).convert ('L') # konvertojeni në gri img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. ndarë (".") [1]) fytyra = detektor.detectMultiScale (img_numpy) për (x, y, w, h) në fytyrat: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSembles, ids print ("\ n [INFO] Fytyrat e trajnimit. Do të duhen disa sekonda. Prisni …") fytyra, ids = getImagesAndLabels (path) njohës.treni (fytyrat, np.array (ids)) # Ruani modelin në trainer/trainer.yml njohës.shkruani ('trainer/trainer.yml') # njohës.save () punuar në Mac, por jo në Pi # Shtypni numrin e fytyrave të trajnuara dhe përfundoni printimin e programit ("\ n [INFO] {0} fytyrat e stërvitura. Programi i daljes".format (len (np.unique (ids))))

Ajo që është e mrekullueshme për këtë grup skriptesh është se fytyra të shumta mund të futen në sistem që do të thotë se individë të shumtë mund të hyjnë në brendësinë e pasqyrës nëse dëshirohet.

Më poshtë kam skenarin Data Capture dhe Trajnimin e Trajnimit të disponueshëm për shkarkim.

Hapi 9: Koha e Njohjes së Fytyrës

Koha e Njohjes së Fytyrës
Koha e Njohjes së Fytyrës
Koha e Njohjes së Fytyrës
Koha e Njohjes së Fytyrës

Së fundi, ne mund të ekzekutojmë skriptin e njohësit. Ky kod iu shtua më shumë kod për ta bërë procesin motorik funksional, kështu që unë do t'i shpjegoj ato pjesë pak më tërësisht. Unë do ta ndaj atë në seksione, por do ta vendos të gjithë skenarin në fund të hapit nëse kjo është ajo që ju po kërkoni.

Ne do të fillojmë duke importuar të gjitha modulet që do të na duhen dhe pastaj duke vendosur modalitetin GPIO në GPIO. BCM

importoni numpy si np

import os koha e importit import RPi. GPIO si GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM)

Kjo listë tjetër e quajtur ControlPin është një grup numrash që përfaqëson kunjat e daljes që do të përdoren për motorin tonë stepper.

ControlPin = [14, 15, 18, 23]

Për-loop i vendos këto kunja si Produkte dhe më pas sigurohet që ato të jenë të fikura. Unë kam akoma një kod këtu për ta lënë sirtarin të mbyllet me shtypjen e një butoni, por vendosa të përdor një kohëmatës në vend të tij.

GPIO.setup (ControlPin , GPIO. OUT)

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

Dy variablat e ardhshëm janë sekuenca që do të përdorim për të drejtuar motorin. Unë e mësova këtë informacion nga një video e mrekullueshme nga Gaven MacDonald të cilën e rekomandoj shumë ta shikoni pasi ai hyn në thellësi jo vetëm në kod, por në motorin aktual (gjendet këtu: https://www.youtube.com/embed/Dc16mKFA7Fo) Me Në thelb, secila sekuencë do të përsëritet duke përdorur sythe të vendosura në funksionet e ardhshme të OpenComp dhe closeComp. Nëse shikoni nga afër seq2 është vetëm e kundërta e seq1. Po, e keni menduar. Njëra është për të lëvizur motorin përpara dhe tjetra është e kundërt.

seq1 =

seq2 =

Duke filluar me funksionin tonë openComp ne krijojmë një lak for që do të përsëritet 1024 herë. Sipas videos së MacDonald's, përsëritjet 512 do të siguronin një rrotullim të plotë të motorit dhe zbulova se rreth dy rrotullime ishin të gjata, por kjo mund të rregullohet në varësi të madhësisë së një individi. Lak-u tjetër i ardhshëm përbëhet nga 8 përsëritje në mënyrë që të llogariten për 8 vargjet që gjenden në seq1 dhe seq2. Dhe së fundi, laku i fundit for-it përsëritet katër herë për katër artikujt që gjenden në secilën prej këtyre vargjeve, si dhe 4 kunjat GPIO me të cilët kemi motorin tonë të lidhur. Linja më poshtë zgjedh pinin GPIO dhe më pas e ndez ose e fik atë në varësi të iteracionit të aktivizuar. Linja pas siguron një kohë tampon që motori ynë të mos rrotullohet fare. Pasi motori të rrotullohet për të lëvizur sirtarin jashtë, ai fle për 5 sekonda para se të lëvizë. Kjo kohë mund të rregullohet këtu ose mund të aktivizoni kodin e komentuar që lejon përdorimin e një butoni për të ecur përpara me skriptin dhe jo një kohëmatës.

për i në rang (1024):

për gjysmën e hapit në rang (8): për kunjin në rang (4): GPIO.putput (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) '' 'ndërsa True: nëse GPIO.input (2) == GPIO. LOW: pushim; "" kohë. Gjumë (5)

Funksioni closeComp funksionon në një mënyrë të ngjashme. Pasi motori të kthehet prapa, unë vazhdoj të vendos kunjat tona të fundit GPIO në të ulët, në mënyrë që të sigurohemi që nuk po humbim asnjë energji dhe pastaj shtoj edhe tre sekonda kohë para se të vazhdoj.

për i në rang (1024):

për gjysmën e hapit në rang (8): për kunjin në rang (4): GPIO.putput (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) print ("Compartment Closed") GPIO.output (ControlPin [0], 0) GPIO.putput (ControlPin [3], 0) koha. Gjumi (3)

Pjesa më e madhe e pjesës tjetër përdoret për të vendosur kamerën dhe për të filluar njohjen e fytyrës. Përsëri, udhëzimet e MKRoBot hyjnë në pjesë më shumë, por tani për tani, unë jam vetëm duke treguar pjesët e përdorura për pasqyrë.

Së pari ndryshova emrat e listave në mënyrë që emri im të jetë në indeksin të cilin e caktova gjatë mbledhjes së të dhënave (në rastin tim 1). Dhe pastaj vendosa pjesën tjetër të vlerave në Asnjë pasi nuk kisha më fytyra në grupin e të dhënave.

emrat = ['Asnjë', 'Daniel', 'Asnjë', 'Asnjë', 'Asnjë', 'Asnjë']

Linjat tona të fundit të kodit janë zbatuar në thicc for-loop. Kam krijuar një variabël për të ruajtur besimin si një numër të plotë (intConfidence) para se besimi i ndryshueshëm të kthehet në një varg. Pastaj unë përdor një deklaratë if për të kontrolluar nëse besimi është më i madh se 30 dhe nëse id (personi që kompjuteri po zbulon, në këtë rast, "Daniel") është i barabartë me emrin tim. Pasi të konfirmohet kjo, funksioni openComp quhet i cili (siç u shpjegua më parë) lëviz motorin, fillon jashtë pas 5 sekondash dhe pastaj vazhdon të mbyllë Comp, i cili lëviz motorin në drejtim të kundërt dhe bën një pastrim para se të vazhdojë me lakun thicc.

nëse intConfidence> 30 dhe id == 'Daniel':

openComp () closeComp ()

Një gabim që kam gjetur këtu është se nganjëherë pas kthimit të closeComp, kodi vazhdon, por deklarata e kushtëzuar nëse konstatohet të jetë përsëri e vërtetë sikur të lexojë burim video që është ende në tampon. Edhe pse kjo nuk ndodh çdo herë që unë ende nuk kam gjetur një mënyrë për të siguruar që ajo të mos ndodhë kurrë, kështu që nëse dikush ka ndonjë ide, thjesht më tregoni në komente.

Këtu është i gjithë skenari i tëri në një vend (dhe pak më poshtë ky është i shkarkueshëm):

import cv2

import numpy si np import os kohë importi import RPi. GPIO si GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] për i në rang (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.putput (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Hapi 10: Montimi i Pi dhe lidhja e motorit

Montimi i Pi dhe lidhja e motorit
Montimi i Pi dhe lidhja e motorit
Montimi i Pi dhe lidhja e motorit
Montimi i Pi dhe lidhja e motorit
Montimi i Pi dhe lidhja e motorit
Montimi i Pi dhe lidhja e motorit

Montimi i Raspberry Pi në kornizë ishte mjaft i thjeshtë. Kam hartuar një bërryl të vogël 90 gradë me njërën fytyrë që ka një vrimë dhe ana tjetër është plotësisht e sheshtë. Pas printimit 3D dy prej tyre ato mund të ngjiten me vida në Raspberry Pi në vrimat e tij të montimit (unë i kam përdorur dy vrimat në secilën anë të kunjave GPIO).

Pastaj vazhdova të përdor super zam në fytyrat e kundërta të bërrylave të printuar 3D për të ngjitur Pi pikërisht mbi sirtarin në kornizë. Pasi e lash ngjitësin të thahej, unë isha në gjendje të hiqja ose zëvendësoja Pi në pozicion thjesht dhe në mënyrë të përshtatshme vetëm me dy vida. Unë kam.stl për bërrylin e lidhur më poshtë.

Tani thjesht lidhni drejtuesin e motorit në PI me IN1, IN2, IN3, IN4 që lidhen me GPIO 14, 15, 18, 23 respektivisht. Së fundi, lidhni kunjat 5v dhe Ground të bordit të kontrolluesit me daljet 5v dhe kunjat e Tokës të Pi.

Këtu keni një lidhje me Pinout Pinout për disa referenca:

Hapi 11: Montimi i kamerës

Montimi i Kameres
Montimi i Kameres
Montimi i Kameres
Montimi i Kameres
Montimi i Kameres
Montimi i Kameres

Montimi i kamerës ishte pak më pak i fortë se Pi, por metoda e përfundoi punën. Pas projektimit dhe shtypjes së një rrezeje të hollë me 2 vrima në secilin skaj, unë e bashkova trarin në Rasberry Pi përmes vrimës së tij të montimit. Pastaj thjesht lidhni kamerën në skajin e kundërt të rrezes me një vidë tjetër. Ta-da! Duket bukur fluturon.

Hapi 12: Krijimi dhe montimi i mekanizmit të sirtarit-lëvizës

Krijimi dhe montimi i mekanizmit të sirtarit-lëvizës
Krijimi dhe montimi i mekanizmit të sirtarit-lëvizës
Krijimi dhe montimi i mekanizmit të sirtarit-lëvizës
Krijimi dhe montimi i mekanizmit të sirtarit-lëvizës
Krijimi dhe montimi i mekanizmit të sirtarit-lëvizës
Krijimi dhe montimi i mekanizmit të sirtarit-lëvizës

Ky hap u bë i lehtë falë dhuratave gjithnjë dashamirëse të komunitetit të krijuesve. Pas një kërkimi të shpejtë në Thingiverse unë kam qenë në gjendje të gjej një aktivizues linear të krijuar nga TucksProjects (gjendet këtu: https://www.thingiverse.com/thing:2987762). E tëra çfarë mbeti për të bërë ishte ta godisni në një kartë SD dhe ta lini printerin të bëjë punën.

Përfundova duke hyrë në Fusion 360 dhe redaktova nxitjen pasi boshti i motorit tim ishte shumë i madh për atë të ofruar nga TucksProjects. Unë kam.stl për atë më poshtë. Pasi të jetë bërë printimi, ne vetëm duhet ta montojmë atë duke vendosur nxitjen në boshtin e motorit, pastaj duke e bashkuar motorin dhe anët e rrethimit me 2 vida (sigurohuni që ta vendosni raftin në mes para se ta mbyllni). Përfundova që duhej të prisja një centimetër nga rafti në mënyrë që të përshtatet në mes të sirtarit dhe kornizës.

Tani gjithçka që mbetet është bashkimi i mekanizmit në kornizë dhe sirtar. "PTRFUNDIM SI DO TE B DoJM t?" ju pyesni … po, thuajeni me mua: Super Ngjitës. Siç tregohet në fotot e mësipërme, thjesht vendosni mekanizmin në pjesën e poshtme të kornizës dhe shtyjeni atë kundër pjesës së drurit mbi të cilën rrëshqet sirtari. Vitalshtë jetike këtu që të përpiqeni ta merrni raftin/mekanizmin sa më paralel me kornizën në mënyrë që kur të lëvizë mekanizmi ta shtyjë sirtarin drejt dhe jo në një kënd. Pasi zamja të jetë tharë, vendosni edhe pak zam në skajin e raftit dhe zhvendoseni sirtarin në pozicion dhe lëreni të thahet. Pasi të kemi përfunduar ne kemi një mekanizëm të fortë për të rrëshqitur sirtarin tonë sekret brenda dhe jashtë.

Hapi 13: Shtimi i kartonit prapa pasqyrës

Shtimi i kartonit prapa pasqyrës
Shtimi i kartonit prapa pasqyrës
Shtimi i kartonit prapa pasqyrës
Shtimi i kartonit prapa pasqyrës
Shtimi i kartonit prapa pasqyrës
Shtimi i kartonit prapa pasqyrës

Në mënyrë që ky film i dyanshëm të duket më shumë si pasqyrë, zbulova se i shërben mirë qëllimit tonë të vendosim karton pas xhamit. Kartoni i përdorur është ai që erdhi me kornizën, por çdo pjesë e prerë për tu përshtatur do të funksionojë. Kjo gjithashtu siguron asnjë dritë nga LED kamera, kontrolluesi i motorit ose shfaqjet Pi në anën tjetër të pasqyrës. Me gjithçka në vendin e vet, përdorni një laps për të shënuar vendin ku ulet kamera në karton. Pastaj përdorni një brisk për të prerë një drejtkëndësh në mënyrë që kamera të shikojë kur të jetë në vend.

Hapi 14: Vendosja e Copës Finale

Vendosja e Copës Finale
Vendosja e Copës Finale
Vendosja e Copës Finale
Vendosja e Copës Finale

Gjëja e fundit që duhet bërë është të vendosni pjesën e përparme të sirtarit që ishte lënë më herët. Lëvizni motorin në mënyrë që sirtari të dalë jashtë. Pastaj ngjiteni pjesën e përparme në mënyrë që pjesa e sirtarit të jetë në qendër (duhet të ketë pak varje në të gjitha anët. Pastaj mund ta varni vetëm në një mur.

Hapi 15: Finalja

Finale
Finale
Finale
Finale

Aty e keni! Ka disa përmirësime që mund të bëhen, siç është shtimi i atij butoni, blerja e një filmi më të mirë me dy drejtime dhe rregullimi i këtij defekti në kod, por në përgjithësi, ai e bën punën: duket si një pasqyrë, njeh të paracaktuarin fytyrën e përdoruesit dhe hap atë sirtarin e vogël të lezetshëm. Si gjithmonë, do të doja të dëgjoja mendimet, pyetjet dhe kujtimet tuaja në komentet më poshtë.

Vlerësimi i përgjithshëm: 10/10

Komentet: #Nuk do të përpiqet përsëri … nëse nuk mund ta ndjek këtë të udhëzueshme;)

Sfida e Ndarjes Sekrete
Sfida e Ndarjes Sekrete
Sfida e Ndarjes Sekrete
Sfida e Ndarjes Sekrete

Çmimi i Madh në Sfidën e Ndarjes Sekrete

Recommended: