Tartalomjegyzék:

Arcfelismerő tükör titkos rekesszel: 15 lépés (képekkel)
Arcfelismerő tükör titkos rekesszel: 15 lépés (képekkel)

Videó: Arcfelismerő tükör titkos rekesszel: 15 lépés (képekkel)

Videó: Arcfelismerő tükör titkos rekesszel: 15 lépés (képekkel)
Videó: Igy oldható fel a telefon ha elfelejted a kodot 2024, Július
Anonim
Arcfelismerő tükör titkos rekesszel
Arcfelismerő tükör titkos rekesszel
Arcfelismerő tükör titkos rekesszel
Arcfelismerő tükör titkos rekesszel
Arcfelismerő tükör titkos rekesszel
Arcfelismerő tükör titkos rekesszel

Mindig is érdekelt a történetekben, filmekben és hasonlókban használt, mindig kreatív titkos rekeszek. Tehát, amikor megláttam a Titkos Rekesz Versenyt, úgy döntöttem, hogy magam kísérletezek az ötlettel, és készítek egy közönséges kinézetű tükröt, amely kinyit egy titkos oldalsó fiókot, amikor a megfelelő személy belenéz.

A Raspberry Pi, a python programozás némi ismerete és a 8. osztályos bolti osztály használatával létrehozhatjuk ezt a csillogó eszközt, hogy elrejtsük azokat a tárgyakat, amelyekhez csak a megfelelő felhasználó férhet hozzá.

Szeretnék külön köszönetet mondani ezeknek az embereknek/platformoknak, ahonnan az információimat és erőforrásaimat is beszereztem:

TeCoEd - Youtube csatorna

Emmet a PiMyLifeUp -tól

MJRoBot a Hackster.io -n (profil)

Gaven MacDonald - Youtube csatorna

Tucker Shannon a Thingiverse -n (profil)

Kellékek

Keret kellékek:

  • Fa deszka (Ennek a táblának a mérete 42 "7,5" x 5/16 "volt)
  • Ceruza képkeret (üveggel)
  • Festékszóró
  • Egyirányú fényvisszaverő ragasztó
  • Üvegtisztító és rongy
  • MDF fa

Arcfelismerő kellékek:

  • Raspberry Pi (én a Pi 3 B+ -ot használtam, de vannak más lehetőségek is)
  • Kamera modul
  • Léptetőmotor

Eszközök:

  • Asztali fűrész
  • Lombfűrész
  • CsiszolópapírFa
  • GlueTape
  • Intézkedés
  • Olló
  • Spray palack
  • 3d nyomtató
  • Pillanatragasztó

1. lépés: Vágások a dobozkerethez

Vágások a dobozkerethez
Vágások a dobozkerethez
Vágások a dobozkerethez
Vágások a dobozkerethez
Vágások a dobozkerethez
Vágások a dobozkerethez
Vágások a dobozkerethez
Vágások a dobozkerethez

Vettem egy képkeretet a használtboltból. Figyelmeztetésként ügyeljen arra, hogy a keretet alkotó deszkák legalább 1 1/2 hüvelyk szélesek legyenek. Ez lehetővé teszi, hogy más falapokat is ragaszthasson rá, elegendő hellyel a munkához. Ellenőrizze, hogy az üveg a keret teljesen tiszta. Véletlenül vettem egy mattot, majd egy másik keretet kellett vásárolnom csak az átlátszó üveghez. Mivel a keretemet használják, a dobozkeret méretei változhatnak.

  • Helyezze a keretet álló helyzetbe. Mérje meg a kereten lévő üveglyukoldal hosszú oldalait (LS), további ½”-kal felül és alul. (azaz adjon hozzá egy hüvelyket az üveglyuk -mérés hosszú oldalához. Jegyezze fel ezt, és jelölje meg az LSM (Long Side Measurement) feliratot.
  • Hasonlóképpen mérje meg a lyuk felső oldalát, és adjon hozzá további 1”-et. Jegyezze fel ezt, és jelölje be az SSM (Short Side Measurement) feliratot.
  • Szerezd meg a táblát, és egy asztali fűrésszel vágj le két LSM x 2”és két SSM x 2” -ot.
  • Vegye ki az egyik LSM vágást, és mérjen meg egy 2”x1” téglalapot, amely alul 1 hüvelyk, balról és jobbról pedig ½”(lásd a 3. ábrát).
  • Használjon kirakós fűrészt a lyuk kivágásához. Ezután csiszolópapírral csiszolja le a széleket.

2. lépés: Vágások a fiókhoz

Vágások a fiókhoz
Vágások a fiókhoz
Vágások a fiókhoz
Vágások a fiókhoz
Vágások a fiókhoz
Vágások a fiókhoz
Vágások a fiókhoz
Vágások a fiókhoz

Most elkezdjük a fiók építését (más néven titkos rekesz).

  • Vágjon ki két 4 "x 1" oldalt, egy 3 "x 1" (hátsó él), egy 4 "x 1" (elülső él) és 4 "x 3" (platform) oldalt.
  • Ragassza az első 4 "x 1" oldalt a platform 4 "oldala mentén. Pár hajtogatott papírt tettem a platform oldala alá, így kissé felemelték, így nem húzódik a lyukon, amelyet kivágtam az LS deszkában. Állítsa száradni 30 percre.
  • Hasonlóképpen, ragassza fel a 3 ″ x 1 ″ -et a platform 3 ″ -os szélére. Állítsa száradni 30 percre. Ezután ragassza fel a második 4”x 1” oldalt az első ellenkező oldalára. Állítsa száradni 30 percre.
  • Egyelőre tegye félre az előlapot. Ez lesz az utolsó dolog, amit a fiókra ragasztottak.
  • Ha elkészült, ellenőrizze, hogy belefér -e az LSM deszkába kirakott lyukba. Ha nem, csiszolja a lyukat, amíg a fiók könnyen be- és ki nem csúszik, és nincs húzás.

3. lépés: A keret összerakása

A keret összerakása
A keret összerakása
A keret összerakása
A keret összerakása
A keret összerakása
A keret összerakása

Ha minden alkatrész kész, elkezdhetjük összeszerelni a keretet.

  • Ragassza fel az LSM deszkát az üvegfurattal középen, mindkét oldalon ½”-kal. Győződjön meg róla, hogy ½”távolságra van ragasztva a lyuktól (az 1. ábrán látható módon). Állítsa száradni 30 percre.
  • Ragassza fel az első SSM deszkát úgy, hogy a széle hozzáérjen az éppen ragasztott LSM deszka belsejéhez. (Vonalzóval ellenőrizze, hogy egyenesen van -e ragasztva). Állítsa száradni 30 percre.
  • Fogja meg az LSM másik oldalát, és ragasztja az elsőhöz hasonlóan. Győződjön meg arról, hogy ½”távolságra van a lyuktól, és hogy az imént rögzített SSM ragasztva van a deszka belső oldalára. Állítsa száradni 30 percre.
  • Ragassza fel az utolsó SSM -et a felső szélére. Mivel mindkét oldalán két LSM van, attól függően, hogy milyen egyenesen rögzítette őket, előfordulhat, hogy le kell csiszolni az SSM oldalait, hogy megbizonyosodjon arról, hogy illeszkedik -e (a vágásom néha ki van kapcsolva). Állítsa száradni 30 percre.
  • Mérje meg a kis helyet a fiók alja és a keret között. Vágjon le egy darab MDF fát ezzel a méréssel, 4 "-kal. Ezt a darabot a fiókhoz szeretné közelíteni, de ne érintse meg. Ez a fiók minimális súrlódással támogatja.
  • Ha minden kész, szórással festettem a keretet, hogy minden darab illeszkedjen.

4. lépés: A tükör számára

A Tükörért
A Tükörért
A Tükörért
A Tükörért
A Tükörért
A Tükörért
A Tükörért
A Tükörért

Az egyirányú fóliaragasztó, amelyet az Amazon-tól vettem, 10 dollár körül volt. Vannak jobb minőségűek, amelyek kicsit drágábbak, ha érdekel. Az általam használt tükröződik, de elmondhatod, hogy nem egy szokványos tükör, amelyet otthon látnál. A drágábbak megkapják ezt a megjelenést.

  • Tisztítsa meg az üveget mindkét oldalon üvegtisztítóval.
  • Tekerje ki az egyirányú ragasztót, és tegye rá az üveget. Vágja le a ragasztót úgy, hogy legalább ½”felesleg legyen az üveg mindkét oldalán.
  • Tegye félre az üveget, és nedvesítse meg az egyik oldalát vízzel. Ezután húzza le a műanyag bevonatot az egyirányú ragasztóról, és permetezze vízzel az újonnan kitett oldalt.
  • Helyezze az üveg nedves oldalát a ragasztó nedves oldalára. Hagyjuk ülni 30 percig.
  • Fordítsa meg, és hüvelykujjával simítsa el a buborékokat a ragasztó és az üveg között. Ezután vágja le a felesleges ragasztót a szélekről.

5. lépés: Telepítse a Raspbian Stretch programot

Ez volt az első alkalom, hogy elmélyedtem a Raspberry Pi környezetben, és elkezdtem utasításokat keresni az operációs rendszer telepítésére. Végül találtam egy egyszerű oktatóanyagot a Youtube -on a TeCoEd -től, amely végigjárta a Stretch SD -kártyára történő telepítésének folyamatát (meglehetősen szép bevezetővel). Itt található az oktatóanyag linkje:

Lényegében mindössze annyit kell tennie, hogy:

  • Formázza az SD -kártyát a Drive >> Drive Tools >> Format menüpont kiválasztásával. Töltse le a Raspian Stretch ZIP fájlját (itt található:
  • Villanja az operációs rendszer képét az SD -kártyára. A TeCoEd a Win32 Disk Imager programot használta ennek befejezéséhez. Végül telepítettem a balenaEtcher programot, ami egy kicsit egyszerűbbnek tűnt. (Itt a balenaEtcher letöltési linkje:
  • Miután belépett a balenaEtcher programba, válassza a „Flash from File” lehetőséget, majd válassza ki az előzőleg letöltött ZIP fájlt. Ezután válassza ki a kívánt SD -kártyát (ha nem választja ki automatikusan). Ezután nyomja meg a lédús vaku gombot, és várja meg, amíg a varázslat megtörténik.

Miután telepítette az SD -kártyára, behelyezheti azt a Raspberry Pi -be, és elvégezheti az általános Pi beállítási folyamatot.

6. lépés: Telepítse az OpenCV -t

Most térjünk át az arcfelismerés-orientáltabb részekre. Az arcok felismeréséhez le kell töltenünk az OpenCV könyvtárat, amely számos eszközt tartalmaz a számítógépes látással való munkavégzéshez.

Az OpenCV telepítése volt számomra a szoftver legnehezebb része. De miután számos utasítást követtem, végül megtaláltam Emmet oktatóanyagát a PiMyLifeUp-tól, amely megtette a trükköt, amely itt található:

Nem fogom végigjárni ezeket a lépéseket, mivel Ön jobban fogja követni őket a linkről (a megadott magyarázatokkal és azzal a képességgel, hogy könnyebben másolhat és beilleszthet közvetlenül a webhelyről).

7. lépés: Engedélyezze/tesztelje a kamerát

A kamera engedélyezése/tesztelése
A kamera engedélyezése/tesztelése
A kamera engedélyezése/tesztelése
A kamera engedélyezése/tesztelése

Az OpenCV telepítése után utam további része az MJRoBot oktatóanyagával fejeződött be a Hackster.io webhelyen, amely itt található:

Mielőtt hozzákezdenénk, szeretném emlékeztetni Önöket, hogy nem én vagyok a forgatókönyvek eredeti alkotója, de végül módosítottam egyes részeket.

Kezdésként teszteljük a kamerát, hogy megbizonyosodjunk arról, hogy videót tudunk rögzíteni a képernyőn. Körülbelül egy órát töltöttem az MJRoBot 3. lépésében megadott szkript futtatásával. Ahogy az élet adta, valójában engedélyeznünk kell a Raspberry Pi kameráját (kiderül, hogy jó ötlet lehet elolvasni a mellékelt utasításokat … mmm nah). Tehát miután csatlakoztatta a kamerát a megfelelő porthoz, kövesse az alábbi lépéseket:

  • Nyisson meg egy parancssort, és írja be a sudo raspi-config parancsot
  • Válassza a „Kamera engedélyezése” lehetőséget (ez egy eszköz opció alatt található)
  • Nyomja meg az „Enter” gombot
  • Lépjen a „Befejezés” pontra, és a rendszer felszólítja az újraindításra

Ezután kövesse az alábbi lépéseket:

  • Lépjen a Raspberry főmenüjébe (bal felső sarokban)
  • preferenciák
  • Raspberry Pi konfiguráció
  • Interfészek
  • Ezután a Fényképezőgépben válassza az „Engedélyezve” lehetőséget
  • Akkor jó"

Most sikeresen futtathatja ezt a szkriptet az MJRoBot oktatóanyagából, hogy tesztelje a kamerát (ne feledje, hogy mindez a kód és egy részletesebb leírás megtalálható az MJRobot oktatóanyagának fenti linkjén):

importálja a numpy -t np -ként

import cv2 cap = cv2. VideoCapture (0) cap.set (3, 640) # set Width cap.set (4, 480) # set Magasság míg (True): ret, frame = cap.read () frame = cv2. flip (keret, -1) # Flip kamera függőlegesen szürke = cv2.cvtColor (keret, cv2. COLOR_BGR2GRAY) cv2.imshow ('keret', keret) cv2.imshow ('szürke', szürke) k = cv2.waitKey (30) & 0xff, ha k == 27: # nyomja meg az "ESC" billentyűt, hogy kilépjen a töréskorlátból. Release () cv2.destroyAllWindows ()

Az előző kódnak két ablakot kell megjelenítenie, az egyik színes, a másik szürkeárnyalatos. Ha idáig eljutott, szerintem megérdemel egy szép szendvicset.

8. lépés: Adatok és képzési adatok gyűjtése

Adatok gyűjtése és képzési adatok
Adatok gyűjtése és képzési adatok
Adatok gyűjtése és képzési adatok
Adatok gyűjtése és képzési adatok
Adatok gyűjtése és képzési adatok
Adatok gyűjtése és képzési adatok

A mellékelt oktatóanyagban a szerző sokkal mélyebben foglalkozik a hamarosan megjelenő kód folyamatával, de mivel ezek az utasítások a tükör elkészítésére vonatkoznak, nem fogok elmélyülni a történelemben és a bonyolult mechanikában. Azt javaslom azonban, hogy töltsön el egy hónapot az életéből, és olvasson erről a két dologról, mivel ezek jól szolgálhatják az elmédet.

Még csak körülbelül három szkriptet kell futtatni, mielőtt mindezt működésbe hoznánk. Az első az adatok gyűjtésére, a második az oktatásra, az utolsó pedig az elismerésre szolgál. Az adatgyűjtéshez tényleges képeket kell készíteni az arcról, és azokat egy adott helyen kell tárolni az edzés során. A kód megalkotója nagyon egyszerűvé tette mindezt, ezért javaslom, hogy kövesse ezeket az utasításokat, hogy elkerülje a fejfájást.

Nyisson meg egy parancssort, és hozzon létre egy új könyvtárat, és nevezze el valami szórakoztatónak (az enyémet FaceRecnek hívtam)

mkdir FaceRec

Most változtassa meg a könyvtárat FaceRec -re, és készítsen egy alkönyvtárat, és nevezze el az adatkészletet

cd FaceRec

mkdir adatkészlet

Ha már itt tartunk, elkészíthetjük a másik alkönyvtárat is edzőnek

mkdir tréner

Most már futtathatja és követheti az első parancsfájl utasításait, amely a felhasználó képeit rögzíti. (Csak fejjel, feltétlenül adja meg a felhasználói azonosítót 1, 2, 3 stb.)

import cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # video szélesség beállítása cam.set (4, 480) # video magasság beállítása face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Mindegyikhez személy, adjon meg egy numerikus arcazonosítót face_id = input ('\ n adja meg a felhasználói azonosítót, nyomja meg ==>') print ("\ n [INFO] Az arcfelvétel inicializálása. Nézze meg a kamerát, és várjon…") # Egyéni mintavételi arcszámlálás inicializálása count = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip videó kép függőlegesen szürke = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) arcok = face_detector.detectMultiScale (szürke, 1.3, 5) (x, y, w, h) esetén: cv2.téglalap (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Mentse a rögzített képet a cv2.imwrite ("dataset/User." + Str (face_id) + '.' + Str (count) + ".jpg", szürke [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Nyomja meg az "ESC" gombot a kilépéshez, ha k == 27: break elif count> = 30: # Vegyen 30 arcmintát, és állítsa le a videót k print ("\ n [INFO] Kilépés a programból és a tisztítási dolgokból") cam.release () cv2.destroyAllWindows ()

Ezen a ponton győződjön meg arról, hogy párnát telepített a Pi -re. Ha nem, futtassa a parancsot:

pip szerelje párna

Miután ez befejeződött, futtathatja az oktatási szkriptet (második szkript), amely zökkenőmentesen biztosít egy.yaml fájlt, amelyet a végső szkriptben fognak használni

cv2import numpy importálása np -ként a PIL importálási képből # függvény a képek és a címkeadatok lekéréséhez def getImagesAndLabels (elérési út): imagePaths = [os.path.join (elérési út, f) az f -hez os.listdir (elérési út)] faceSamples = ids = az imagePath -hoz imagePaths: PIL_img = Image.open (imagePath).convert ('L') # konvertálja szürkeárnyalatosra img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. osztott (".") [1]) arcok = detektor.detectMultiScale (img_numpy) (x, y, w, h) arcokhoz: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Képzési arcok. Néhány másodpercbe telik. Várjon…") arcok, ids = getImagesAndLabels (elérési út) felismerő.train (arcok, np.array (ids)) # Mentse el a modellt a trainer/trainer.yml fájlba. ("\ n [INFO] {0} képzett arcok. Kilépés a programból".format (len (np.unique (ids)))))

Az a jó ebben a szkriptkészletben, hogy több arc is bevihető a rendszerbe, vagyis több személy is hozzáférhet a tükör belsejéhez, ha kívánja.

Lent letölthető az adatrögzítő szkript és a képzési szkript.

9. lépés: Arcfelismerési idő

Arcfelismerési idő
Arcfelismerési idő
Arcfelismerési idő
Arcfelismerési idő

Végül futtathatjuk a felismerő szkriptet. További kódot adtak ehhez a szkripthez annak érdekében, hogy a motorfolyamat működőképes legyen, ezért kicsit részletesebben elmagyarázom ezeket a részeket. Részekre bontom, de az egész forgatókönyvet a lépés végére teszem, ha erre vágysz.

Kezdjük azzal, hogy importáljuk az összes szükséges modult, majd a GPIO módot GPIO. BCM -re állítjuk

importálja a numpy -t np -ként

import os import idő import RPi. GPIO mint GPIO GPIO.setwarnings (Hamis) GPIO.setmode (GPIO. BCM)

Ez a következő ControlPin nevű lista egy számtömb, amely a léptetőmotorunkhoz használt kimeneti csapokat jelöli.

ControlPin = [14, 15, 18, 23]

A for-loop ezeket a csapokat kimeneteknek állítja be, majd ellenőrzi, hogy ki vannak-e kapcsolva. Van még néhány kódom, amellyel egy gombnyomással zárhatom a fiókot, de úgy döntöttem, hogy inkább időzítőt használok.

GPIO.setup (ControlPin , GPIO. OUT)

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

A következő két változó olyan sorozat, amelyet a motor meghajtására használunk. Ezt az információt Gaven MacDonald csodálatos videójából tanultam, amelyet nagyon ajánlok megnézni, amikor nem csak a kódot, hanem a tényleges motort is mélyrehatóan találja (itt található: https://www.youtube.com/embed/Dc16mKFA7Fo). Lényegében minden szekvencia iterálásra kerül a beágyazott for-ciklusok használatával a közelgő openComp és closeComp függvényekben. Ha alaposan megnézi, a seq2 pont az ellenkezője a seq1 -nek. Igen, kitaláltad. Az egyik a motor előre mozgatására szolgál, a másik pedig a hátramenetre.

sor = 1

2. sor =

Az openComp függvénytől kezdve létrehozunk egy for-loop-ot, amely 1024 alkalommal fog ismétlődni. A MacDonald videója szerint az 512 -es iterációk biztosítják a motor teljes forgását, és azt találtam, hogy körülbelül két fordulat jó hosszúságú, de ez beállítható az egyén méretétől függően. A következő for-loop 8 iterációból áll, hogy figyelembe vegye a seq1 és seq2 8 tömbjét. És végül, az utolsó for-hurok négyszer ismétlődik az egyes tömbökben található négy elemre, valamint a 4 GPIO-csapra, amelyekhez a motorunk csatlakoztatva van. Az itt található vonal kiválasztja a GPIO tűt, majd be- vagy kikapcsolja, attól függően, hogy melyik iteráció van bekapcsolva. Az utólagos sor bizonyos pufferidőt biztosít, nehogy a motorunk egyáltalán ne forogjon. Miután a motor forog, hogy kihúzza a fiókot, 5 másodpercig alszik, mielőtt továbblép. Ez az idő itt állítható be, vagy engedélyezheti a megjegyzett kódot, amely lehetővé teszi, hogy nyomógombot használjon a forgatókönyvvel való továbbításhoz, nem pedig időzítőt.

i tartományban (1024):

fél lépésnél a (8) tartományban: a (4) tartományban lévő érintkezőhöz: GPIO.output (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) '' 'while True: if GPIO.input (2) == GPIO. LOW: szünet; "" time.sleep (5)

A closeComp funkció hasonló módon működik. A motor visszalépése után beállítom az utolsó GPIO csapjainkat alacsonyra, hogy megbizonyosodjunk arról, hogy nem veszítünk energiát, majd további három másodpercet adok hozzá, mielőtt továbblépnék.

i tartományban (1024):

féllépéshez a (8) tartományban: a (4) tartománybeli érintkezőhöz: GPIO.output (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) print ("Compartment Closed") GPIO.output (ControlPin [0], 0) GPIO.output (ControlPin [3], 0) time.sleep (3)

A következő rész nagy részét a kamera beállítására és az arcfelismerés megkezdésére használják. Ismét az MKRoBot utasításai inkább az alkatrészekre vonatkoznak, de most csak a tükörhöz használt alkatrészeket mutatom be.

Először úgy módosítottam a listaneveket, hogy a nevem szerepeljen abban az indexben, amelyet az adatok gyűjtése során hozzárendeltem (az én esetemben 1). Ezután a többi értéket None értékre állítottam, mivel nem volt több arcom az adathalmazban.

names = ['Nincs', 'Daniel', 'Nincs', 'Nincs', 'Nincs', 'Nincs']

Utolsó néhány kódsorunkat a thicc for-loop hajtja végre. Létrehoztam egy változót a bizalom egész számként való tárolására (intConfidence), mielőtt a változó megbízhatóság karakterlánccá válik. Ezután egy if-utasítással ellenőrzem, hogy a megbízhatóság nagyobb-e 30-nál, és hogy az azonosító (melyik személyt észleli a számítógép, ebben az esetben „Daniel”) megegyezik a nevemmel. Ezt követően megerősítik az openComp függvényt, amely (az előzőekben leírtak szerint) mozgatja a motort, 5 másodperc múlva kilép, majd folytatja a closeComp funkciót, amely a motort az ellenkező irányba mozgatja, és elvégzi a tisztítást, mielőtt folytatná a thicc hurkot.

ha intConfidence> 30 és id == "Daniel":

openComp () closeComp ()

Egy hibát találtam itt, hogy néha a closeComp visszatérése után a kód folytatódik, de a feltételes if-utasítás ismét igaznak bizonyul, mintha a pufferben lévő videótáblázatot olvasná. Bár ez nem történik meg minden alkalommal, amikor még meg kell találnom a módját annak biztosítására, hogy soha ne történjen meg, ezért ha valakinek van ötlete, csak jelezze a megjegyzésekben.

Itt van az egész szkript egy helyen (és ez alatt letölthető):

import cv2

import numpy np -ként import os importálási idő import RPi. GPIO GPIO -ként GPIO.setwarnings (Hamis) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] az i tartományban (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

10. lépés: A Pi felszerelése és a motor csatlakoztatása

A Pi felszerelése és a motor csatlakoztatása
A Pi felszerelése és a motor csatlakoztatása
A Pi felszerelése és a motor csatlakoztatása
A Pi felszerelése és a motor csatlakoztatása
A Pi felszerelése és a motor csatlakoztatása
A Pi felszerelése és a motor csatlakoztatása

A Raspberry Pi felszerelése a keretre meglehetősen egyszerű volt. Kis 90 fokos könyököt terveztem, amelynek egyik oldala lyukas, másik oldala teljesen lapos. Ebből kettő 3D nyomtatás után csavarokkal rögzíthető a Raspberry Pi -hez a rögzítő lyukain (én a GPIO csapok két oldalán lévő két lyukat használtam).

Ezután szuper ragasztót használtam a 3D nyomtatott könyök ellentétes felületein a Pi felragasztásához közvetlenül a keret fölött. Miután hagytam megszáradni a ragasztót, egyszerűen és kényelmesen tudtam eltávolítani vagy visszahelyezni a Pi -t a két csavar segítségével. A könyök.stl -je lent van linkelve.

Most egyszerűen csatlakoztassa a motorvezérlőt a PI -hez az IN1, IN2, IN3, IN4 GPIO 14, 15, 18, 23 csatlakozásával. Végül csatlakoztassa a vezérlőkártya 5v -os és földelőcsapjait a Pi 5v -os kimenetéhez és földelőcsapjaihoz.

Itt van egy link a Pi Pinout -ra, némi hivatkozásként:

11. lépés: A kamera felszerelése

A kamera felszerelése
A kamera felszerelése
A kamera felszerelése
A kamera felszerelése
A kamera felszerelése
A kamera felszerelése

A kamera felszerelése valamivel kevésbé volt robusztus, mint a Pi, de a módszer elvégezte a munkát. Miután megterveztem és kinyomtattam egy vékony gerendát, mindkét végén 2 lyukkal, rögzített lyukon keresztül rögzítettem a gerendát a Rasberry Pi -hez. Ezután csak rögzítse a kamerát a gerenda másik végéhez egy másik csavarral. Ta-da! Szép légynek tűnik.

12. lépés: A fiókmozgató mechanizmus létrehozása és felszerelése

A fiókmozgató mechanizmus létrehozása és felszerelése
A fiókmozgató mechanizmus létrehozása és felszerelése
A fiókmozgató mechanizmus létrehozása és felszerelése
A fiókmozgató mechanizmus létrehozása és felszerelése
A fiókmozgató mechanizmus létrehozása és felszerelése
A fiókmozgató mechanizmus létrehozása és felszerelése

Ezt a lépést a készítő közösség mindig jóindulatú ajándékainak köszönhetően könnyítették meg. A Thingiverse gyors keresése után találtam egy lineáris működtetőt, amelyet a TucksProjects készített (itt található: https://www.thingiverse.com/thing:2987762). Nem maradt más hátra, mint lecsapni egy SD -kártyára, és hagyni, hogy a nyomtató elvégezze a munkát.

Végül a Fusion 360 -ba mentem, és szerkesztettem a sarkantyút, mivel a motor tengelye túl nagy volt a TucksProjects által biztosítotthoz. Az alábbiakban megvan a.stl. A nyomtatás után csak össze kell szerelnünk úgy, hogy a sarkantyút a motor tengelyére helyezzük, majd a motor és a burkolat oldalait 2 csavarral rögzítjük (ügyeljünk arra, hogy az állványt becsukjuk, mielőtt bezárjuk). Végül egy centimétert kellett levágnom az állványról, hogy beférjen a fiók és a keret közé.

Most már csak a mechanizmus rögzítése a kerethez és a fiókhoz. - HOGYAN HOGYAN KELL TESZNI? kérdezed … igen, mondd el velem: Super Glue. Amint a fenti képeken látható, csak helyezze a mechanizmust a keret aljához, és nyomja felfelé azt a fadarabot, amelyen a fiók csúszik. Létfontosságú, hogy az állványt/mechanizmust lehetőleg párhuzamba állítsa a kerettel, hogy a mechanizmus mozgatásakor a fiókot egyenesen, és ne ferdén tolja. Miután a ragasztó megszáradt, tegyen még néhány ragasztót az állvány szélére, és mozgassa a fiókot a helyére, és hagyja megszáradni. Miután elkészültünk, van egy erős mechanizmusunk a titkos fiókunk ki -be csúsztatásához.

13. lépés: Karton hozzáadása a tükör mögé

Karton hozzáadása a tükör mögé
Karton hozzáadása a tükör mögé
Karton hozzáadása a tükör mögé
Karton hozzáadása a tükör mögé
Karton hozzáadása a tükör mögé
Karton hozzáadása a tükör mögé

Annak érdekében, hogy ez a kétirányú fólia tükörszerűbb legyen, megállapítottam, hogy jól szolgálja a célunkat, ha kartonpapírt helyezünk az üveg mögé. A használt kartont a kerethez mellékelték, de bármelyik darab, amely illeszkedik, működik. Ez biztosítja azt is, hogy ne legyen fény a kamera LED -jéről, a motorvezérlőről vagy a tükör másik oldalán látható Pi -jelekről. Ha minden a helyén van, használjon ceruzát, hogy jelölje meg a kamera helyét a kartonon. Ezután borotvával vágjon egy téglalapot, hogy a fényképezőgép bekukkantson, amikor a helyén van.

14. lépés: A végső darab felhelyezése

A végső darab felrakása
A végső darab felrakása
A végső darab felrakása
A végső darab felrakása

Az utolsó dolog, amit fel kell tenni, a fiók elülső részét, amelyet korábban félretettek. Mozgassa a motort, hogy a fiók kilógjon. Ezután ragassza fel az elülső részt úgy, hogy a fiókdarab középre kerüljön (minden oldalon legyen egy kis lógás. Ezután egyszerűen felakaszthatja a falra.

15. lépés: Finale

Finálé
Finálé
Finálé
Finálé

Tessék, itt van! Számos fejlesztést lehet végrehajtani, például hozzáadni ezt a nyomógombot, vásárolni egy jobb kétirányú filmet, és kijavítani a hibát a kódban, de összességében elvégzi a munkát: úgy néz ki, mint egy tükör, felismeri az előre meghatározott felhasználó arca, és kinyitja azt az aranyos kis fiókot. Mint mindig, szívesen meghallgatnám gondolatait, kérdéseit és visszaemlékezéseit az alábbi megjegyzésekben.

Általános értékelés: 10/10

Megjegyzések: #nem próbálkoznék újra … hacsak nem követhetném ezt az utasítást;)

Titkos rekesz kihívás
Titkos rekesz kihívás
Titkos rekesz kihívás
Titkos rekesz kihívás

Főnyeremény a titkos rekesz kihívásban

Ajánlott: