Агуулгын хүснэгт:

Нууц тасалгаатай нүүр таних толь: 15 алхам (зурагтай)
Нууц тасалгаатай нүүр таних толь: 15 алхам (зурагтай)

Видео: Нууц тасалгаатай нүүр таних толь: 15 алхам (зурагтай)

Видео: Нууц тасалгаатай нүүр таних толь: 15 алхам (зурагтай)
Видео: Гэртээ хэзээ ч хийж болохгүй 10 зүйл 😱 2024, Долдугаар сарын
Anonim
Нууц тасалгаатай нүүр таних толь
Нууц тасалгаатай нүүр таних толь
Нууц тасалгаатай нүүр таних толь
Нууц тасалгаатай нүүр таних толь
Нууц тасалгаатай нүүр таних толь
Нууц тасалгаатай нүүр таних толь

Өгүүллэг, кино гэх мэт зүйлд ашигладаг үргэлж бүтээлч нууц тасалгаанууд надад үргэлж сонирхолтой байдаг. Тиймээс, "Нууц тасалгаа" уралдааныг үзээд би энэ санааг өөрөө туршиж үзээд, зохих хүн нь харвал нууц хажуугийн шүүгээг нээдэг энгийн харагддаг толь хийхээр шийдлээ.

Raspberry Pi, python програмчлалын талаар бага зэрэг мэдлэгтэй, 8-р ангийн дэлгүүрийн ангиудыг ашигласнаар бид зөвхөн зөв хэрэглэгчийн хандах боломжтой объектуудыг нүдэнд нуухын тулд энэхүү гайхалтай төхөөрөмжийг бүтээж чадна.

Би өөрийн мэдээлэл, нөөцийг олж авсан эдгээр хүмүүст/платформд онцгой талархал илэрхийлье.

TeCoEd - Youtube суваг

PiMyLifeUp -ээс авсан Эммет

Hackster.io дээрх MJRoBot (профайл)

Гэвен Макдональд - Youtube суваг

Такер Шеннон Thingiverse дээр (профайл)

Хангамж

Хүрээний хангамж:

  • Модон банз (Энэхүү хавтангийн хэмжээ нь 42 "7.5" x 5/16 "байсан)
  • Харандаа зургийн жааз (шилтэй)
  • Шүршдэг будаг
  • Нэг талын цацруулагч наалдамхай
  • Шил цэвэрлэгч ба өөдөс
  • БСХС -ийн мод

Нүүр таних хэрэгсэл:

  • Raspberry Pi (би Pi 3 B+ ашигласан, гэхдээ өөр сонголтууд байдаг)
  • Камерын модуль
  • Stepper мотор

Хэрэгсэл:

  • Ширээний харсан
  • Жиг харсан
  • Модон зүлгүүр
  • GlueTape
  • Хэмжих
  • Хайч
  • Шүрших шил
  • 3D хэвлэгч
  • Супер цавуу

Алхам 1: Хайрцагны хүрээг таслах

Хайрцагны хүрээний хайчилбар
Хайрцагны хүрээний хайчилбар
Хайрцагны хүрээний хайчилбар
Хайрцагны хүрээний хайчилбар
Хайрцагны хүрээний хайчилбар
Хайрцагны хүрээний хайчилбар
Хайрцагны хүрээний хайчилбар
Хайрцагны хүрээний хайчилбар

Би зургийн жаазыг хуучин дэлгүүрээс худалдаж авсан. Зүгээр л нэг анхааруулга бол хүрээг бүрдүүлдэг банзны өргөн нь дор хаяж 1 1/2 инч байх ёстой. Ингэснээр та бусад модон хавтангуудыг түүн дээр ажиллахад хангалттай зайтай нааж болно. Мөн шилэн дотор байгаа эсэхийг шалгаарай. Хүрээ нь тунгалаг байна. Би санамсаргүй байдлаар царцсан хөл худалдаж аваад дараа нь тунгалаг шилэнд зориулж өөр хүрээ худалдаж авах шаардлагатай болсон. Миний хүрээг ашигласан тул хайрцгийн хүрээний хэмжээс өөр байж болно.

  • Хүрээг босоо чиглэлд байрлуул. Шилэн нүхний хажуугийн урт талыг (LS) дээд ба доод хэсэгт нэмэлт ½ инчээр хэмжинэ. (өөрөөр хэлбэл шилэн нүхний хэмжилтийн урт талд нэг инч нэмнэ. Үүнийг тэмдэглээд LSM (Урт талын хэмжилт) гэж бичнэ үү.
  • Үүний нэгэн адил нүхний дээд талыг хэмжиж, нэмэлт 1”нэмнэ. Үүнийг тэмдэглээд SSM (Богино талын хэмжилт) гэж бичнэ үү.
  • Самбараа аваад ширээний хөрөө ашиглан хоёр LSM x 2”, хоёр SSM x 2” хайчилж ав.
  • LSM зүсэлтүүдийн нэгийг аваад доороос 1 инч хэмжээтэй 2 "x1" тэгш өнцөгтийг хэмжиж, and "зүүн ба баруун талаас (3 -р зурагт үзүүлсэн шиг) хэмжинэ.
  • Тоглоом ашиглан нүхийг хайчилж ав. Дараа нь зүлгүүр ашиглан ирмэгийг нь зүлгээрэй.

Алхам 2: Шүүгээнд зориулсан хасалт

Шүүгээнд зориулсан хасалт
Шүүгээнд зориулсан хасалт
Шүүгээнд зориулсан хасалт
Шүүгээнд зориулсан хасалт
Шүүгээнд зориулсан хасалт
Шүүгээнд зориулсан хасалт
Шүүгээнд зориулсан хасалт
Шүүгээнд зориулсан хасалт

Одоо бид шургуулга (нууц тасалгаа) барьж эхэлнэ.

  • 4 "x 1" хэмжээтэй хоёр тал, 3 ⅜ "x 1" (арын ирмэг), 4 ¼ "x 1 ¼" (урд ирмэг), 4 "x 3 ⅜" (тавцан) хайчилж ав.
  • Тавцангийн 4 инчийн хажуугийн эхний 4 "x 1" талыг нааж болно. Би хоёр атираат цаасыг тавцангийн хажуу талд байрлуулсан тул бага зэрэг өргөж, ингэснээр 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 минутын турш хатаана.
  • Шүүгээний доод хэсэг ба хүрээ хоорондын жижиг зайг хэмжинэ. БСХС -ийн модны хэсгийг энэ хэмжээсээр 4 инчээр хайчилж ав. Та энэ хэсгийг шургуулганд ойрхон хийхийг хүсч байгаа боловч хүрэхгүй байна. Энэ нь шургуулгыг хамгийн бага үрэлтээр дэмжих зорилготой юм.
  • Бүх зүйл дууссаны дараа би бүх хэсгүүдийг хооронд нь тааруулахын тулд хүрээг будсан.

Алхам 4: Толин тусгал

Толины хувьд
Толины хувьд
Толины хувьд
Толины хувьд
Толины хувьд
Толины хувьд
Толины хувьд
Толины хувьд

Миний Amazon-оос худалдаж авсан нэг талын кино наалдамхай материал нь ойролцоогоор 10 доллар байв. Хэрэв та сонирхож байгаа бол арай өндөр үнэтэй илүү сайн чанарууд байдаг. Миний ашигладаг толин тусгалыг тусгасан боловч энэ нь таны гэрт харагддаг ердийн толь биш гэдгийг та хэлж чадна. Илүү үнэтэй нь танд ийм харагдах болно.

  • Шилийг хоёр талдаа шил цэвэрлэгчээр цэвэрлээрэй.
  • Нэг талын наалдамхай боолтыг буулгаад дээрээс нь шил тавина. Шилний тал бүр дээр дор хаяж ½”илүүдэл байхаар наалдамхай хэсгийг хайчилж ав.
  • Шилийг хажуу тийш нь тавиад нэг талыг нь усаар норгоно. Дараа нь нэг талын наалдамхай хуванцар дээлийг хальсалж, шинээр ил гарсан талыг усаар шүршинэ.
  • Шилний нойтон талыг цавууны нойтон талд байрлуулна. 30 минут байлгана.
  • Дээшээ эргүүлээд эрхий хуруугаараа наалдамхай болон шилний хооронд үүссэн бөмбөлгийг тэгшлээрэй. Дараа нь илүүдэл цавууг ирмэгээс нь хайчилж ав.

Алхам 5: Raspbian Stretch -ийг суулгана уу

Энэ бол миний Raspberry Pi орчинд анх удаа орж байгаа бөгөөд OS -ийг хэрхэн суулгах талаар заавар хайж эхэлсэн юм. Эцэст нь би Youtube дээр TeCoEd -ийн шууд зааварчилгааг олж, Stretch -ийг SD картанд суулгасан (нэлээд гоё танилцуулгатай). Энэ хичээлийн линк энд байна:

Үндсэндээ таны хийх ёстой зүйл бол:

  • Драйв >> Драйв хэрэгсэл >> Форматыг сонгож SD картыг форматлана уу. Raspian Stretch-ийн ZIP файлыг татаж авах (эндээс:
  • OS дүрсийг SD карт руу шилжүүлэх. Үүнийг дуусгахын тулд TeCoEd нь Win32 Disk Imager програмыг ашигласан. Би balenaEtcher -ийг суулгаснаар арай л ойлгомжтой болсон. (Энд balenaEtcher -ийг татаж авах линк байна:
  • BalenaEtcher -д орсны дараа "Файлаас Flash" -ийг сонгоод өмнө нь татаж авсан ZIP файлыг сонгоно уу. Дараа нь хүссэн SD картаа сонгоно уу (хэрэв автоматаар сонгоогүй бол). Дараа нь шүүслэг флаш товчлуур дээр дараад ид шидийг хүлээнэ үү.

SD картанд суулгасны дараа та үүнийг Raspberry Pi -д оруулж, Pi -ийн ерөнхий тохиргоог хийж болно.

Алхам 6: OpenCV суулгана уу

Одоо нүүр царай танихад илүү чиглэсэн хэсгүүдийн талаар. Нүүр царайг танихын тулд бид компьютерийн алсын хараатай ажиллах олон тооны хэрэгслийг агуулсан OpenCV номын санг татаж авах ёстой.

OpenCV -ийг суулгах нь миний хувьд програм хангамжийн хамгийн хэцүү хэсэг байсан. Гэхдээ олон тооны зааврыг дагаж мөрдсөний дараа би эцэст нь PiMyLifeUp-аас Emmet-ийн гарын авлагыг олсон бөгөөд энэ нь эндээс олдсон заль мэхийг хийсэн юм:

Би эдгээр алхмуудыг хийхгүй, учир нь та тэдгээрийг линкээс дагаж мөрдөх нь илүү тохиромжтой байх болно (өгсөн тайлбар, сайтаас шууд хялбархан хуулж буулгах чадвартай).

Алхам 7: Камерыг идэвхжүүлэх/турших

Камерыг идэвхжүүлэх/турших
Камерыг идэвхжүүлэх/турших
Камерыг идэвхжүүлэх/турших
Камерыг идэвхжүүлэх/турших

OpenCV-ийг суулгасны дараа миний үлдсэн аялал Hackster.io дээрх MJRoBot-ийн зааварчилгааг ашиглан дууссан:

Эхлэхээсээ өмнө би эдгээр скриптүүдийг бүтээгч биш боловч зарим хэсгийг нь өөрчилсөн гэдгийг танд сануулахыг хүсч байна.

Эхлэхийн тулд бид камерыг туршиж, дэлгэцэн дээр видео бичих боломжтой эсэхийг шалгаарай. Би MJRoBot -ийн 3 -р алхамд заасан скриптийг ажиллуулах гэж нэг цаг орчим зарцуулсан. Амьдралын хүссэнээр бид Raspberry Pi дээрх камерыг идэвхжүүлэх шаардлагатай байна (өгсөн зааврыг унших нь зүйтэй болов уу … ммм үгүй). Тиймээс камерыг зөв порт руу холбосны дараа дараах алхмуудыг дагана уу.

  • Командын терминалыг нээгээд sudo raspi-config гэж бичнэ үү
  • "Камерыг идэвхжүүлэх" -ийг сонгоно уу (үүнийг төхөөрөмжийн сонголтоос олж болно)
  • "Оруулах" дээр дарна уу
  • "Дуусгах" руу очоод дахин ачаалахыг танаас хүсэх болно

Дараа нь дараах алхмуудыг дагана уу.

  • Raspberry -ийн үндсэн цэс рүү оч (зүүн дээд талд)
  • Сонголтууд
  • Raspberry Pi -ийн тохиргоо
  • Интерфэйсүүд
  • Дараа нь Камераас "Идэвхжүүлсэн" -ийг сонгоно уу.
  • Дараа нь "OK"

Одоо та камерыг туршихын тулд MJRoBot-ийн хичээлээс энэ скриптийг амжилттай ажиллуулах боломжтой байх ёстой (энэ бүх код, илүү нарийвчилсан тайлбарыг MJRobot-ийн заавар дээрх линкээс олж болно гэдгийг санаарай):

np гэж numpy импортлох

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 (frame, -1) # Камерыг босоо байдлаар эргүүлэх саарал = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('саарал', саарал) k = cv2.waitKey (30) & 0xff if k == 27: # break cap -аас гарахын тулд 'ESC' товчийг дарна уу. Release () cv2.destroyAllWindows ()

Өмнөх код нь хоёр цонхыг харуулах ёстой бөгөөд нэг нь өнгө, нөгөө нь саарал өнгөтэй байна. Хэрэв та өдий зэрэгтэй явсан бол танд сайхан сэндвич хэрэгтэй гэж бодож байна.

Алхам 8: Өгөгдөл, сургалтын өгөгдлийг цуглуулах

Өгөгдөл цуглуулах, сургалтын мэдээлэл
Өгөгдөл цуглуулах, сургалтын мэдээлэл
Өгөгдөл цуглуулах, сургалтын мэдээлэл
Өгөгдөл цуглуулах, сургалтын мэдээлэл
Өгөгдөл цуглуулах, сургалтын мэдээлэл
Өгөгдөл цуглуулах, сургалтын мэдээлэл

Өгөгдсөн гарын авлагад зохиогч удахгүй өгөх кодын үйл явцын талаар илүү гүнзгийрүүлсэн болно, гэхдээ эдгээр толин тусгал хэрхэн хийгдсэн тухай заавар тул би түүх болон нарийн төвөгтэй механизмын талаар дэлгэрэнгүй ярихгүй. Гэсэн хэдий ч таны оюун ухаанд сайнаар нөлөөлж чадах эдгээр хоёр зүйлийн талаар нэг сарын турш уншихыг танд зөвлөж байна.

Энэ бүгдийг ажиллуулахаас өмнө ердөө гурван орчим скрипт ажиллуулах шаардлагатай байна. Эхнийх нь өгөгдөл цуглуулах, хоёрдугаарт үүнийг сургах, сүүлчийнх нь үнэндээ танихад зориулагдсан болно. Мэдээлэл цуглуулахын тулд нүүрний бодит зургийг авч, сургалтанд зориулж тодорхой газарт хадгалахыг шаарддаг. Энэ кодыг бүтээгч энэ бүхнийг хийхэд маш хялбар болгосон тул толгой өвдөхгүйн тулд эдгээр зааврыг дагаж мөрдөхийг зөвлөж байна.

Тушаалын мөрийг нээж, шинэ лавлах хийж, үүнийг хөгжилтэй гэж нэрлээрэй (би FaceRec гэж нэрлэдэг)

mkdir FaceRec

Одоо лавлахыг FaceRec болгон өөрчилж, дэд директорыг мэдээллийн сан гэж нэрлэхээ мартуузай

cd FaceRec

mkdir мэдээллийн сан

Бид үүнийг хийж байхдаа бусад дэд директорыг дасгалжуулагч болгох боломжтой

mkdir дасгалжуулагч

Одоо та гүйж, хэрэглэгчийн зургийг авах анхны скриптийн зааврыг дагаж болно. (Зүгээр л анхаарна уу, хэрэглэгчийн id -ийг 1, 2, 3 гэх мэтээр оруулахаа мартуузай.)

импорт cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # тогтоосон видео өргөн cam.set (4, 480) # видеоны өндрийг тохируулах face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # тус бүрт хүн, нэг тоон нүүрний id оруулна уу face_id = оролт ('\ n хэрэглэгчийн id төгсгөлийг оруулна уу ==>') хэвлэх ("\ 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. тэгш өнцөгт (img, (x, y), (x+w, y+h), (255, 0, 0), 2) тоолох + = 1 # Барьсан зургийг cv2.imwrite ("мэдээллийн сан/Хэрэглэгч." + Str (face_id) + '.' + Str (тоо) + ".jpg", саарал [y: y +h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # k == 27: break elif count> = 30 бол видеогоос гарахын тулд 'ESC' товчийг дарна уу.: # 30 нүүрний дээж аваад видео brea -г зогсоо k print ("\ n [INFO] Хөтөлбөрөөс гарч, эд зүйлсийг цэвэрлэх") cam.release () cv2.destroyAllWindows ()

Энэ үед та Pi дээр дэр суулгасан эсэхээ шалгаарай. Үгүй бол тушаалыг ажиллуулна уу:

pip дэр суулгах

Үүнийг дуусгасны дараа та сургалтын скриптийг (хоёр дахь скрипт) ажиллуулж болох бөгөөд энэ нь танд эцсийн скриптэд ашиглагдах.yaml файлыг өгөх болно

cv2import numpy -ийг PIL импортоос np болгон импортлох Зураг импорт хийх os # Path of path image database path = 'dataset' танигч = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); getImagesAndLabels (зам): зураг, шошго авахын тулд # функц: PIL_img = Image.open (imagePath).convert ('L') # үүнийг саарал өнгөтэй болгон хувиргах img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. хуваах (".") [1]) нүүр = detector.detectMultiScale (img_numpy) (x, y, w, h) нүүрний хувьд: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids хэвлэх ("\ n [INFO] Сургалтын нүүр царай. Хэдэн секунд болно. Хүлээгээрэй …") нүүр, ids = getImagesAndLabels (зам) танигч.трэйн (нүүр, np.array (ids)) # Загварыг сургагч/дасгалжуулагч болгон хадгалах. iml танигч ("\ n [INFO] {0} бэлтгэгдсэн нүүр царай. Хөтөлбөрөөс гарч байна". формат (len (np.unique (ids)))))

Энэхүү скриптүүдийн гайхалтай зүйл бол олон нүүрийг системд оруулах боломжтой бөгөөд хэрэв хүсвэл олон хүн толины дотор талд нэвтэрч болно.

Доороос надад Data Capture скрипт ба сургалтын скриптийг татаж авах боломжтой.

Алхам 9: Нүүр таних хугацаа

Нүүр таних хугацаа
Нүүр таних хугацаа
Нүүр таних хугацаа
Нүүр таних хугацаа

Эцэст нь бид таних скриптийг ажиллуулж болно. Мотор процессыг ажиллуулахын тулд энэ скриптэд илүү их код нэмж оруулсан тул би эдгээр хэсгүүдийг илүү нарийвчлан тайлбарлах болно. Би үүнийг хэсэг болгон хуваах болно, гэхдээ хэрэв таны хүссэн зүйл бол бүх скриптийг алхам бүрийн төгсгөлд оруулна.

Бид хэрэгтэй бүх модулиудыг импортолж, дараа нь GPIO горимыг GPIO. BCM болгож тохируулах болно

np гэж numpy импортлох

импортыг импортлох цагийг импортлох RPi. GPIO -ийг GPIO хэлбэрээр оруулах

ControlPin нэртэй энэхүү дараагийн жагсаалт нь манай stepper моторт ашиглагдах гаралтын тээглүүрүүдийг илэрхийлсэн тооны массив юм.

ControlPin = [14, 15, 18, 23]

For-loop нь эдгээр тээглүүрийг Гаралт гэж тохируулж дараа нь унтраасан эсэхийг шалгадаг. Шүүгээний товчлуурыг дарж хаах код надад байсаар байгаа боловч оронд нь таймер ашиглахаар шийдлээ.

GPIO. тохиргоо (ControlPin , GPIO. OUT)

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

Дараагийн хоёр хувьсагч нь моторыг жолоодох дараалал юм. Би энэ мэдээллийг Гэвен Макдональдын хийсэн гайхалтай видеоноос олж мэдсэн бөгөөд түүнийг зөвхөн код төдийгүй бодит моторыг гүнзгийрүүлэн судалж үзэхийг зөвлөж байна (эндээс: https://www.youtube.com/embed/Dc16mKFA7Fo). Үндсэндээ дараалал бүрийг удахгүй болох openComp болон closeComp функцуудад үүрлэсэн for-loops ашиглан давтах болно. Хэрэв та анхааралтай ажиглавал seq2 нь seq1 -ийн яг эсрэг тал юм. Тийм ээ, та таамаглаж байсан. Нэг нь хөдөлгүүрийг урагшлуулах, нөгөө нь урвуу чиглэлд зориулагдсан.

seq1 =

seq2 =

Манай openComp функцээс эхлэн 1024 удаа давтах давталтыг бий болгодог. MacDonald's 512 видео бичлэгээс үзэхэд давталт нь хөдөлгүүрийг бүрэн эргүүлэх боломжийг олгодог бөгөөд ойролцоогоор хоёр эргэлт нь сайн урттай болохыг олж мэдсэн боловч үүнийг хувь хүний хэмжээнээс хамаарч тохируулж болно. Дараагийн давталт нь seq1 ба seq2-ээс олдсон 8 массивыг тооцоолохын тулд 8 давталтаас бүрдэнэ. Эцэст нь хэлэхэд, сүүлчийн давталт нь эдгээр массив тус бүрээс олдсон дөрвөн зүйл болон бидний хөдөлгүүр холбогдсон 4 GPIO зүүг дөрвөн удаа давтана. Энд байгаа мөр нь GPIO зүүг сонгож, аль давталтыг асаахаас хамаарч асаах эсвэл унтраах болно. Дараагийн шугам нь хөдөлгүүрийг огт эргүүлэхгүйн тулд буфер хийх боломжийг олгодог. Хөдөлгүүр шургуулгыг эргүүлэхийн тулд эргүүлсний дараа 5 секундын турш унтдаг. Энэ хугацааг энд тохируулж болно, эсвэл таймер биш скриптээр дамжуулахын тулд товчлуур ашиглах боломжийг олгодог тайлбарласан кодыг идэвхжүүлж болно.

i -ийн хувьд (1024):

хагас алхамын хувьд (8): зайд (4): GPIO.output (ControlPin [pin], seq1 [halfstep] [pin]) time.sleep (.001) '' 'while True: if GPIO.input (2) == GPIO. LOW: завсарлага; '' 'цаг. Унтах (5)

CloseComp функц нь үүнтэй төстэй байдлаар ажилладаг. Мотор буцаж ирсний дараа би ямар ч энерги үрэхгүй байгаа эсэхийг шалгахын тулд сүүлчийн GPIO тээглүүрээ хамгийн бага болгож үргэлжлүүлээд дараа нь үргэлжлүүлэхийн өмнө гурван секундын хугацаа нэмж оруулна.

i -ийн хувьд (1024):

хагас алхамын хувьд (8): зайд (4): 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)

Дараагийн хэсгийн ихэнх хэсгийг камерыг тохируулж, нүүр таних ажлыг эхлүүлэхэд ашигладаг. Дахин хэлэхэд MKRoBot -ийн зааврууд хэсгүүдэд илүү их орсон боловч одоогоор би толинд ашигласан хэсгүүдийг л харуулж байна.

Эхлээд би жагсаалтын нэрийг өөрчилсөн бөгөөд ингэснээр миний нэр өгөгдөл цуглуулахдаа миний өгсөн индексэд багтсан болно (миний тохиолдолд 1). Тэгээд би өгөгдлийн санд нүүр царайгүй болсон тул үлдсэн утгуудыг None болгож тохируулав.

нэрс = ['Аль нь ч биш', 'Даниел', 'Аль нь ч биш', 'Аль нь ч биш', 'Аль нь ч биш', 'Аль нь ч биш]

Бидний сүүлийн хэдэн кодын мөрийг thicc for-loop дээр хэрэгжүүлдэг. Өөрчлөлтийг мөр болгон хувиргахаас өмнө итгэлийг бүхэл тоо (intConfidence) болгон хадгалахын тулд би хувьсагч үүсгэсэн. Дараа нь би if-мэдэгдэл ашиглан өөртөө итгэх итгэл 30-аас дээш байгаа эсэхийг шалгаж, id (энэ компьютерийг хэн илрүүлж байгааг, энэ тохиолдолд "Даниел") миний нэртэй тэнцэх эсэхийг шалгана. Үүнийг баталгаажуулсны дараа openComp функц гэж нэрлэгддэг бөгөөд энэ нь моторыг хөдөлгөж, 5 секундын дараа хөдөлгөж, дараа нь хөдөлгүүрийг эсрэг чиглэлд хөдөлгөж, thicc гогцоотой ажиллахаасаа өмнө цэвэрлэгээ хийдэг.

хэрэв intConfidence> 30 ба id == 'Daniel' бол:

openComp () closeComp ()

Эндээс олж мэдсэн алдаа бол заримдаа closeComp-ийг буцааж өгсний дараа код үргэлжлэх боловч буферт байгаа видео тэжээлийг уншиж байгаа мэт болзолт if-мэдэгдэл дахин үнэн болох нь тогтоогджээ. Хэдийгээр энэ нь хэзээ ч тохиолдохгүй байх арга замыг олж хараагүй ч гэсэн ийм зүйл тохиолддоггүй, тиймээс хэрэв хэн нэгэн ямар нэгэн санаа байвал коммент хэсэгт надад хэлээрэй.

Энэ бүх скриптийг нэг дороос (эндээс доор татаж авах боломжтой):

cv2 импортлох

np гэж импортлох импорт хийх импорт хийх цаг импортлох цаг RPi. GPIO -г GPIO хэлбэрээр оруулах GPO. тохируулга (Худал) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] i (4) мужид: GPIO.setup (ControlPin , GPIO. OUT) GPIO.output (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Алхам 10: Пи -ийг суурилуулах, моторыг холбох

Пи -ийг суурилуулах, моторыг холбох
Пи -ийг суурилуулах, моторыг холбох
Пи -ийг суурилуулах, моторыг холбох
Пи -ийг суурилуулах, моторыг холбох
Пи -ийг суурилуулах, моторыг холбох
Пи -ийг суурилуулах, моторыг холбох

Raspberry Pi -ийг хүрээ рүү холбох нь маш энгийн зүйл байв. Би 90 градусын жижиг тохой зохион бүтээсэн бөгөөд нэг нүүр нь нүхтэй, нөгөө тал нь бүрэн хавтгай байв. 3D хэвлэсний дараа тэдгээрийн хоёрыг нь Raspberry Pi -д бэхлэх нүхэнд боолтоор холбож болно (би GPIO тээглүүрийн хоёр тал дээрх хоёр нүхийг ашигласан).

Дараа нь би 3D хэвлэсэн тохойн эсрэг талын супер цавуу ашиглан хүрээ дээрх шургуулганы дээгүүр Пи -ийг нааж эхлэв. Цавууг хуурай байлгасны дараа би Pi -г зүгээр л хоёр боолтоор хялбархан сольж, сольж чадсан. Надад доорх тохойнд зориулсан.stl байна.

Хөдөлгүүрийн драйверийг GPIO 14, 15, 18, 23 -тэй холбосон IN1, IN2, IN3, IN4 -ээр PI руу холбоно уу. Эцэст нь хянагчийн тавцангийн 5v ба газардуулгын зүүг 5в гаралт ба Pi -ийн газардуулгатай холбоно уу.

Эндээс лавлахын тулд Pi's Pinout -ийн линкийг энд оруулав:

Алхам 11: Камер суурилуулах

Камер суурилуулах
Камер суурилуулах
Камер суурилуулах
Камер суурилуулах
Камер суурилуулах
Камер суурилуулах

Камерыг суурилуулах нь Пи -ээс арай бага хүч чадалтай байсан боловч арга нь ажлыг гүйцэтгэсэн. Төгсгөлд нь 2 нүхтэй нимгэн туяа зохион бүтээж, хэвлэсний дараа би цацрагийг Rasberry Pi -д бэхлэх нүхээр нь холбосон. Дараа нь камерыг өөр шураг ашиглан цацрагийн эсрэг талд холбоно уу. Та-да! Энэ үнэхээр хөөрхөн ялаа харагдаж байна.

Алхам 12: Шүүгээ-хөдлөх механизмыг бий болгох, суурилуулах

Шүүгээг хөдөлгөх-механизмыг бий болгох, суурилуулах
Шүүгээг хөдөлгөх-механизмыг бий болгох, суурилуулах
Шүүгээг хөдөлгөх-механизмыг бий болгох, суурилуулах
Шүүгээг хөдөлгөх-механизмыг бий болгох, суурилуулах
Шүүгээг хөдөлгөх-механизмыг бий болгох, суурилуулах
Шүүгээг хөдөлгөх-механизмыг бий болгох, суурилуулах

Энэхүү алхам нь үйлдвэрлэгчдийн олон нийтийн сайн санааны бэлгүүдийн ачаар хялбар болсон. Thingiverse дээр хурдан хайлт хийсний дараа би TucksProjects -ийн бүтээсэн шугаман идэвхжүүлэгчийг олж чадсан (эндээс: https://www.thingiverse.com/thing:2987762). Үүнийг SD карт руу алгадаж, принтерээс ажлыг нь хийлгэх л үлдлээ.

Би Fusion 360 руу орж, хөдөлгүүрийнхээ босоо ам нь TucksProjects -ийнхтэй харьцуулахад хэт том байсан тул түлхэцийг зассан. Надад доорх.stl байна. Хэвлэж дууссаны дараа бид хөдөлгүүрийг босоо аманд байрлуулж, дараа нь мотор ба хаалтын талыг 2 боолтоор бэхлэх замаар угсрах хэрэгтэй (өлгөхөөс өмнө тавиурыг хооронд нь байрлуулсан эсэхийг шалгаарай). Би шүүгээ болон жаазны хооронд таарч байхын тулд тавиураас нэг инч хайчилж авлаа.

Одоо механизм, хүрээ, шүүгээнд бэхлэх л үлдлээ. "Tia яаж хийх вэ?" Та асуугаарай … Тийм ээ, надтай хамт хэлээрэй: Super Glue. Дээрх зургуудад үзүүлсэн шиг механизмыг хүрээний доод талд байрлуулж, шургуулга гулсаж буй модон дээр дээш нь түлх. Та тавиур/механизмыг хүрээтэй аль болох зэрэгцүүлэн байрлуулахыг хичээх нь маш чухал бөгөөд ингэснээр механизм хөдөлж байх үед шүүгээг өнцгөөр биш шууд чиглүүлнэ. Цавуу хатсаны дараа тавиурын ирмэг дээр бага зэрэг цавуу тавиад шүүгээ байрлалд шилжүүлээд хатаана. Дууссаны дараа бид нууц шургуулгаа шургуулж, дотогшоо шургуулах бат бөх механизмтай болно.

Алхам 13: Толины ард картон нэмэх

Толины ард картон нэмэх
Толины ард картон нэмэх
Толины ард картон нэмэх
Толины ард картон нэмэх
Толины ард картон нэмэх
Толины ард картон нэмэх

Энэхүү хоёр талын киног толин тусгал шиг харагдуулахын тулд картоныг шилний ард байрлуулах нь бидний зорилгод нийцсэн болохыг олж мэдсэн. Ашигласан картон нь хүрээтэй хамт ирдэг боловч тааруулахаар хайчилж авсан хэсэг нь ажиллах болно. Энэ нь камерын LED, мотор хянагч, эсвэл толины нөгөө талд байрлах Pi -ээс гэрэл тусахгүй байхыг баталгаажуулдаг. Бүх зүйл байрандаа байвал харандаа ашиглан камер картон дээр хаана байрлаж байгааг тэмдэглээрэй. Дараа нь тонгорог ашиглан тэгш өнцөгт хайчилж ав, камер байрлаж байх үед нэвт харах боломжтой болно.

Алхам 14: Эцсийн хэсгийг өмсөх

Эцсийн хэсгийг өмсөх
Эцсийн хэсгийг өмсөх
Эцсийн хэсгийг өмсөх
Эцсийн хэсгийг өмсөх

Хамгийн сүүлд хийх зүйл бол өмнө нь тавьсан шүүгээний урд хэсгийг өмсөх явдал юм. Хөдөлгүүрийг хөдөлгөж, шургуулга гадагш гарах болно. Дараа нь шүүгээний хэсгийг төвд байрлуулахын тулд урд хэсгийг нь наа.

Алхам 15: Финал

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

Тэнд байна! Энэ товчлуурыг нэмэх, илүү сайн хоёр талын хальс худалдаж авах, кодын алдааг засах гэх мэт хэд хэдэн сайжруулалт хийх боломжтой боловч ерөнхийдөө энэ ажлыг гүйцэтгэдэг: энэ нь толь шиг харагдаж байна, энэ нь урьдчилан тодорхойлсон зүйлийг таньдаг. Хэрэглэгчийн царай, тэр хөөрхөн бяцхан шүүгээг нээнэ. Урьдын адил таны сэтгэгдэл, асуулт, дурсамжийг доорх сэтгэгдлээс сонсох дуртай.

Ерөнхий үнэлгээ: 10/10

Сэтгэгдэл: Хэрэв би энэ зааварчилгааг дагахгүй бол #Дахиж оролдохгүй байх болно;)

Нууц тасалгааны сорилт
Нууц тасалгааны сорилт
Нууц тасалгааны сорилт
Нууц тасалгааны сорилт

Нууц тасалгааны сорилтын гол шагнал

Зөвлөмж болгож буй: