Съдържание:

Огледало за разпознаване на лице със секретно отделение: 15 стъпки (със снимки)
Огледало за разпознаване на лице със секретно отделение: 15 стъпки (със снимки)

Видео: Огледало за разпознаване на лице със секретно отделение: 15 стъпки (със снимки)

Видео: Огледало за разпознаване на лице със секретно отделение: 15 стъпки (със снимки)
Видео: The Final Message He Shared with Me #audiobooks #audio #motivation 2024, Юли
Anonim
Огледало за разпознаване на лица със секретно отделение
Огледало за разпознаване на лица със секретно отделение
Огледало за разпознаване на лица със секретно отделение
Огледало за разпознаване на лица със секретно отделение
Огледало за разпознаване на лица със секретно отделение
Огледало за разпознаване на лица със секретно отделение

Винаги съм бил заинтригуван от вечно креативните тайни отделения, използвани в истории, филми и други подобни. И така, когато видях конкурса за тайни отделения, реших сам да експериментирам с идеята и да направя обикновено изглеждащо огледало, което отваря скрито странично чекмедже, когато подходящият човек го погледне.

Използвайки Raspberry Pi, известни познания по програмиране на python и клас на магазин от 8-ми клас, можем да създадем това надуто устройство, за да скрием обекти на видно място, до които само правилния потребител ще има достъп.

Бих искал да изкажа специална благодарност на тези хора/платформи, от които получих и моята информация и ресурси:

TeCoEd - Youtube канал

Емет от PiMyLifeUp

MJRoBot на Hackster.io (профил)

Gaven MacDonald - Youtube Channel

Тъкър Шанън на Thingiverse (профил)

Консумативи

Рамки:

  • Дървена дъска (Размерите на тази дъска бяха 42 "на 7.5" на 5/16 ")
  • Рамка за картини с молив (със стъкло)
  • Спрей боя
  • Еднопосочно отразяващо лепило
  • Препарат за почистване на стъкла и парцал
  • MDF дърво

Консумативи за разпознаване на лица:

  • Raspberry Pi (използвах Pi 3 B+, но има и други опции)
  • Модул за камера
  • Стъпков мотор

Инструменти:

  • Трион за маса
  • Джиг трион
  • Шкурка от дърво
  • GlueTape
  • Измерете
  • Ножици
  • Бутилка спрей
  • 3D принтер
  • Супер лепило

Стъпка 1: Разфасовки за рамката на кутията

Разфасовки за рамката на кутията
Разфасовки за рамката на кутията
Разфасовки за рамката на кутията
Разфасовки за рамката на кутията
Разфасовки за рамката на кутията
Разфасовки за рамката на кутията
Разфасовки за рамката на кутията
Разфасовки за рамката на кутията

Купих рамка за картина от втора употреба. Само предупреждение, уверете се, че дъските, които съставляват рамката, са широки поне 1 1/2 . Това е така, за да можете да залепите върху нея други дървени дъски с достатъчно място за работа. Също така се уверете, че стъклото в рамката е напълно ясна. Купих случайно матирано и след това трябваше да купя друга рамка само за прозрачното стъкло. Тъй като моята рамка се използва, измерванията за рамката на кутията могат да варират.

  • Поставете рамката в портретна ориентация. Измерете дългите страни (LS) на страната на стъкления отвор на рамката с допълнителни ½”както отгоре, така и отдолу. (т.е. добавете инч към дългата страна на измерването на стъклената дупка. Запишете това и маркирайте LSM (Long Side Measurement).
  • По същия начин измерете горната страна на отвора и добавете още 1”. Запишете това и маркирайте SSM (Short Side Measurement).
  • Вземете дъската си и с настолен трион изрежете два LSM x 2”и два SSM x 2”.
  • Вземете един от изрезите на LSM и измерете правоъгълник 2”x1”, който е 1”от дъното и ½” от лявата и дясната страна (както е показано на снимка 3).
  • Използвайте мозайката, за да изрежете дупката. След това използвайте шкурка, за да изрежете ръбовете.

Стъпка 2: Разфасовки за чекмеджето

Разфасовки за чекмеджето
Разфасовки за чекмеджето
Разфасовки за чекмеджето
Разфасовки за чекмеджето
Разфасовки за чекмеджето
Разфасовки за чекмеджето
Разфасовки за чекмеджето
Разфасовки за чекмеджето

Сега ще започнем да изграждаме чекмеджето (известен още като Тайно отделение).

  • Изрежете две страни с размери 4”x 1”, 3 ⅜”x 1” (заден ръб), 4 ¼”x 1 ¼” (преден ръб) и 4”x 3 ⅜” (платформа).
  • Залепете първата страна 4”x 1” по протежение на 4”страната на платформата. Поставих няколко сгънати хартии под страната на платформата, така че леко да се повдигне, по този начин няма да влачи дупката, която изрязах в дъската LS. Оставете да изсъхне за 30 минути.
  • По същия начин залепете 3 ⅜”x 1” по 3 ⅜”ръба на платформата. Оставете да изсъхне за 30 минути. След това залепете втората страна 4”x 1” на противоположната страна на първата. Оставете да изсъхне за 30 минути.
  • Отделете предния ръб засега. Това ще бъде последното нещо, залепено върху чекмеджето.
  • Когато приключите, проверете дали се вписва в отвора, който сте отрязали в дъската LSM. Ако не, изпепелете дупката, докато чекмеджето лесно се плъзне навътре и навън и няма плъзгане.

Стъпка 3: Сглобяване на рамката

Сглобяване на рамката
Сглобяване на рамката
Сглобяване на рамката
Сглобяване на рамката
Сглобяване на рамката
Сглобяване на рамката

След като всички части са завършени, можем да започнем да сглобяваме цялата рамка.

  • Залепете дъската LSM, центрирана със стъкления отвор с ½”от всяка страна. Уверете се, че е залепен с ½”от отвора (както е показано на снимка 1). Оставете да изсъхне за 30 минути.
  • Залепете първата SSM дъска с ръба, докосващ вътрешността на LSM дъската, която току -що беше залепена. (Използвайте линийка, за да се уверите, че е залепена направо). Оставете да изсъхне за 30 минути.
  • Вземете другата страна на LSM и залепете подобно на първата. Уверете се, че е ½”далеч от отвора и че току -що прикрепеният SSM е залепен от вътрешната страна на дъската. Оставете да изсъхне за 30 минути.
  • Залепете последния SSM на горния ръб. Тъй като имате две LSM от двете страни, в зависимост от това колко правилно сте ги прикрепили, може да се наложи да шлайфате страните на SSM надолу, за да се уверите, че приляга (моето рязане понякога е изключено). Оставете да изсъхне за 30 минути.
  • Измерете малкото пространство между дъното на чекмеджето и рамката. Изрежете парче MDF дърво с това измерване на 4 ". Искате да направите това парче близо до чекмеджето, но не го докосвайте. Предназначено е да поддържа чекмеджето с минимално триене.
  • Когато всичко приключи, боядисвам пръскането на рамката, така че всички парчета да съвпадат.

Стъпка 4: За огледалото

За огледалото
За огледалото
За огледалото
За огледалото
За огледалото
За огледалото
За огледалото
За огледалото

Еднопосочното филмово лепило, което купих от Amazon, беше около 10 долара. Има по -качествени, които са малко по -скъпи, ако се интересувате. Този, който използвам, отразява, но можете да кажете, че не е обикновено огледало, което бихте видели в дома. По -скъпите ще ви направят такъв вид.

  • Почистете стъклото с препарат за почистване на стъкло от двете страни.
  • Развийте еднопосочното лепило и поставете стъклото отгоре. Изрежете лепилото, така че да има поне ½”излишък от всяка страна на стъклото.
  • Оставете чашата настрана и намокрете едната й страна с вода. След това отлепете пластмасовото покритие от еднопосочното лепило и напръскайте новооткритата страна с вода.
  • Поставете мократа страна на стъклото върху мократа страна на лепилото. Оставете да престои 30 минути.
  • Обърнете се и използвайте палеца си, за да изравните всички мехурчета между лепилото и стъклото. След това изрежете излишното лепило от краищата.

Стъпка 5: Инсталирайте Raspbian Stretch

За първи път се задълбочих в средата на Raspberry Pi и започнах да търся инструкции как да инсталирам операционната система. В крайна сметка намерих ясен урок в Youtube от TeCoEd, който премина през процеса на инсталиране на Stretch на SD картата (с доста прекрасно въведение). Ето връзката към този урок:

По същество всичко, което трябва да направите, е:

  • Форматирайте SD картата, като изберете вашето устройство >> Инструменти за устройство >> Форматиране. Изтеглете ZIP файла за Raspian Stretch (намерен тук:
  • Мигайте изображението на операционната система на SD картата. TeCoEd използва Win32 Disk Imager, за да завърши това. В крайна сметка инсталирах balenaEtcher, което изглеждаше малко по -ясно. (Ето връзката за изтегляне на balenaEtcher:
  • Веднъж в balenaEtcher изберете „Flash From File“и изберете изтегления по -рано ZIP файл. След това изберете желаната SD карта (ако не е избрана автоматично). След това натиснете сочния бутон на светкавицата и изчакайте магията да се случи.

След като бъде инсталиран на SD картата, можете да го поставите в Raspberry Pi и да преминете през общия процес на настройка на Pi.

Стъпка 6: Инсталирайте OpenCV

Сега към частта, по-ориентирана към разпознаване на лица. За да разпознаваме лица, трябва да изтеглим библиотеката OpenCV, която съдържа огромен брой инструменти за работа с компютърно зрение.

Инсталирането на OpenCV беше най -трудната част от софтуерния аспект за мен. Но след като следвах многобройни инструкции, най-накрая намерих урок от Emmet от PiMyLifeUp, който направи трика, който се намира тук:

Няма да мина през тези стъпки, тъй като ще бъдете по -подходящи да ги следвате от връзката (с дадените обяснения и възможност за копиране и поставяне директно от сайта с по -голяма лекота).

Стъпка 7: Активирайте/тествайте камерата

Активиране/Тестване на камерата
Активиране/Тестване на камерата
Активиране/Тестване на камерата
Активиране/Тестване на камерата

След като инсталирах OpenCV, останалата част от пътуването ми беше завършена с помощта на урок от MJRoBot на Hackster.io, намерен тук:

Преди да започнем, бих искал да ви напомня, че не съм първоначалният създател на тези скриптове, но в крайна сметка промених части от тях.

За да започнем, трябва да тестваме камерата, за да сме сигурни, че можем да заснемем видео на екрана. Прекарах около час, опитвайки се да стартирам скрипта, предоставен в Стъпка 3 на MJRoBot. Както животът би искал, всъщност трябва да активираме камерата на Raspberry Pi (оказва се, че може да е добра идея да прочетете предоставените инструкции … ммм не). Така че след като свържете камерата към нейния правилен порт, следвайте тези стъпки:

  • Отворете команден терминал и въведете sudo raspi-config
  • Изберете „Активиране на камерата“(това може да се намери под опция за устройства)
  • Натиснете „Enter“
  • Отидете на „Край“и ще бъдете подканени да рестартирате

След това следвайте тези стъпки:

  • Отидете в главното меню на Raspberry (горе вляво)
  • Предпочитания
  • Конфигурация на Raspberry Pi
  • Интерфейси
  • След това в Камера изберете „Активирано“
  • Добре тогава"

Сега трябва да можете успешно да стартирате този скрипт от урока на MJRoBot, за да тествате камерата (не забравяйте, че целият този код плюс по-задълбочено описание се намира в предоставената връзка по-горе към урока на MJRobot):

внос numpy като 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. флип (кадър, -1) # Обърнете камерата вертикално сиво = cv2.cvt Цвят (рамка, cv2. COLOR_BGR2GREY) cv2.imshow ('рамка', рамка) cv2.imshow ('сиво', сиво) k = cv2.waitKey (30) & 0xff, ако k == 27: # натиснете „ESC“, за да излезете от прекъсването cap.release () cv2.destroyAllWindows ()

Предишният код трябва да показва два прозореца, един в цвят, а другият в сиви тонове. Ако сте стигнали дотук, мисля, че заслужавате хубав сандвич.

Стъпка 8: Събиране на данни и данни за обучение

Събиране на данни и данни за обучение
Събиране на данни и данни за обучение
Събиране на данни и данни за обучение
Събиране на данни и данни за обучение
Събиране на данни и данни за обучение
Събиране на данни и данни за обучение

В предоставения урок авторът навлиза много по -задълбочено в процесите на кода, който скоро ще бъде предоставен, но тъй като това са инструкции за това как е направено това огледало, няма да се задълбочавам в историята, нито в сложната механика. Препоръчвам ви обаче да отделите един месец от живота си за четене на тези две неща, тъй като те могат да служат добре на ума ви.

Има само още около три скрипта, които трябва да се изпълнят, преди да успеем всичко да работи. Първият е за събиране на данни, вторият е за обучение и последният всъщност е за разпознаване. Събирането на данни изисква действителните снимки на лицето да бъдат направени и съхранявани на определено място за обучение. Създателят на този код направи много лесно да свърши всичко това, затова препоръчвам да следвате тези инструкции, за да избегнете главоболие.

Отворете командния ред и направете нова директория, която я нарече нещо забавно (нарекох моя FaceRec)

mkdir FaceRec

Сега променете директорията на FaceRec и направете поддиректория, като не забравяте да я наречете набор от данни

cd FaceRec

набор от данни mkdir

Докато сме в него, можем да направим и другата поддиректория, наречена trainer

треньор mkdir

Сега можете да стартирате и да следвате указанията на първия скрипт, който ще заснеме снимки на потребител. (Само едно предупреждение, не забравяйте да въведете потребителския идентификатор като 1, 2, 3 и т.н.)

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') # За всеки човек, въведете един цифров идентификатор на лицето face_id = input ('\ n въведете потребителски идентификатор end press ==>') print ("\ n [INFO] Инициализиране на заснемането на лица. Погледнете камерата и изчакайте …") # Инициализирайте индивидуалния брой лица на извадката count = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # флип видео изображение вертикално сиво = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) лица = face_detector.detectMultiScale (сиво, 1.3, 5) за (x, y, w, h) в лица: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Запазете заснетото изображение в папката с набори от данни cv2.imwrite ("набор от данни/потребител." + Str (face_id) + '.' + Str (брой) + ".jpg", сиво [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Натиснете 'ESC' за излизане от видео, ако k == 27: прекъсване на elif> = 30: # Вземете проба от 30 лица и спрете видеопрекъсването k print ("\ n [INFO] Излизане от програмата и почистване") cam.release () cv2.destroyAllWindows ()

В този момент се уверете, че сте инсталирали възглавница на Pi. Ако не, изпълнете командата:

възглавница за инсталиране на пип

След като това приключи, можете да стартирате учебния скрипт (втори скрипт), който безпроблемно ще ви предостави.yaml файл, който ще се използва в крайния скрипт

импортиране на cv2import numpy като np от PIL импортиране на изображение за импортиране на os # Път за базата данни с изображение на пътя = 'набор от данни' разпознавач = cv2.face. LBPHFaceRecognizer_create () детектор = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # функция за получаване на изображения и данни за етикети def getImagesAndLabels (път): imagePaths = [os.path.join (пътека, f) за f в os.listdir (път)] faceSamples = ids = за imagePath в imagePaths: PIL_img = Image. разделяне (".") [1]) лица = детектор.detectMultiScale (img_numpy) за (x, y, w, h) в лица: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) връщане faceSamples, ids print ("\ n [INFO] Обучаващи лица. Ще отнеме няколко секунди. Изчакайте …") лица, ids = getImagesAndLabels (пътека) разпознаващ.train (лица, np.array (ids)) # Запазете модела в trainer/trainer.yml Reconizer.write ('trainer/trainer.yml') # Reconizer.save () работеше на Mac, но не и на Pi # Отпечатайте броя на обучените лица и отпечатайте крайната програма ("\ n [INFO] {0} лица са обучени. Излизане от програмата".format (len (np.unique (ids))))

Това, което е готино за този набор от скриптове, е, че в системата могат да бъдат въведени множество лица, което означава, че множество хора могат да имат достъп до вътрешностите на огледалото, ако желаете.

Долу имам скрипт за улавяне на данни и скрипт за обучение, наличен за изтегляне.

Стъпка 9: Време за разпознаване на лице

Време за разпознаване на лице
Време за разпознаване на лице
Време за разпознаване на лице
Време за разпознаване на лице

И накрая, можем да стартираме скрипта за разпознаване. Към този скрипт беше добавен още код, за да се направи двигателният процес функционален, така че ще обясня тези части малко по -подробно. Ще го разделя на раздели, но ще сложа целия скрипт в края на стъпката, ако това искате.

Ще започнем, като импортираме всички модули, от които се нуждаем, и след това задаваме GPIO режима на GPIO. BCM

внос numpy като np

импортиране os време за импортиране импортиране RPi. GPIO като GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM)

Този следващ списък с име ControlPin е масив от числа, който представлява изходни щифтове, които ще бъдат използвани за нашия стъпков двигател.

ControlPin = [14, 15, 18, 23]

For-loop задава тези изводи като изходи и след това се уверява, че са изключени. Все още имам някакъв код тук, за да оставя чекмеджето да се затвори с натискане на бутон, но реших вместо това да използвам таймер.

GPIO.setup (ControlPin , GPIO. OUT)

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

Следващите две променливи са последователности, които ще използваме за задвижване на двигателя. Научих тази информация от прекрасен видеоклип на Gaven MacDonald, който горещо препоръчвам да гледате, докато той задълбочава не само кода, но и действителния двигател (намерен тук: https://www.youtube.com/embed/Dc16mKFA7Fo). По същество всяка последователност ще бъде повторена чрез използване на вложените for-цикли в предстоящите функции openComp и closeComp. Ако се вгледате внимателно seq2 е точно обратното на seq1. Да, познахте. Единият е за преместване на двигателя напред, а другият за заден ход.

seq1 =

seq2 =

Започвайки с нашата функция openComp, ние създаваме цикъл за цикъл, който ще повтори 1024 пъти. Според видеоклипа 512 на MacDonald’s итерациите биха осигурили пълно завъртане на двигателя и открих, че около две завъртания са с добра дължина, но това може да се регулира в зависимост от размера на индивида. Следващият цикъл for се състои от 8 итерации, за да се отчетат 8-те масива, намерени в seq1 и seq2. И накрая, последният цикъл на цикъл се повтаря четири пъти за четирите елемента, които се намират във всеки от тези масиви, както и за 4-те GPIO щифта, към които моторът ни е свързан. Линията отдолу избира GPIO щифта и след това го включва или изключва в зависимост от това на коя итерация е включена. Редът след предоставя известно време за буфер, за да не се върти моторът ни изобщо. След като моторът се завърти, за да извади чекмеджето, той спи 5 секунди, преди да продължи. Това време може да се регулира тук или да активирате коментирания код, който позволява използването на бутон за пренасочване със скрипта, а не с таймер.

за i в обхват (1024):

за полустепен в обхват (8): за пин в обхват (4): GPIO.изход (ControlPin [пин], seq1 [полустепенен] [пин]) time.sleep (.001) '' 'докато True: ако GPIO.вход (2) == GPIO. LOW: break; '' 'time.sleep (5)

Функцията closeComp работи по подобен начин. След като двигателят се върне, продължавам да настройвам последните ни GPIO щифтове на ниско, за да се уверя, че не губим енергия и след това добавям още три секунди време, преди да продължа.

за i в обхват (1024):

за полустепен в обхват (8): за щифт в обхват (4): GPIO.изход (ControlPin [пин], seq2 [полуетап] [пин]) time.sleep (.001) печат ("Отделение затворено") GPIO.изход (ControlPin [0], 0) GPIO.изход (ControlPin [3], 0) time.sleep (3)

По -голямата част от следващата част се използва за настройка на камерата и започване на разпознаването на лица. Отново инструкциите на MKRoBot влизат в частите повече, но засега просто показвам частите, използвани за огледалото.

Първо промених имената на списъка, така че името ми да е в индекса, който му присвоих, докато събирам данните (в моя случай 1). И след това зададох останалите стойности на None, тъй като нямах повече лица в набора от данни.

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

Последните ни няколко реда код са реализирани в дебелия for-loop. Създадох променлива за съхраняване на доверието като цяло число (intConfidence), преди доверието на променливата да се превърне в низ. След това използвам if-израз, за да проверя дали доверието е по-голямо от 30 и дали id (кой човек компютърът открива, в този случай „Daniel“) е равен на моето име. След като това се потвърди, се извиква функцията openComp, която (както е обяснено по -горе) премества двигателя, изгасва след 5 секунди и след това пристъпва към затварянеComp, което премества двигателя в обратната посока и извършва известно почистване, преди да продължи с контура на дебелина.

ако intConfidence> 30 и id == 'Даниел':

openComp () closeComp ()

Грешка, която открих тук, е, че понякога след връщане на closeComp, кодът продължава, но условният if-израз се установява отново като истина, сякаш чете видео емисия, която все още е в буфера. Въпреки че това не се случва всеки път, когато все още не съм намерил начин да се уверя, че никога няма да се случи, така че ако някой има идеи, нека ми каже в коментарите.

Ето целия скрипт на едно място (и точно под това е за изтегляне):

импортиране на cv2

импортиране numpy като np импорт os време за импортиране импортиране RPi. GPIO като GPIO GPIO.setwarnings (False) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] за i в обхват (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.изход (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Стъпка 10: Монтиране на Pi и свързване на двигателя

Монтиране на Pi и свързване на двигателя
Монтиране на Pi и свързване на двигателя
Монтиране на Pi и свързване на двигателя
Монтиране на Pi и свързване на двигателя
Монтиране на Pi и свързване на двигателя
Монтиране на Pi и свързване на двигателя

Монтирането на Raspberry Pi към рамката беше доста просто. Проектирах малък 90-градусов лакът с едно лице с дупка, а другата страна е напълно плоска. След 3D отпечатване на два от тях те могат да бъдат прикрепени с винтове към Raspberry Pi върху монтажните му отвори (използвах двата отвора от всяка страна на щифтовете GPIO).

След това продължих да използвам супер лепило върху противоположните страни на 3D отпечатаните лакти, за да залепя Pi точно над чекмеджето на рамката. След като оставих лепилото да изсъхне, успях да извадя или заменя Pi на място просто и удобно само с двата винта. Имам.stl за лакътя, свързан по -долу.

Сега просто свържете драйвера на двигателя към PI с IN1, IN2, IN3, IN4 свързване съответно към GPIO 14, 15, 18, 23. И накрая, свържете 5v и заземяващите щифтове на платката на контролера към 5v изходния и земния щифт на Pi.

Ето връзка към Pin Pinout за справка:

Стъпка 11: Монтиране на камерата

Монтиране на камерата
Монтиране на камерата
Монтиране на камерата
Монтиране на камерата
Монтиране на камерата
Монтиране на камерата

Монтирането на камерата беше малко по -малко стабилно от Pi, но методът свърши работата. След проектирането и отпечатването на тънка греда с 2 отвора на всеки край, прикрепих гредата към Rasberry Pi през нейния монтажен отвор. След това просто прикрепете камерата към противоположния край на лъча с друг винт. Та-да! Изглежда доста муха.

Стъпка 12: Създаване и монтиране на чекмедже-преместващ механизъм

Създаване и монтиране на чекмедже-преместващ механизъм
Създаване и монтиране на чекмедже-преместващ механизъм
Създаване и монтиране на чекмедже-преместващ механизъм
Създаване и монтиране на чекмедже-преместващ механизъм
Създаване и монтиране на чекмедже-преместващ механизъм
Създаване и монтиране на чекмедже-преместващ механизъм

Тази стъпка беше улеснена благодарение на все доброжелателните подаръци на общността на производителите. След бързо търсене в Thingiverse успях да намеря линеен задвижващ механизъм, създаден от TucksProjects (намерен тук: https://www.thingiverse.com/thing:2987762). Оставаше само да го ударите на SD карта и да оставите принтера да свърши работата.

В крайна сметка отидох във Fusion 360 и редактирах шпората, тъй като валът на мотора ми беше твърде голям за този, предоставен от TucksProjects. Имам.stl за това по -долу. След като отпечатването е направено, просто трябва да го съберем, като поставим шпората върху вала на двигателя, след това като прикрепим страните на двигателя и корпуса с 2 винта (като се уверите, че сте поставили багажника между тях, преди да го затворите). В крайна сметка се наложи да отрежа сантиметър от багажника, така че да се побере между чекмеджето и рамката.

Сега остава само да прикрепите механизма към рамката и чекмеджето. „АМА КАКВО ЩЕ НАПРАВИМ? питаш … да, кажи с мен: Супер лепило. Както е показано на горните снимки, просто поставете механизма до дъното на рамката и го натиснете нагоре към парчето дърво, върху което се плъзга чекмеджето. Тук е жизненоважно да се опитате да поставите багажника/механизма възможно най -успоредно на рамката, така че когато механизмът се движи, той бута чекмеджето право, а не под ъгъл. След като лепилото изсъхне, поставете още малко лепило върху ръба на багажника и преместете чекмеджето на място и го оставете да изсъхне. След като приключим, имаме здрав механизъм за плъзгане на тайното ни чекмедже навътре и навън.

Стъпка 13: Добавяне на картон зад огледалото

Добавяне на картон зад огледалото
Добавяне на картон зад огледалото
Добавяне на картон зад огледалото
Добавяне на картон зад огледалото
Добавяне на картон зад огледалото
Добавяне на картон зад огледалото

За да направя този двупосочен филм да изглежда по-огледален, открих, че ни служи добре да поставим картон зад стъклото. Използваният картон е този, който идва с рамката, но всяко парче, изрязано, за да пасне, ще работи. Това също гарантира, че няма светлина от светодиода на камерата, контролера на двигателя или Pi показва от другата страна на огледалото. Когато всичко е на мястото си, използвайте молив, за да отбележите къде седи камерата върху картона. След това използвайте самобръсначка, за да изрежете правоъгълник, така че камерата да може да надникне, когато е на място.

Стъпка 14: Поставяне на последната част

Поставяне на последната част
Поставяне на последната част
Поставяне на последната част
Поставяне на последната част

Последното нещо, което трябва да направите, е да поставите предната част на чекмеджето, което беше отделено по -рано. Преместете мотора така, че чекмеджето да стърчи. След това залепете предната част, така че чекмеджето да е центрирано (трябва да има малко окачване от всички страни. След това можете просто да го закачите на стена.

Стъпка 15: Финал

Финал
Финал
Финал
Финал

Ето го! Могат да се направят няколко подобрения, като например добавяне на този бутон, закупуване на по-добър двупосочен филм и отстраняване на тази грешка в кода, но като цяло свършва работата: изглежда като огледало, разпознава предварително определеното лицето на потребителя и той отваря това сладко чекмедже. Както винаги бих искал да чуя вашите мисли, въпроси и спомени в коментарите по -долу.

Обща оценка: 10/10

Коментари: #Няма ли да се опитва отново … освен ако не мога да следвам тази инструкция;)

Предизвикателство за тайни отделения
Предизвикателство за тайни отделения
Предизвикателство за тайни отделения
Предизвикателство за тайни отделения

Голяма награда в предизвикателството за тайни отделения

Препоръчано: