Sadržaj:

Ogledalo za prepoznavanje lica sa tajnim odjeljkom: 15 koraka (sa slikama)
Ogledalo za prepoznavanje lica sa tajnim odjeljkom: 15 koraka (sa slikama)

Video: Ogledalo za prepoznavanje lica sa tajnim odjeljkom: 15 koraka (sa slikama)

Video: Ogledalo za prepoznavanje lica sa tajnim odjeljkom: 15 koraka (sa slikama)
Video: Radim u Privatnom muzeju za bogate i slavne. Хорор приче. Užas. 2024, Novembar
Anonim
Ogledalo za prepoznavanje lica sa tajnim odjeljkom
Ogledalo za prepoznavanje lica sa tajnim odjeljkom
Ogledalo za prepoznavanje lica sa tajnim odjeljkom
Ogledalo za prepoznavanje lica sa tajnim odjeljkom
Ogledalo za prepoznavanje lica s tajnim pretincem
Ogledalo za prepoznavanje lica s tajnim pretincem

Uvijek su me zanimali uvijek kreativni tajni odjeljci koji se koriste u pričama, filmovima i slično. Stoga sam, kad sam vidio natjecanje za tajne odjeljke, odlučio eksperimentirati s tom idejom i napraviti ogledalo običnog izgleda koje otvara tajnu ladicu sa strane kad prava osoba pogleda u to.

Koristeći Raspberry Pi, malo znanja o programiranju na pythonu i klasu prodavnica 8. razreda, možemo stvoriti ovaj šiljati uređaj za skrivanje objekata na vidnom mjestu kojima će imati pristup samo pravi korisnik.

Posebno bih se zahvalio ovim ljudima/platformama odakle sam dobio i svoje podatke i resurse:

TeCoEd - Youtube kanal

Emmet iz PiMyLifeUpa

MJRoBot na Hackster.io (profil)

Gaven MacDonald - Youtube kanal

Tucker Shannon na Thingiverseu (profil)

Supplies

Okviri:

  • Drvena daska (dimenzije ove ploče bile su 42 x 7,5 x 5 x 16 cm)
  • Okvir za slike sa olovkom (sa staklom)
  • Boja u spreju
  • Jednosmjerno reflektirajuće ljepilo
  • Sredstvo za čišćenje stakla i krpa
  • MDF drvo

Potrošni materijal za prepoznavanje lica:

  • Raspberry Pi (koristio sam Pi 3 B+, ali postoje i druge opcije)
  • Modul kamere
  • Stepper Motor

Alati:

  • Stona testera
  • Jig Saw
  • Brusni papirWood
  • GlueTape
  • Izmerite
  • Makaze
  • Sprej boca
  • 3D štampač
  • Super ljepilo

Korak 1: Rezovi za okvir okvira

Rezovi za okvir okvira
Rezovi za okvir okvira
Rezovi za okvir okvira
Rezovi za okvir okvira
Rezovi za okvir okvira
Rezovi za okvir okvira
Rezovi za okvir okvira
Rezovi za okvir okvira

Okvir za slike sam kupio u polovnoj trgovini. Samo upozorenje, pobrinite se da daske koje čine okvir budu široke najmanje 1 1/2 . To je kako biste na njega mogli zalijepiti druge drvene ploče s dovoljno prostora za rad. Također, pobrinite se da staklo u okvir je potpuno jasan. Slučajno sam kupio zamrznuti, a zatim sam morao kupiti drugi okvir samo za čisto staklo. Budući da se koristi moj okvir, mjere za okvir kutije mogu varirati.

  • Postavite okvir u portretnu orijentaciju. Izmjerite duge stranice (LS) stranice staklene rupe na okviru s dodatnih ½”na vrhu i na dnu. (tj. dodajte centimetar na dugu stranu mjerenja staklene rupe. Zapišite ovo i označite LSM (Mjerenje duge strane).
  • Slično, izmjerite gornju stranu rupe i dodajte dodatnih 1”. Zapišite ovo i označite SSM (Short Side Measurement).
  • Uzmite dasku i pomoću stolne pile izrežite dva LSM x 2”i dva SSM x 2”.
  • Uzmite jedan od LSM rezova i izmjerite pravokutnik 2”x1” koji je 1”odozdo i ½” s lijeve i desne strane (kao što je prikazano na slici 3).
  • Ubodnom pilom izrežite rupu. Zatim brusnim papirom izbrusite rubove.

Korak 2: Rezovi za ladicu

Rezovi za fioku
Rezovi za fioku
Rezovi za fioku
Rezovi za fioku
Rezovi za fioku
Rezovi za fioku
Rezovi za fioku
Rezovi za fioku

Sada ćemo početi graditi ladicu (poznatu i kao tajni odjeljak).

  • Izrežite dvije stranice 4”x 1”, 3 ⅜”x 1” (zadnja ivica), 4 ¼”x 1 ¼” (prednja ivica) i 4”x 3 ⅜” (platforma).
  • Zalijepite prvu stranu 4”x 1” duž stranice 4”platforme. Stavio sam nekoliko presavijenih papira ispod stranice platforme tako da je malo podignuta, kako se ne bi vuklo po rupi koju sam izrezao u LS dasci. Ostavite da se suši 30 minuta.
  • Slično, zalijepite 3 ⅜”x 1” duž 3 ⅜”ruba platforme. Ostavite da se suši 30 minuta. Zatim zalijepite drugu stranu 4”x 1” na suprotnu stranu prve. Ostavite da se suši 30 minuta.
  • Odložite za sada prednju ivicu. To će biti posljednja stvar zalijepljena na ladicu.
  • Kad završite, provjerite da li se uklapa u rupu koju ste ubodom izrezali na LSM dasci. U suprotnom, izbrusite rupu sve dok ladica lako ne klizi unutra i van, te nema povlačenja.

Korak 3: Sastavljanje okvira

Sastavljanje okvira
Sastavljanje okvira
Sastavljanje okvira
Sastavljanje okvira
Sastavljanje okvira
Sastavljanje okvira

Sa završetkom svih dijelova možemo početi sastavljati cijeli okvir.

  • Ljepite LSM dasku centriranu sa staklenom rupom sa ½”sa svake strane. Uvjerite se da je zalijepljen ½”od rupe (kao što je prikazano na slici 1). Ostavite da se suši 30 minuta.
  • Zalijepite prvu SSM dasku tako da ivica dodiruje unutrašnjost LSM daske koja je upravo zalijepljena. (Upotrijebite ravnalo kako biste bili sigurni da je zalijepljeno ravno). Ostavite da se suši 30 minuta.
  • Uzmite drugu LSM stranu i zalijepite slično kao prva. Uvjerite se da je ½”udaljen od rupe i da je samo pričvršćeni SSM zalijepljen s unutarnje strane daske. Ostavite da se suši 30 minuta.
  • Zalijepite posljednji SSM na gornju ivicu. Budući da imate dva LSM -a na obje strane, ovisno o tome koliko ste ih pravilno pričvrstili, možda ćete morati brusiti strane SSM -a prema dolje kako biste bili sigurni da odgovara (moje rezanje je ponekad isključeno). Ostavite da se suši 30 minuta.
  • Izmjerite mali prostor između dna ladice i okvira. Odrežite komad MDF drva s ovom mjerom za 4 ". Želite da ovaj komad postavite blizu ladice, ali ga ne dodirujete. Namijenjen je za podupiranje ladice s minimalnim trenjem.
  • Kad sve završim, okvir sam naslikao sprejom tako da se svi dijelovi podudaraju.

Korak 4: Za ogledalo

Za ogledalo
Za ogledalo
Za ogledalo
Za ogledalo
Za ogledalo
Za ogledalo
Za ogledalo
Za ogledalo

Jednosmjerno ljepilo za film koje sam kupio od Amazona koštalo je oko 10 dolara. Postoje kvalitetniji koji su malo skuplji ako vas zanima. Ono što ja koristim odražava, ali možete reći da to nije obično ogledalo koje biste vidjeli u kući. Skuplji će vam dati takav izgled.

  • Očistite staklo sredstvom za čišćenje stakla s obje strane.
  • Odmotajte jednosmjerno ljepilo i položite staklo na vrh. Izrežite ljepilo tako da ima najmanje ½”viška sa svake strane stakla.
  • Odložite čašu sa strane i namočite joj jednu stranu vodom. Zatim skinite plastični premaz s jednosmjernog ljepila i poprskajte tek izloženu stranu vodom.
  • Stavite mokru stranu stakla na mokru stranu ljepila. Ostavite da odstoji 30 minuta.
  • Preokrenite i palcem izravnajte sve mjehuriće između ljepila i stakla. Zatim odrežite višak ljepila oko rubova.

Korak 5: Instalirajte Raspbian Stretch

Ovo je bio moj prvi put da se upuštam u okruženje Raspberry Pi i počeo sam tražiti upute o tome kako instalirati OS. Na kraju sam na Youtube -u pronašao jednostavan vodič kompanije TeCoEd koji je prošao kroz proces instaliranja Stretch -a na SD karticu (sa prilično ljupkim uvodom). Evo veze do tog vodiča:

U suštini, sve što trebate učiniti je:

  • Formatirajte SD karticu odabirom vašeg Drive >> Drive Tools >> Format. Preuzmite ZIP datoteku za Raspian Stretch (nalazi se ovdje:
  • Prebacite sliku OS -a na SD karticu. TeCoEd je upotrijebio Win32 Disk Imager da to dovrši. Na kraju sam instalirao balenaEtcher što mi se činilo malo jednostavnije. (Evo veze za preuzimanje za balenaEtcher:
  • Jednom u balenaEtcher -u odaberite “Flash From File” i odaberite prethodno preuzetu ZIP datoteku. Zatim odaberite željenu SD karticu (ako nije odabrana automatski). Zatim pritisnite sočno dugme za blic i sačekajte da se magija dogodi.

Jednom instalirana na SD karticu možete je umetnuti u Raspberry Pi i proći kroz opći proces postavljanja Pi.

Korak 6: Instalirajte OpenCV

A sada na dijelove koji su više orijentirani na prepoznavanje lica. Da bismo prepoznali lica, moramo preuzeti biblioteku OpenCV koja sadrži veliki broj alata za rad s računarskim vidom.

Instaliranje OpenCV -a za mene je bio najteži dio softverskog aspekta. No, nakon što sam slijedio brojne upute, napokon sam pronašao Emmetov vodič iz PiMyLifeUpa koji je uspio trik koji se nalazi ovdje:

Neću prolaziti kroz ove korake jer će vam biti prikladnije slijediti ih s veze (s datim objašnjenjima i mogućnošću lakšeg kopiranja i lijepljenja direktno s web lokacije).

Korak 7: Omogućite/testirajte kameru

Omogućite/testirajte kameru
Omogućite/testirajte kameru
Omogućite/testirajte kameru
Omogućite/testirajte kameru

Nakon instaliranja OpenCV-a, ostatak mog putovanja je završen pomoću vodiča MJRoBot-a na Hackster.io-u koji se nalazi ovdje:

Prije nego što počnemo, želio bih vas podsjetiti da ja nisam izvorni tvorac ovih skripti, ali sam na kraju izmijenio njihove dijelove.

Za početak bismo trebali testirati kameru kako bismo bili sigurni da možemo snimiti video na ekranu. Potrošio sam oko sat vremena pokušavajući pokrenuti skriptu ponuđenu u 3. koraku MJRoBot -a. Kako bi život htio, zapravo moramo omogućiti kameru na Raspberry Pi -u (ispostavilo se da bi bilo dobro pročitati priložena uputstva … mmm ne). Dakle, nakon povezivanja kamere na odgovarajući port slijedite ove korake:

  • Otvorite komandni terminal i upišite sudo raspi-config
  • Odaberite "Omogući kameru" (ovo se može pronaći pod opcijom uređaja)
  • Pritisnite "Enter"
  • Idite na „Završi“i od vas će se zatražiti da ponovo pokrenete sistem

Zatim slijedite ove korake:

  • Idite na glavni izbornik maline (gore lijevo)
  • Preferences
  • Raspberry Pi konfiguracija
  • Interfejsi
  • Zatim u kameri odaberite "Omogućeno"
  • Zatim "OK"

Sada biste trebali moći uspješno pokrenuti ovu skriptu iz vodiča MJRoBot kako biste testirali kameru (zapamtite da se sav ovaj kôd i detaljniji opis nalaze na gore navedenoj vezi do vodiča za MJRobot):

uvoz numpy kao 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 (okvir, -1) # Okreni kameru okomito sivo = cv2.cvtBoja (okvir, cv2. COLOR_BGR2GRAY) cv2.imshow ('okvir', okvir) cv2.imshow ('sivo', sivo) k = cv2.waitKey (30) & 0xff if k == 27: # pritisnite 'ESC' da prekinete break cap.release () cv2.destroyAllWindows ()

Prethodni kôd trebao bi prikazivati dva prozora, jedan u boji, a drugi u sivim tonovima. Ako ste uspjeli ovako daleko, mislim da zaslužujete lijep sendvič.

Korak 8: Prikupljanje podataka i podaci o obuci

Prikupljanje podataka i podaci o obuci
Prikupljanje podataka i podaci o obuci
Prikupljanje podataka i podaci o obuci
Prikupljanje podataka i podaci o obuci
Prikupljanje podataka i podaci o obuci
Prikupljanje podataka i podaci o obuci

U priloženom vodiču autor dublje istražuje procese koda koji će uskoro biti ponuđeni, ali budući da su ovo upute o tome kako je ovo zrcalo napravljeno, neću dublje ulaziti u povijest niti u kompliciranu mehaniku. Ipak vam preporučujem da mjesec dana svog života pročitate o ove dvije stvari jer vam mogu dobro poslužiti.

Moraju se pokrenuti još samo tri skripte prije nego što sve uspije. Prvi je za prikupljanje podataka, drugi za obuku i posljednji je zapravo za prepoznavanje. Za prikupljanje podataka potrebno je snimiti stvarne slike lica i pohraniti ih na određeno mjesto za obuku. Tvorac ovog koda učinio je vrlo jednostavnim sve ovo obaviti pa preporučujem da slijedite ove upute kako biste izbjegli glavobolju.

Otvorite naredbenu liniju i napravite novi direktorij nazvavši ga nečim zabavnim (nazvao sam svoj FaceRec)

mkdir FaceRec

Sada promijenite direktorij u FaceRec i napravite poddirektorij pa mu dajte naziv skup podataka

cd FaceRec

mkdir skup podataka

Dok smo već na tome, možemo napraviti i drugi poddirektorij koji se zove trener

mkdir trener

Sada možete pokrenuti i slijediti upute prve skripte koja će snimati slike korisnika. (Samo upozorenje, obavezno unesite korisnički ID kao 1, 2, 3 itd.)

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') # Za svaki osoba, unesite jedan numerički identifikator lica face_id = input ('\ n unesite korisnički ID kraj pritisnite ==>') print ("\ n [INFO] Pokretanje snimanja lica. Pogledajte kameru i pričekajte …") # Inicirajte pojedinačni broj lica za uzorkovanje count = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip video slika okomito siva = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) lica = face_detector.detectMultiScale (sivo, 1,3, 5) za (x, y, w, h) u licima: cv2.pravokutnik (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Sačuvajte snimljenu sliku u fasciklu skupova podataka cv2.imwrite ("skup podataka/korisnik." + Str (face_id) + '.' + Str (broj) + ".jpg", sivo [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Pritisnite 'ESC' za izlaz iz videa ako je k == 27: break elif count> = 30: # Uzmite 30 uzoraka lica i zaustavite video prekid k print ("\ n [INFO] Izlazak iz programa i stvari o čišćenju") cam.release () cv2.destroyAllWindows ()

U ovom trenutku budite sigurni da ste na Pi postavili jastuk. Ako ne, pokrenite naredbu:

pip install jastuk

Nakon što se to završi, možete pokrenuti skriptu za obuku (drugu skriptu) koja će vam bez problema pružiti.yaml datoteku koja će se koristiti u završnoj skripti

import cv2import numpy kao np iz PIL -a import Image import os # Putanja za bazu slika slike lica = 'skup podataka' prepoznavača = cv2.face. LBPHFaceRecognizer_create () detektor = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funkcija za dobivanje slika i podataka o oznakama def getImagesAndLabels (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] faceSamples = ids = za imagePath u imagePaths: PIL_img = Image.open (imagePath).convert ('L') # pretvori u sivu skalu img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. split (".") [1]) lica = detektor.detectMultiScale (img_numpy) za (x, y, w, h) u licima: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Obuka lica. Trajat će nekoliko sekundi. Pričekajte …") lica, ids = getImagesAndLabels (path) prepoznavač.train (lica, np.array (ids)) # Sačuvajte model u trainer/trainer.yml Reconizer.write ('trainer/trainer.yml') # prepoznavač.save () je radio na Mac -u, ali ne i na Pi # Ispišite broj lica obučenih i završite ispis programa ("\ n [INFO] {0} lica obučena. Izlazak iz programa".format (len (np.unique (ids))))

Ono što je super u vezi sa ovim skupom skripti je to što se u sistem može unijeti više lica što znači da više pojedinaca može pristupiti unutrašnjosti ogledala ako to želi.

Dolje ispod imam skriptu za snimanje podataka i skriptu za obuku za preuzimanje.

Korak 9: Vrijeme prepoznavanja lica

Vrijeme prepoznavanja lica
Vrijeme prepoznavanja lica
Vrijeme prepoznavanja lica
Vrijeme prepoznavanja lica

Konačno, možemo pokrenuti skriptu za prepoznavanje. Ovoj skripti je dodano više koda kako bi motorički proces postao funkcionalan pa ću te dijelove objasniti malo temeljnije. Podijelit ću ga na odjeljke, ali cijelu skriptu ću staviti na kraj koraka ako to želite.

Počet ćemo tako što ćemo uvesti sve module koji će nam biti potrebni, a zatim postaviti GPIO način na GPIO. BCM

uvoz numpy kao np

import os Vrijeme uvoza uvoz RPi. GPIO kao GPIO GPIO.setwarnings (Netačno) GPIO.setmode (GPIO. BCM)

Ova sljedeća lista pod nazivom ControlPin niz je brojeva koji predstavljaju izlazne pinove koji će se koristiti za naš koračni motor.

ControlPin = [14, 15, 18, 23]

For-loop postavlja ove pinove kao izlaze, a zatim osigurava da su isključeni. Još imam ovdje kôd za puštanje ladice pritiskom na dugme, ali umjesto toga odlučio sam upotrijebiti mjerač vremena.

GPIO.setup (ControlPin , GPIO. OUT)

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

Sljedeće dvije varijable su nizovi koje ćemo koristiti za pogon motora. Ove sam informacije naučio iz prekrasnog videa Gavena MacDonalda koji vam toplo preporučujem da pogledate ne samo u kodu, već i u samom motoru (nalazi se ovdje: https://www.youtube.com/embed/Dc16mKFA7Fo). U suštini, svaka sekvenca će se ponavljati pomoću ugniježđenih for-petlji u nadolazećim funkcijama openComp i closeComp. Ako pažljivo pogledate, seq2 je upravo suprotna od seq1. Da, pogodili ste. Jedan je za pomicanje motora prema naprijed, a drugi za vožnju unatrag.

seq1 =

seq2 =

Počevši s našom openComp funkcijom, stvaramo for-loop koji će ponavljati 1024 puta. Prema MacDonald’sovom videu 512 iteracije bi osigurale potpunu rotaciju motora i otkrio sam da su oko dvije rotacije dobre dužine, ali to se može prilagoditi ovisno o veličini pojedinca. Sljedeća for-petlja sastoji se od 8 iteracija kako bi se uzelo u obzir 8 nizova pronađenih u seq1 i seq2. I na kraju, posljednja for-petlja ponavlja četiri puta za četiri stavke koje se nalaze u svakom od ovih niza, kao i za 4 GPIO pina na koje smo povezali motor. Donja linija odabire GPIO pin, a zatim ga uključuje ili isključuje ovisno o tome na kojoj je iteraciji uključen. Linija poslije daje neko vrijeme međuspremnika kako se naš motor uopće ne bi rotirao. Nakon što se motor okrene kako bi izvukao ladicu, spava 5 sekundi prije nego što krene dalje. Ovo vrijeme se ovdje može podesiti ili možete omogućiti kodirani komentar koji omogućava korištenje tipke za prosljeđivanje sa skriptom, a ne tajmerom.

za ja u dometu (1024):

za polukorak u rasponu (8): za pin u rasponu (4): GPIO.izlaz (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) '' 'dok je True: ako je GPIO.input (2) == GPIO. LOW: break; '' 'time.sleep (5)

Funkcija closeComp radi na sličan način. Nakon što se motor pomakne, nastavljam postavljati naše zadnje GPIO pinove na nisko kako bih se uvjerio da ne gubimo energiju, a zatim dodajem još tri sekunde prije nego što nastavim.

za ja u dometu (1024):

za polukorak u rasponu (8): za pin u rasponu (4): GPIO.izlaz (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) print ("Odeljak zatvoren") GPIO.output (ControlPin [0], 0) GPIO.izlaz (ControlPin [3], 0) time.sleep (3)

Većina sljedećeg dijela koristi se za postavljanje kamere i početak prepoznavanja lica. Opet, upute MKRoBota idu više u dijelove, ali za sada samo pokazujem dijelove koji se koriste za ogledalo.

Prvo sam promijenio imena popisa tako da se moje ime nalazi u indeksu koji sam mu dodijelio prilikom prikupljanja podataka (u mom slučaju 1). Zatim sam ostatak vrijednosti postavio na Ništa jer nisam imao više lica u skupu podataka.

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

Zadnjih nekoliko redaka koda implementirano je u debljoj for petlji. Kreirao sam varijablu za čuvanje povjerenja kao cijeli broj (intConfidence) prije nego što se varijabla pouzdanost pretvori u niz. Zatim koristim if-naredbu da provjerim je li povjerenje veće od 30 i je li id (koju osobu računar otkriva, u ovom slučaju, "Daniel") jednak mom imenu. Nakon što se to potvrdi, poziva se funkcija openComp koja (kao što je ranije objašnjeno) pomiče motor, izbacuje se nakon 5 sekundi, a zatim nastavlja zatvaranjeComp koji pomiče motor u suprotnom smjeru i vrši neko čišćenje prije nego što nastavi s petljom debljine.

ako je intConfidence> 30 i id == 'Daniel':

openComp () closeComp ()

Greška koju sam ovdje pronašao je ta što se ponekad, nakon što se closeComp vrati, kôd nastavi, ali se uvjetna if-naredba ponovo utvrdi kao da čita video feed koji je još uvijek u međuspremniku. Iako se to ne događa svaki put kad tek moram pronaći način da se to nikad ne dogodi, pa ako neko ima bilo kakvu ideju neka mi se javi u komentarima.

Evo cijelog skripta na jednom mjestu (a odmah ispod ovoga nalazi se za preuzimanje):

import cv2

uvoz numpy kao np uvoz os Vrijeme uvoza uvoz RPi. GPIO kao GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] za i u rasponu (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.izlaz (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Korak 10: Montiranje Pi i povezivanje motora

Postavljanje Pi i povezivanje motora
Postavljanje Pi i povezivanje motora
Postavljanje Pi i povezivanje motora
Postavljanje Pi i povezivanje motora
Postavljanje Pi i povezivanje motora
Postavljanje Pi i povezivanje motora

Postavljanje Raspberry Pi na okvir bilo je prilično jednostavno. Dizajnirao sam mali lakat od 90 stepeni sa jednim licem sa rupom, a sa druge strane potpuno ravnim. Nakon 3D ispisa dva od njih mogu se pričvrstiti vijcima na Raspberry Pi na otvorima za montažu (koristio sam dvije rupe sa svake strane GPIO pinova).

Zatim sam nastavio koristiti super ljepilo na suprotnim stranama 3D printanih laktova za lijepljenje Pi tik iznad ladice na okviru. Nakon što sam ostavio ljepilo da se osuši, uspio sam jednostavno i zgodno ukloniti ili zamijeniti Pi sa dva vijka. Ja dolje imam.stl za lakat.

Sada jednostavno spojite upravljački program motora na PI sa IN1, IN2, IN3, IN4 povezivanjem na GPIO 14, 15, 18, 23 respektivno. Konačno, spojite pinove 5v i Uzemljenje na upravljačkoj ploči na izlaze 5v i Igle za uzemljenje Pi.

Evo veze do Pi -ovog Pinout -a za referencu:

Korak 11: Montiranje kamere

Montiranje kamere
Montiranje kamere
Montiranje kamere
Montiranje kamere
Montiranje kamere
Montiranje kamere

Montaža kamere bila je nešto manje robusna od Pi, ali metoda je obavila posao. Nakon projektiranja i ispisa tanke grede s 2 rupe na svakom kraju, pričvrstio sam gredu na Rasberry Pi kroz otvor za montažu. Zatim samo pričvrstite kameru na suprotni kraj snopa drugim vijkom. Ta-da! Lepo izgleda.

Korak 12: Stvaranje i postavljanje mehanizma za pomicanje ladica

Stvaranje i postavljanje mehanizma za pomicanje ladica
Stvaranje i postavljanje mehanizma za pomicanje ladica
Stvaranje i postavljanje mehanizma za pomicanje ladica
Stvaranje i postavljanje mehanizma za pomicanje ladica
Stvaranje i postavljanje mehanizma za pomicanje ladica
Stvaranje i postavljanje mehanizma za pomicanje ladica

Ovaj korak je olakšan zahvaljujući uvijek dobronamernim darovima zajednice proizvođača. Nakon kratkog pretraživanja na Thingiverseu, uspio sam pronaći linearni aktuator koji je izradio TucksProjects (ovdje se nalazi: https://www.thingiverse.com/thing:2987762). Ostalo je samo da ga stavite na SD karticu i pustite štampač da odradi posao.

Na kraju sam ušao u Fusion 360 i uredio potpornu cijev jer je osovina moga motora bila prevelika za onu koju je dao TucksProjects. U nastavku imam.stl za to. Nakon što je ispis završen, samo ga moramo sastaviti postavljanjem ostruge na osovinu motora, zatim pričvršćivanjem stranica motora i kućišta s 2 vijka (pazite da umetnete stalak između njih prije zatvaranja). Na kraju sam morao odrezati centimetar od stalka kako bi stao između ladice i okvira.

Sada ostaje samo pričvršćivanje mehanizma na okvir i ladicu. "A KAKO ĆEMO RADITI?" pitaš … da, reci sa mnom: Super ljepilo. Kao što je prikazano na gornjim slikama, samo postavite mehanizam na dno okvira i gurnite ga prema komadu drveta po kojem ladica klizi. Ovdje je od vitalnog značaja da pokušate držati stalak/mehanizam što je moguće paralelnije s okvirom, tako da kad se mehanizam pomiče gurne ladicu ravno, a ne pod kutom. Nakon što se ljepilo osuši, stavite još malo ljepila na rub police i pomaknite ladicu u položaj i ostavite da se osuši. Kad završimo, imamo čvrst mehanizam za uvlačenje i izvlačenje naše tajne ladice.

Korak 13: Dodavanje kartona iza ogledala

Dodavanje kartona iza ogledala
Dodavanje kartona iza ogledala
Dodavanje kartona iza ogledala
Dodavanje kartona iza ogledala
Dodavanje kartona iza ogledala
Dodavanje kartona iza ogledala

Kako bih ovaj dvosmjerni film izgledao poput ogledala, otkrio sam da nam dobro služi postavljanje kartona iza stakla. Korišteni karton je onaj koji je došao s okvirom, ali svaki komad izrezan po mjeri će funkcionirati. Ovo također osigurava da svjetlost LED diode kamere, kontrolera motora ili Pi ne prikazuje svjetlo s druge strane ogledala. Dok je sve na svom mjestu, olovkom označite gdje kamera leži na kartonu. Zatim britvicom izrežite pravokutnik tako da kamera može proviriti kad je na mjestu.

Korak 14: Stavljanje posljednjeg komada

Stavljanje poslednjeg dela
Stavljanje poslednjeg dela
Stavljanje poslednjeg dela
Stavljanje poslednjeg dela

Posljednje što trebate učiniti je staviti prednji dio ladice koji je ranije bio odložen. Pomaknite motor tako da ladica strši. Zatim zalijepite prednji dio tako da komad ladice bude centriran (trebalo bi malo objesiti sa svih strana. Zatim ga možete objesiti na zid).

Korak 15: Finale

Finale
Finale
Finale
Finale

Evo ga! Postoji nekoliko poboljšanja koja bi se mogla napraviti, poput dodavanja tog gumba, kupnje boljeg dvosmjernog filma i ispravljanja te greške u kodu, ali sve u svemu, obavi posao: izgleda kao ogledalo, prepoznaje unaprijed određeno korisnikovo lice i otvara tu slatku malu ladicu. Kao i uvijek, volio bih čuti vaša razmišljanja, pitanja i memoare u komentarima ispod.

Ukupna ocjena: 10/10

Komentari: #Ne bih pokušao ponovo … osim ako ne bih mogao slijediti ove upute;)

Izazov za tajne odeljke
Izazov za tajne odeljke
Izazov za tajne odeljke
Izazov za tajne odeljke

Velika nagrada u izazovu Secret Compartment Challenge

Preporučuje se: