Obsah:

Zrcadlo pro rozpoznávání obličeje s tajným prostorem: 15 kroků (s obrázky)
Zrcadlo pro rozpoznávání obličeje s tajným prostorem: 15 kroků (s obrázky)

Video: Zrcadlo pro rozpoznávání obličeje s tajným prostorem: 15 kroků (s obrázky)

Video: Zrcadlo pro rozpoznávání obličeje s tajným prostorem: 15 kroků (s obrázky)
Video: 15 skvělých Samsung triků, které musíš znát. 2024, Červenec
Anonim
Zrcadlo pro rozpoznávání obličeje s tajným prostorem
Zrcadlo pro rozpoznávání obličeje s tajným prostorem
Zrcadlo pro rozpoznávání obličeje s tajným prostorem
Zrcadlo pro rozpoznávání obličeje s tajným prostorem
Zrcadlo pro rozpoznávání obličeje s tajným prostorem
Zrcadlo pro rozpoznávání obličeje s tajným prostorem

Vždycky mě fascinovaly stále kreativní tajné oddíly používané v příbězích, filmech a podobně. Když jsem tedy viděl soutěž Secret Compartment Contest, rozhodl jsem se s touto myšlenkou experimentovat sám a vyrobit obyčejné zrcadlo, které otevírá tajnou boční zásuvku, když se do ní podívá správný člověk.

Využitím Raspberry Pi, některých znalostí programování v pythonu a třídy obchodu 8. třídy můžeme vytvořit toto spiffy zařízení, které skryje objekty na očích, ke kterým bude mít přístup pouze správný uživatel.

Chtěl bych poděkovat těmto lidem/platformám, odkud jsem také získal své informace a zdroje:

TeCoEd - kanál YouTube

Emmet z PiMyLifeUp

MJRoBot na Hackster.io (profil)

Gaven MacDonald - kanál YouTube

Tucker Shannon na Thingiverse (profil)

Zásoby

Dodávky rámu:

  • Wood Plank (Rozměry této desky byly 42 x 7,5 palce a 5/16 palce)
  • Rámeček na tužku (se sklem)
  • Barva ve spreji
  • Jednosměrné reflexní lepidlo
  • Čistič skla a hadr
  • MDF dřevo

Potřeby pro rozpoznávání obličeje:

  • Raspberry Pi (použil jsem Pi 3 B+, ale existují i další možnosti)
  • Modul kamery
  • Krokový motor

Nástroje:

  • Stolní pila
  • Jig Saw
  • Brusný papír Dřevo
  • GlueTape
  • Opatření
  • Nůžky
  • Rozprašovací láhev
  • 3D tiskárna
  • Super lepidlo

Krok 1: Řezy pro rámeček krabice

Řezy pro rámeček krabice
Řezy pro rámeček krabice
Řezy pro rámeček krabice
Řezy pro rámeček krabice
Řezy pro rámeček krabice
Řezy pro rámeček krabice
Řezy pro rámeček krabice
Řezy pro rámeček krabice

Koupil jsem rám obrazu z obchodu s použitým zbožím. Jen varování, ujistěte se, že prkna tvořící rám jsou alespoň 1 1/2 široká. To proto, abyste na něj mohli nalepit další desky ze dřeva s dostatečným prostorem pro práci. Rovněž se ujistěte, že sklo v rám je zcela jasný. Koupil jsem si omylem matný a pak jsem si musel koupit další rámeček jen na čiré sklo. Protože se používá můj rámeček, rozměry rámečku se mohou lišit.

  • Položte rámeček na výšku. Změřte dlouhé strany (LS) strany skleněného otvoru na rámu s dalším ½”nahoře i dole. (tj. přidejte palec k dlouhé straně měření skleněných děr. Zaznamenejte to a označte LSM (Long Side Measurement).
  • Podobně změřte horní stranu otvoru a přidejte další 1”. Zaznamenejte to a označte SSM (Short Side Measurement).
  • Pořiďte si desku a stolní pilou nařežte dva LSM x 2”a dva SSM x 2”.
  • Vezměte jeden z řezů LSM a změřte obdélník 2”x1”, který je 1”zespodu a ½” z levé a pravé strany (jak je znázorněno na obrázku 3).
  • Pomocí skládačky vyřízněte otvor. Poté použijte brusný papír k obroušení okrajů.

Krok 2: Řezy pro zásuvku

Řezy do zásuvky
Řezy do zásuvky
Řezy do zásuvky
Řezy do zásuvky
Řezy do zásuvky
Řezy do zásuvky
Řezy do zásuvky
Řezy do zásuvky

Nyní začneme stavět zásuvku (také tajný prostor).

  • Vyřízněte dvě strany 4”x 1”, 3 ⅜”x 1” (zadní hrana), 4 ¼”x 1 ¼” (přední hrana) a 4”x 3 ⅜” (platforma).
  • Přilepte první stranu 4”x 1” podél 4”strany plošiny. Vložil jsem pár přeložených papírů pod stranu plošiny, aby byla mírně nadzvednutá, takže by se netáhla do díry, kterou jsem vyřízl v prkně LS. Nechte 30 minut zaschnout.
  • Podobně přilepte 3 ⅜”x 1” podél 3 ⅜”okraje plošiny. Nechte 30 minut zaschnout. Poté přilepte druhou stranu 4”x 1” na opačnou stranu první. Nechte 30 minut zaschnout.
  • Přední okraj prozatím odložte. Bude to poslední věc nalepená na zásuvce.
  • Po dokončení zkontrolujte, zda zapadá do otvoru, který jste vyřezali do prkna LSM. Pokud ne, pískujte otvor, dokud se zásuvka snadno nezasune dovnitř a ven a nedojde k žádnému tažení.

Krok 3: Spojení rámu dohromady

Sestavení rámečku
Sestavení rámečku
Sestavení rámečku
Sestavení rámečku
Sestavení rámečku
Sestavení rámečku

Když jsou všechny díly kompletní, můžeme začít sestavovat celý rám.

  • Přilepte prkno LSM na střed se skleněným otvorem s ½”na každé straně. Ujistěte se, že je lepeno ½”od otvoru (jak je znázorněno na obrázku 1). Nechte 30 minut zaschnout.
  • Přilepte první prkno SSM tak, aby se hrana dotýkala vnitřku právě přilepeného prkna LSM. (Pomocí pravítka se ujistěte, že je nalepeno rovně). Nechte 30 minut zaschnout.
  • Vezměte druhou stranu LSM a lepte podobně jako první. Ujistěte se, že je ½”od otvoru a že SSM, který byl právě připevněn, je nalepen na vnitřní stranu prkna. Nechte 30 minut zaschnout.
  • Na horní hranu přilepte poslední SSM. Protože máte na obou stranách dva LSM, v závislosti na tom, jak rovně jste je připevnili, budete možná muset zbrousit boky SSM dolů, abyste se ujistili, že sedí (moje řezání je někdy vypnuté). Nechte 30 minut zaschnout.
  • Změřte malý prostor mezi dnem zásuvky a rámem. Uřízněte kus MDF dřeva s tímto měřením o 4 ". Chcete, aby byl tento kus blízko zásuvky, ale nedotýkal se jí. Je určen k podpoře zásuvky s minimálním třením.
  • Když bylo vše hotové, nastříkal jsem rám tak, aby se všechny kusy shodovaly.

Krok 4: Pro zrcadlo

Pro zrcadlo
Pro zrcadlo
Pro zrcadlo
Pro zrcadlo
Pro zrcadlo
Pro zrcadlo
Pro zrcadlo
Pro zrcadlo

Jednosměrné filmové lepidlo, které jsem koupil od Amazonu, stálo kolem 10 dolarů. Existují kvalitnější, které jsou v případě zájmu o něco dražší. Ten, který používám, odráží, ale můžete říct, že to není běžné zrcadlo, které byste viděli doma. Ty dražší vám ten vzhled dodají.

  • Vyčistěte sklo čisticím prostředkem na sklo na obou stranách.
  • Rozviňte jednosměrné lepidlo a položte sklo na vrch. Vyřízněte lepidlo tak, aby na každé straně skla byl přebytek alespoň ½”.
  • Sklo odložte stranou a jednu stranu navlhčete vodou. Poté odlepte plastový povlak z jednosměrného lepidla a nastříkejte nově odhalenou stranu vodou.
  • Umístěte mokrou stranu skla na mokrou stranu lepidla. Nechte sedět 30 minut.
  • Překlopte a palcem vyrovnejte všechny bubliny mezi lepidlem a sklem. Poté přeřízněte přebytečné lepidlo z okrajů.

Krok 5: Nainstalujte si Raspbian Stretch

Když jsem se poprvé ponořil do prostředí Raspberry Pi, začal jsem hledat pokyny, jak nainstalovat OS. Nakonec jsem na YouTube našel přímý návod od TeCoEd, který prošel procesem instalace aplikace Stretch na SD kartu (také s docela krásným úvodem). Zde je odkaz na tento návod:

V podstatě vše, co musíte udělat, je:

  • Naformátujte kartu SD výběrem položky Drive >> Drive Tools >> Format. Stáhněte si ZIP soubor pro Raspian Stretch (naleznete zde:
  • Flashujte obraz OS na SD kartu. TeCoEd k tomu použil Win32 Disk Imager. Nakonec jsem nainstaloval balenaEtcher, což vypadalo trochu přímočařeji. (Zde je odkaz ke stažení pro balenaEtcher:
  • Jakmile jste v balenaEtcher, vyberte „Flash From File“a vyberte dříve stažený soubor ZIP. Dále vyberte požadovanou kartu SD (pokud není vybrána automaticky). Poté stiskněte šťavnaté tlačítko blesku a počkejte, až se kouzlo stane.

Jakmile je nainstalován na SD kartu, můžete jej vložit do Raspberry Pi a projít obecným procesem nastavení Pi.

Krok 6: Nainstalujte OpenCV

Nyní k částem více zaměřeným na rozpoznávání obličeje. Abychom mohli rozpoznávat tváře, musíme si stáhnout knihovnu OpenCV, která obsahuje obrovské množství nástrojů pro práci s počítačovým viděním.

Instalace OpenCV pro mě byla nejnáročnější částí softwarového aspektu. Ale poté, co jsem postupoval podle mnoha pokynů, jsem konečně našel tutoriál od Emmet z PiMyLifeUp, který udělal trik, který najdete zde:

Nebudu procházet těmito kroky, protože vám bude lépe vyhovovat jejich následování z odkazu (s danými vysvětleními a možností snadnějšího kopírování a vkládání přímo z webu).

Krok 7: Povolte/otestujte kameru

Povolte/otestujte kameru
Povolte/otestujte kameru
Povolte/otestujte kameru
Povolte/otestujte kameru

Po instalaci OpenCV byl zbytek mé cesty dokončen pomocí tutoriálu od MJRoBot na Hackster.io, který najdete zde:

Než začneme, rád bych vám připomněl, že nejsem původním tvůrcem těchto skriptů, ale nakonec jsem upravil jejich části.

Nejprve bychom měli vyzkoušet kameru, abychom se ujistili, že můžeme zachytit video na obrazovku. Strávil jsem asi hodinu pokusem spustit skript uvedený v kroku 3 MJRoBot. Protože život by to měl, ve skutečnosti potřebujeme povolit kameru na Raspberry Pi (ukázalo se, že by bylo dobré přečíst si poskytnuté pokyny … mmm nah). Po připojení fotoaparátu ke správnému portu postupujte takto:

  • Otevřete příkazový terminál a zadejte sudo raspi-config
  • Vyberte „Povolit kameru“(toto lze nalézt pod možností zařízení)
  • Stiskněte „Enter“
  • Přejděte na „Dokončit“a budete vyzváni k restartu

Potom postupujte takto:

  • Přejděte do hlavní nabídky Raspberry (vlevo nahoře)
  • Předvolby
  • Konfigurace Raspberry Pi
  • Rozhraní
  • Poté ve fotoaparátu vyberte „Povoleno“
  • Pak je to v pořádku"

Nyní byste měli být schopni úspěšně spustit tento skript z tutoriálu MJRoBot a otestovat kameru (nezapomeňte, že celý tento kód a podrobnější popis najdete v uvedeném odkazu výše na tutoriál MJRobot):

import numpy jako 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 (rámeček, -1) # Převrátit fotoaparát svisle šedý = cv2.cvtColor (rámeček, cv2. COLOR_BGR2GRAY) cv2.imshow ('rámeček', rámeček) cv2.imshow ('šedý', šedý) k = cv2.waitKey (30) & 0xff pokud k == 27: # stiskněte 'ESC' pro ukončení přestávky cap.release () cv2.destroyAllWindows ()

Předchozí kód by měl zobrazit dvě okna, jedno barevné a druhé v odstínech šedé. Pokud jste se dostali tak daleko, myslím, že si zasloužíte pěkný sendvič.

Krok 8: Shromažďování dat a školení

Shromažďování údajů a školení
Shromažďování údajů a školení
Shromažďování údajů a školení
Shromažďování údajů a školení
Shromažďování údajů a školení
Shromažďování údajů a školení

V poskytnutém tutoriálu jde autor do mnohem hlouběji o procesech kódu, které budou brzy poskytnuty, ale protože se jedná o pokyny, jak bylo toto zrcadlo vytvořeno, nepůjdu do hloubky o historii ani o složité mechanice. Doporučuji však, abyste si měsíc života přečetli o těchto dvou věcech, protože mohou dobře posloužit vaší mysli.

Než to celé dokážeme zprovoznit, zbývají spustit jen asi tři další skripty. První je pro sběr dat, druhá pro jejich trénink a poslední je vlastně pro rozpoznávání. Sběr dat vyžaduje pořízení skutečných fotografií tváře a jejich uložení na konkrétní místo pro trénink. Tvůrce tohoto kódu velmi zjednodušil toto vše, takže doporučuji postupovat podle těchto pokynů, abyste se vyhnuli bolesti hlavy.

Otevřete příkazový řádek a vytvořte nový adresář s názvem něco zábavného (nazval jsem svůj FaceRec)

mkdir FaceRec

Nyní změňte adresář na FaceRec a vytvořte podadresář, který určitě pojmenujte datovou sadou

cd FaceRec

datový soubor mkdir

Když jsme u toho, můžeme také vytvořit další podadresář s názvem trenér

trenér mkdir

Nyní můžete spustit a řídit se pokyny prvního skriptu, který zachytí obrázky uživatele. (Jen hlavu nahoru, nezapomeňte zadat ID uživatele buď jako 1, 2, 3 atd.)

import cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set video width cam.set (4, 480) # set video height face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # For each osoba, zadejte jedno číselné ID tváře face_id = vstup ('\ n zadejte ID uživatele konec stiskněte ==>') tisk ("\ n [INFO] Inicializace snímání obličeje. Podívejte se na kameru a počkejte …") # Inicializujte individuální vzorkování počtu obličejů 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 (šedá, 1,3, 5) pro (x, y, w, h) v plochách: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Uložte zachycený obrázek do složky datových sad cv2.imwrite ("dataset/User." + Str (face_id) + '.' + Str (count) + ".jpg", šedá [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Stiskněte 'ESC' pro ukončení videa, pokud k == 27: počet přerušení elif> = 30: # Odeberte 30 obličejů a zastavte sledování videa k tisk ("\ n [INFO] Ukončení programu a vyčištění") cam.release () cv2.destroyAllWindows ()

V tuto chvíli se ujistěte, že jste na Pi nainstalovali polštář. Pokud ne, spusťte příkaz:

pip install polštář

Po dokončení můžete spustit tréninkový skript (druhý skript), který vám bezproblémově poskytne soubor.yaml, který bude použit ve finálním skriptu

import cv2import numpy as np from PIL import Image import os # Path for face image database path = 'dataset' recognitionnizer = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # funkce pro získání obrázků a dat štítků def getImagesAndLabels (cesta): imagePaths = [os.path.join (cesta, f) pro f v os.listdir (cesta)] faceSamples = ids = pro imagePath v imagePaths: PIL_img = Image.open (imagePath).convert ('L') # převede jej na stupně šedi img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. rozdělit (".") [1]) Faces = detector.detectMultiScale (img_numpy) for (x, y, w, h) in faces: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Tréninkové tváře. Bude to trvat několik sekund. Počkejte …") tváře, ids = getImagesAndLabels (cesta) rozpoznávání.train (tváře, np.array (ids)) # Uložte model do trenéra/trenéra.yml ("\ n [INFO] {0} tváře vyškoleny. Ukončení programu".format (len (np.unique (ids))))

Na této sadě skriptů je skvělé to, že do systému lze zadat více tváří, což znamená, že pokud je to žádoucí, může k vnitřnostem zrcadla přistupovat více osob.

Dole dole mám ke stažení skript Data Capture a skript Training.

Krok 9: Doba rozpoznávání obličeje

Doba rozpoznávání obličeje
Doba rozpoznávání obličeje
Doba rozpoznávání obličeje
Doba rozpoznávání obličeje

Nakonec můžeme spustit rozpoznávací skript. Do tohoto skriptu bylo přidáno více kódu, aby byl motorový proces funkční, takže tyto části vysvětlím trochu důkladněji. Rozdělím to na sekce, ale na konci kroku vložím celý skript, pokud o to jde.

Začneme importem všech potřebných modulů a poté nastavením režimu GPIO na GPIO. BCM

import numpy jako np

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

Tento další seznam s názvem ControlPin je řada čísel, která představují výstupní piny, které budou použity pro náš krokový motor.

ControlPin = [14, 15, 18, 23]

For-loop nastaví tyto piny jako výstupy a poté se ujistí, že jsou vypnuty. Stále tu mám nějaký kód, abych nechal zásuvku zavřít stisknutím tlačítka, ale místo toho jsem se rozhodl použít časovač.

GPIO.setup (ControlPin , GPIO. OUT)

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

Další dvě proměnné jsou sekvence, které použijeme k pohonu motoru. Tyto informace jsem se dozvěděl z nádherného videa od Gavena MacDonalda, které vřele doporučuji sledovat, protože jde do hloubky nejen o kódu, ale o skutečném motoru (naleznete zde: https://www.youtube.com/embed/Dc16mKFA7Fo). V podstatě bude každá sekvence iterována pomocí vnořených smyček for-for v nadcházejících funkcích openComp a closeComp. Pokud se podíváte pozorně, seq2 je přesně pravý opak seq1. Ano, uhodli jste. Jeden je pro pohyb motoru vpřed a druhý pro zpětný chod.

seq1 =

seq2 =

Počínaje naší funkcí openComp vytváříme smyčku for, která bude iterovat 1024krát. Podle videa MacDonald’s by 512 iterací zajistilo úplné otočení motoru a zjistil jsem, že asi dvě otáčky byly dobrá délka, ale toto lze upravit v závislosti na velikosti jednotlivce. Další smyčka for se skládá z 8 iterací, aby se zohlednilo 8 polí nalezených v seq1 a seq2. A nakonec poslední smyčka pro čtyřikrát iteruje čtyři položky, které se nacházejí v každém z těchto polí, a také 4 piny GPIO, ke kterým máme připojený motor. Níže uvedený řádek vybírá pin GPIO a poté jej zapíná nebo vypíná podle toho, ve které iteraci je zapnutý. Řádek po poskytuje určitý čas vyrovnávací paměti, aby se náš motor vůbec neotáčel. Poté, co se motor otočí a vysune zásuvku, usne na 5 sekund, než se pohne dál. Tuto dobu lze upravit zde nebo můžete povolit komentovaný kód, který umožňuje použití tlačítka pro předávání se skriptem místo časovače.

pro i v rozsahu (1024):

pro poloviční krok v rozsahu (8): pro pin v rozsahu (4): GPIO.output (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (0,001) '' 'while True: if GPIO.input (2) == GPIO. LOW: break; '' 'time.sleep (5)

Funkce closeComp funguje podobným způsobem. Poté, co se motor vrátí zpět, nastavím naše poslední GPIO piny na minimum, abych se ujistil, že nemrháme žádnou energií, a pak přidám další tři sekundy času, než půjdu dál.

pro i v rozsahu (1024):

pro poloviční krok v rozsahu (8): pro pin v rozsahu (4): GPIO.output (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (0,001) tisk ("Compartment Closed") GPIO.output (ControlPin [0], 0) GPIO.output (ControlPin [3], 0) time.sleep (3)

Převážná část další části se používá k nastavení fotoaparátu a zahájení rozpoznávání obličeje. Pokyny MKRoBot se opět více zabývají díly, ale prozatím pouze zobrazuji součásti použité pro zrcadlo.

Nejprve jsem změnil názvy seznamů tak, aby mé jméno bylo v indexu, který jsem mu při shromažďování dat přidělil (v mém případě 1). A pak jsem nastavil zbytek hodnot na Žádný, protože jsem v datové sadě neměl žádné další tváře.

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

Naše posledních několik řádků kódu je implementováno do smyčky thicc for. Vytvořil jsem proměnnou pro uložení důvěry jako celé číslo (intConfidence), než se proměnná spolehlivosti změní na řetězec. Poté pomocí příkazu if zkontroluji, zda je důvěra větší než 30 a zda se id (která osoba počítač detekuje, v tomto případě „Daniel“) rovná mému jménu. Poté, co je toto potvrzeno, je volána funkce openComp, která (jak bylo vysvětleno dříve) pohne motorem, spustí se po 5 sekundách a poté se zavře, čímž se motor posune v opačném směru a před pokračováním smyčky thicc provede určité vyčištění.

pokud intConfidence> 30 a id == 'Daniel':

openComp () closeComp ()

Chyba, kterou jsem zde našel, je, že někdy po návratu closeComp kód pokračuje, ale podmíněné prohlášení if je opět považováno za pravdivé, jako by četlo video kanál, který je stále ve vyrovnávací paměti. Ačkoli se to nestává pokaždé, ještě musím najít způsob, jak zajistit, aby se to nikdy nestalo, takže pokud má někdo nějaké nápady, dejte mi prosím vědět v komentářích.

Zde je celý skript na jednom místě (a těsně pod tímto je ke stažení):

importovat cv2

import numpy as np import os import time import RPi. GPIO as GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] for i in range (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Krok 10: Montáž Pi a připojení motoru

Montáž Pi a připojení motoru
Montáž Pi a připojení motoru
Montáž Pi a připojení motoru
Montáž Pi a připojení motoru
Montáž Pi a připojení motoru
Montáž Pi a připojení motoru

Montáž Raspberry Pi na rám byla poměrně jednoduchá. Navrhl jsem malý 90stupňový loket s jednou tváří s otvorem a druhou stranou zcela plochou. Po 3D tisku dva z nich mohou být připevněny šrouby k Raspberry Pi na jeho montážních otvorech (použil jsem dva otvory na každé straně kolíků GPIO).

Poté jsem použil super lepidlo na protilehlé plochy 3D tištěných loktů, abych nalepil Pi těsně nad zásuvku na rámu. Poté, co jsem nechal lepidlo zaschnout, jsem mohl jednoduše a pohodlně vyjmout nebo vyměnit Pi na místo pouhými dvěma šrouby. Níže mám propojený.stl pro loket.

Nyní jednoduše připojte ovladač motoru k PI pomocí připojení IN1, IN2, IN3, IN4 k GPIO 14, 15, 18, 23. Nakonec připojte 5v a zemnící piny na řídicí desce k 5v výstupnímu a uzemňovacímu kolíku Pi.

Zde je odkaz na Pi's Pinout pro referenci:

Krok 11: Montáž kamery

Montáž kamery
Montáž kamery
Montáž kamery
Montáž kamery
Montáž kamery
Montáž kamery

Montáž kamery byla o něco méně robustní než u Pi, ale metoda tuto práci zvládla. Po návrhu a vytištění tenkého paprsku se 2 otvory na každém konci jsem paprsek připevnil k Rasberry Pi jeho montážním otvorem. Poté už jen dalším šroubem připevněte kameru na opačný konec paprsku. Ta-da! Vypadá to pěkně létat.

Krok 12: Vytvoření a montáž mechanismu pro pohyb zásuvky

Vytvoření a montáž mechanismu pro pohyb zásuvky
Vytvoření a montáž mechanismu pro pohyb zásuvky
Vytvoření a montáž mechanismu pro pohyb zásuvky
Vytvoření a montáž mechanismu pro pohyb zásuvky
Vytvoření a montáž mechanismu pro pohyb zásuvky
Vytvoření a montáž mechanismu pro pohyb zásuvky

Tento krok byl snadný díky stále dobrotivým darům komunity tvůrců. Po rychlém hledání na Thingiverse se mi podařilo najít lineární pohon vytvořený společností TucksProjects (naleznete zde: https://www.thingiverse.com/thing:2987762). Nezbývalo než dát facku na SD kartu a nechat tiskárnu pracovat.

Nakonec jsem šel do Fusion 360 a upravil jsem ostruhu, protože hřídel mého motoru byla příliš velká na tu, kterou poskytl TucksProjects. Níže mám.stl. Poté, co byl tisk hotový, stačí jej sestavit tak, že umístíme ostruhu na hřídel motoru, poté připevníme strany motoru a skříně 2 šrouby (ujistěte se, že před uzavřením vložíte stojan mezi). Nakonec jsem musel odříznout palec ze stojanu, aby se vešel mezi zásuvku a rám.

Teď už zbývá jen připevnit mechanismus k rámu a zásuvce. "CO BUDEME DĚLAT?" ptáte se … ano, řekněte to se mnou: Super lepidlo. Jak je znázorněno na výše uvedených obrázcích, stačí mechanismus umístit na spodní část rámu a zatlačit nahoru proti kusu dřeva, po kterém se zásuvka zasune. Zde je životně důležité, abyste se pokusili dostat stojan/mechanismus co nejvíce rovnoběžně s rámem, aby při pohybu mechanismu tlačil zásuvku rovně a ne šikmo. Poté, co lepidlo zaschne, položte na okraj regálu ještě trochu lepidla, přesuňte zásuvku na místo a nechte ji zaschnout. Po dokončení máme robustní mechanismus, který zasune naši tajnou zásuvku dovnitř a ven.

Krok 13: Přidání lepenky za zrcadlo

Přidání lepenky za zrcadlo
Přidání lepenky za zrcadlo
Přidání lepenky za zrcadlo
Přidání lepenky za zrcadlo
Přidání lepenky za zrcadlo
Přidání lepenky za zrcadlo

Aby tento oboustranný film vypadal více zrcadlově, zjistil jsem, že dobře slouží našemu účelu, když je lepenka umístěna za sklo. Použitá lepenka je ta, která byla dodána s rámem, ale jakýkoli kus nařezaný na míru bude fungovat. To také zajišťuje, že žádné světlo z LED diody kamery, ovladače motoru nebo Pi na druhé straně zrcátka. Když je vše na svém místě, pomocí tužky označte, kde je kamera na kartonu. Poté pomocí žiletky ustřihněte obdélník, aby kamera mohla prokouknout, když je na svém místě.

Krok 14: Nasazení finálního dílu

Nasazení finálního dílu
Nasazení finálního dílu
Nasazení finálního dílu
Nasazení finálního dílu

Poslední věc, kterou musíte udělat, je nasadit přední část zásuvky, která byla dříve odložena. Posuňte motor tak, aby zásuvka vyčnívala. Poté přilepte přední část tak, aby byl díl zásuvky vycentrován (na všech stranách by měl být malý závěs. Poté jej můžete zavěsit na zeď.

Krok 15: Finále

Finále
Finále
Finále
Finále

Tady to máš! Existuje několik vylepšení, která lze provést, například přidání tlačítka, nákup lepšího obousměrného filmu a oprava této chyby v kódu, ale celkově je práce hotová: vypadá jako zrcadlo, rozpoznává předem určené obličej uživatele a otevře se ten roztomilý malý šuplík. Jako vždy bych rád slyšel vaše myšlenky, otázky a vzpomínky v níže uvedených komentářích.

Celkové hodnocení: 10/10

Komentáře: #CouldNotTryAgain … pokud bych se nemohl řídit tímto návodem;)

Tajná kompartmentová výzva
Tajná kompartmentová výzva
Tajná kompartmentová výzva
Tajná kompartmentová výzva

Velká cena v soutěži Secret Compartment Challenge

Doporučuje: