Sadržaj:

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

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

Video: Ogledalo za prepoznavanje lica s tajnim pretincem: 15 koraka (sa slikama)
Video: КИТАЙЦЫ, ЧТО ВЫ ТВОРИТЕ??? 35 СУПЕР ТОВАРОВ ДЛЯ АВТОМОБИЛЯ С ALIEXPRESS 2024, Srpanj
Anonim
Ogledalo za prepoznavanje lica s tajnim pretincem
Ogledalo za prepoznavanje lica s tajnim pretincem
Ogledalo za prepoznavanje lica s tajnim pretincem
Ogledalo za prepoznavanje lica s tajnim pretincem
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 u tajnim odjeljcima, odlučio sam 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 trgovine 8. razreda, možemo stvoriti ovaj šiljati uređaj za skrivanje objekata na vidnom mjestu kojima će pristup imati samo pravi korisnik.

Posebno bih se zahvalio ovim ljudima/platformama od kojih sam dobio i svoje podatke i izvore:

TeCoEd - Youtube kanal

Emmet iz PiMyLifeUpa

MJRoBot na Hackster.io (profil)

Gaven MacDonald - Youtube kanal

Tucker Shannon na Thingiverseu (profil)

Pribor

Pribor za okvir:

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

Potrošni materijal za prepoznavanje lica:

  • Raspberry Pi (koristio sam Pi 3 B+, ali postoje i druge mogućnosti)
  • Modul kamere
  • Koračni motor

Alati:

  • Stolna pila
  • Jig Saw
  • Brusni papirDrvo
  • Ljepljiva traka
  • Mjera
  • Škare
  • Bočica s raspršivačem
  • 3D pisač
  • 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 trgovini rabljenom robom. 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 prozirno staklo. Budući da se koristi moj okvir, mjere za okvir kutije mogu varirati.

  • Postavite okvir u portretno usmjerenje. 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 stolnom pilom 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 ladicu
Rezovi za ladicu
Rezovi za ladicu
Rezovi za ladicu
Rezovi za ladicu
Rezovi za ladicu
Rezovi za ladicu
Rezovi za ladicu

Sada ćemo početi graditi ladicu (tzv. Tajni odjeljak).

  • Izrežite dvije stranice 4”x 1”, 3 ⅜”x 1” (stražnji rub), 4 ¼”x 1 ¼” (prednji rub) i 4”x 3 ⅜” (platforma).
  • Zalijepite prvu stranu 4”x 1” uz 4”stranu platforme. Stavio sam nekoliko presavijenih papira ispod stranice platforme tako da je malo podignuta, na ovaj način ne bi vukla rupu koju sam izrezala 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 prednji rub. To će biti posljednja stvar zalijepljena na ladicu.
  • Kad završite, provjerite da li se uklapa u rupu koju ste ubodom izrezali u LSM dasku. Ako nije, izbrusite rupu sve dok ladica ne klizi lagano unutra i van, te nema povlačenja.

Korak 3: Sastavljanje okvira

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

Kad su svi dijelovi gotovi, 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 rub dodiruje unutrašnjost LSM daske koja je upravo zalijepljena. (Pomoću ravnala provjerite je li zalijepljeno ravno). Ostavite da se suši 30 minuta.
  • Uzmite drugu stranu LSM -a 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 gornji rub. Budući da imate dva LSM -a na obje strane, ovisno o tome koliko ste ih ravno pričvrstili, možda ćete morati brusiti strane SSM -a prema dolje kako biste bili sigurni da pristaje (moje rezanje ponekad je isključeno). Ostavite da se suši 30 minuta.
  • Izmjerite mali prostor između dna ladice i okvira. Ovom mjerom izrežite komad MDF drva za 4 ". Ovaj komad želite približiti ladici, ali ga ne dodirujete. Namijenjen je za podupiranje ladice s minimalnim trenjem.
  • Kad sve završi, 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 domu. Oni skuplji dobit će 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 sa svake strane stakla bude najmanje ½”viška.
  • 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 se i palcem izravnajte 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č TeCoEd -a koji je prošao kroz proces instaliranja Stretch -a na SD karticu (uz prilično lijep uvod). Evo veze do tog vodiča:

U biti, sve što trebate učiniti je:

  • Formatirajte SD karticu odabirom vašeg Drive >> Drive Tools >> Format. Preuzmite ZIP datoteku za Raspian Stretch (ovdje se nalazi:
  • Prebacite sliku OS -a na SD karticu. TeCoEd je upotrijebio Win32 Disk Imager da to dovrši. Na kraju sam instalirao balenaEtcher što se činilo malo jednostavnijim. (Evo veze za preuzimanje za balenaEtcher:
  • Jednom u balenaEtcheru odaberite "Flash from File" i odaberite prethodno preuzetu ZIP datoteku. Zatim odaberite željenu SD karticu (ako se ne odabere automatski). Zatim pritisnite gumb sočne bljeskalice i pričekajte da se dogodi čarolija.

Nakon instaliranja na SD karticu možete je umetnuti u Raspberry Pi i proći kroz opći postupak 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čunalnim 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 učinio 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 izravno 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 stranici Hackster.io 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 zaslonu. 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 (ispada da bi bilo dobro pročitati priložene upute … mmm nah). Stoga nakon povezivanja fotoaparata na odgovarajući priključak slijedite ove korake:

  • Otvorite naredbeni terminal i upišite sudo raspi-config
  • Odaberite "Omogući kameru" (to se može pronaći pod opcijom uređaja)
  • Pritisnite "Enter"
  • Idite na "Završi" i od vas će se zatražiti da ponovno pokrenete sustav

Zatim slijedite ove korake:

  • Idite na glavni izbornik maline (gore lijevo)
  • Postavke
  • Konfiguracija Raspberry Pi
  • Sučelja
  • Zatim u kameri odaberite "Omogućeno"
  • Onda 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) # Okrenuti 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' za prekid prekida 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 njihovu obuku, a 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 vrlo je jednostavno učinio sve ovo pa preporučujem da slijedite ove upute kako biste izbjegli glavobolju.

Otvorite naredbeni redak i napravite novi direktorij nazvavši ga nešto zabavno (nazvao sam svoj FaceRec)

mkdir FaceRec

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

cd FaceRec

mkdir skup podataka

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

mkdir trener

Sada možete pokrenuti i slijediti upute prve skripte koja će snimiti slike korisnika. (Samo upozorenje, svakako 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 …") # Pokretanje pojedinačnog uzorkovanja lica 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 # Spremite snimljenu sliku u mapu 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 za čišćenje") cam.release () cv2.destroyAllWindows ()

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

pip install jastuk

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

import cv2import numpy kao np iz PIL -a import Image import os # Put 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)) # Spremite model u trainer/trainer.yml Reconizer.write ('trainer/trainer.yml') # Reconizer.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 ovom skupu skripti je to što se u sustav može unijeti više lica što znači da više pojedinaca može pristupiti unutrašnjosti zrcala 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 je skripti dodan dodatni kôd kako bi motorički proces postao funkcionalan pa ću te dijelove objasniti malo temeljitije. Podijelit ću ga na odjeljke, ali stavit ću cijelu skriptu na kraj koraka ako to želite.

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

uvoz numpy kao np

import os vrijeme uvoza uvoz RPi. GPIO kao GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM)

Ovaj sljedeći popis 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. Ovdje još imam neki kôd za puštanje ladice pritiskom na gumb, ali umjesto toga odlučio sam koristiti mjerač vremena.

GPIO.setup (ControlPin , GPIO. OUT)

GPIO.izlaz (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 pogleda kako dublje proučava ne samo kôd već i stvarni motor (nalazi se ovdje: https://www.youtube.com/embed/Dc16mKFA7Fo). U biti, svaki će niz biti ponovljen korištenjem ugniježđenih for-petlji u nadolazećim funkcijama openComp i closeComp. Ako pomno pogledate, seq2 je upravo suprotna od seq1. Da, pogađate. Jedan je za pomicanje motora naprijed, a drugi za vožnju unatrag.

seq1 =

seq2 =

Počevši s našom funkcijom openComp stvaramo for-loop koji će ponavljati 1024 puta. Prema MacDonald’sovom videu 512 iteracije osigurale bi potpunu rotaciju motora i otkrio sam da su oko dvije rotacije dobre duljine, 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 niza 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 i 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 se vrijeme ovdje može podesiti ili možete omogućiti kodirani kod koji omogućuje korištenje tipke za prosljeđivanje skripte umjesto mjerača vremena.

za ja u rasponu (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; '' 'vrijeme.spavanje (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 rasponu (1024):

za polukorak u rasponu (8): za pin u rasponu (4): GPIO.izlaz (ControlPin [pin], seq2 [halfstep] [pin]) time.sleep (.001) print ("Odjeljak 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 nazive popisa tako da je moje ime 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. Napravio sam varijablu za pohranu povjerenja kao cijeli broj (intConfidence) prije nego što se varijabla pouzdanost pretvori u niz. Zatim pomoću if-naredbe provjeravam je li pouzdanost veća od 30 i je li id (koju osobu računalo otkriva, u ovom slučaju, "Daniel") jednaka mom imenu. Nakon što se to potvrdi, poziva se funkcija openComp koja (kao što je prethodno objašnjeno) pomiče motor, izbacuje se nakon 5 sekundi, a zatim nastavlja zatvaranjeComp koji pomiče motor u suprotnom smjeru i obavlja 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 nastavlja, ali se uvjetuje da je if-naredba ponovno točna 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 netko ima bilo kakvu ideju neka mi se javi u komentarima.

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

uvoz cv2

import numpy kao np import os vrijeme uvoza import 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 stupnjeva s jednim licem s rupom, a s druge strane potpuno ravnim. Nakon 3D ispisa dva od njih mogu se pričvrstiti vijcima na Raspberry Pi na njegovim otvorima za montažu (koristio sam dvije rupe sa svake strane GPIO pinova).

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

Sada jednostavno spojite upravljački program motora na PI s IN1, IN2, IN3, IN4 povezivanjem na GPIO 14, 15, 18, 23 respektivno. Konačno, spojite pinove 5v i Uzemljenje na upravljačkoj ploči s 5v izlaznim i uzemljenim pinovima 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! Izgleda prilično muhasto.

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 dobronamjernim darovima zajednice proizvođača. Nakon kratkog pretraživanja na Thingiverseu uspio sam pronaći linearni aktuator koji je izradio TucksProjects (nalazi se ovdje: https://www.thingiverse.com/thing:2987762). Preostalo je samo da ga stavite na SD karticu i pustite pisač da odradi posao.

Na kraju sam ušao u Fusion 360 i uredio poticaj jer je osovina mog motora bila prevelika za onu koju su dali TucksProjects. U nastavku imam.stl za to. Nakon što je ispis završen, samo ga trebamo sastaviti postavljanjem ostruge na osovinu motora, zatim pričvršćivanjem strana motora i strana 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 je ostalo samo pričvrstiti mehanizam na okvir i ladicu. "ALI KAKO ĆEMO TIH?" 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 paralelnije s okvirom, tako da kad se mehanizam pomiče, gura ladicu ravno, a ne pod kutom. Nakon što se ljepilo osušilo, stavite još malo ljepila na rub stalka i pomaknite ladicu na mjesto te je 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 bi ovaj dvosmjerni film izgledao poput ogledala, otkrio sam da nam dobro služi stavljanjem kartona iza stakla. Korišteni karton je onaj koji je došao s okvirom, ali svaki komad izrezan po mjeri će raditi. Ovo također osigurava da nema svjetla od LED kamere, kontrolera motora ili Pi ne prikazuje s druge strane zrcala. Kad je sve na svom mjestu, olovkom označite gdje kamera stoji na kartonu. Zatim britvicom izrežite pravokutnik tako da kamera može proviriti kad je na mjestu.

Korak 14: Stavljanje posljednjeg komada

Stavljanje posljednjeg komada
Stavljanje posljednjeg komada
Stavljanje posljednjeg komada
Stavljanje posljednjeg komada

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 jednostavno objesiti na zid).

Korak 15: Finale

Finale
Finale
Finale
Finale

Evo ga! Postoji nekoliko poboljšanja koja se mogu napraviti, poput dodavanja tog gumba, kupnje boljeg dvosmjernog filma i ispravljanja te greške u kodu, ali sve u svemu, posao se obavi: 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 Tajni odjeljak
Izazov Tajni odjeljak
Izazov Tajni odjeljak
Izazov Tajni odjeljak

Velika nagrada u izazovu Secret Compartment Challenge

Preporučeni: