Orodha ya maudhui:

Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri: Hatua 15 (na Picha)
Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri: Hatua 15 (na Picha)

Video: Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri: Hatua 15 (na Picha)

Video: Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri: Hatua 15 (na Picha)
Video: Ukiona dalili hizi 13 katika mwili wako nenda kapime UKIMWI. 2024, Novemba
Anonim
Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri
Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri
Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri
Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri
Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri
Kioo cha Utambuzi wa Usoni kilicho na Sehemu ya Siri

Siku zote nimevutiwa na sehemu za siri za ubunifu zinazotumiwa katika hadithi, sinema, na kadhalika. Kwa hivyo, nilipoona Mashindano ya Sehemu ya Siri niliamua kujaribu wazo mimi mwenyewe na kutengeneza kioo cha kawaida cha kutazama ambacho hufungua droo ya siri wakati mtu sahihi anaiangalia.

Kwa kutumia Raspberry Pi, ujuzi fulani wa programu ya chatu, na darasa la duka la darasa la 8, tunaweza kuunda kifaa hiki cha kuficha kuficha vitu kwa macho wazi kwamba ni mtumiaji sahihi tu ndiye atakayeweza kupata.

Ningependa kutoa shukrani maalum kwa hawa watu / majukwaa ambapo nilipata habari na rasilimali zangu pia:

TeCoEd - Kituo cha Youtube

Emmet kutoka PiMyLifeUp

MJRoBot kwenye Hackster.io (wasifu)

Gaven MacDonald - Kituo cha Youtube

Tucker Shannon kwenye Thingiverse (wasifu)

Vifaa

Vifaa vya Sura:

  • Wood Plank (Vipimo vya bodi hii vilikuwa 42 "na 7.5" na 5/16 ")
  • Picha ya Penseli (na glasi)
  • Rangi ya dawa
  • Njia moja ya Kuambatana na Kutafakari
  • Kisafishaji Kioo & Rag
  • Mbao ya MDF

Vifaa vya Utambuzi wa Usoni:

  • Raspberry Pi (nilitumia Pi 3 B + lakini kuna chaguzi zingine)
  • Moduli ya Kamera
  • Pikipiki ya Stepper

Zana:

  • Jedwali Saw
  • Jig Saw
  • SandpaperWood
  • Gundi mkanda
  • Pima
  • Mikasi
  • Chupa ya dawa
  • Printa ya 3D
  • Gundi Kubwa

Hatua ya 1: Kupunguzwa kwa Mfumo wa Sanduku

Kupunguzwa kwa Sanduku la Sanduku
Kupunguzwa kwa Sanduku la Sanduku
Kupunguzwa kwa Sanduku la Sanduku
Kupunguzwa kwa Sanduku la Sanduku
Kupunguzwa kwa Sanduku la Sanduku
Kupunguzwa kwa Sanduku la Sanduku
Kupunguzwa kwa Sanduku la Sanduku
Kupunguzwa kwa Sanduku la Sanduku

Nilinunua fremu ya picha kutoka duka la mitumba. Onyo tu, hakikisha kwamba mbao ambazo zinaunda fremu zina upana wa angalau 1 1/2 Hii ni kwa hivyo unaweza gundi bodi zingine za kuni juu yake na nafasi ya kutosha kufanya kazi nayo. Pia, hakikisha glasi fremu iko wazi kabisa. Nilinunua iliyohifadhiwa kwa bahati mbaya na ilibidi ninunue fremu nyingine tu kwa glasi iliyo wazi. Kwa sababu fremu yangu hutumiwa vipimo vya fremu ya sanduku vinaweza kutofautiana.

  • Weka sura katika mwelekeo wa picha. Pima pande ndefu (LS) za upande wa shimo la glasi kwenye fremu na nyongeza ½”juu na chini. (i.e. ongeza inchi kwa upande mrefu wa kipimo cha shimo la glasi. Rekodi hii na uweke LSM (Upimaji wa Upande Mrefu).
  • Vivyo hivyo, pima upande wa juu wa shimo na ongeza 1 ya ziada ". Rekodi hii na uweke lebo SSM (Upimaji wa Upande mfupi).
  • Chukua bodi yako na kwa msumeno wa meza, kata LSM mbili x 2”na SSM mbili x 2”.
  • Chukua moja ya kupunguzwa kwa LSM na upime mstatili 2 "x1" ambayo ni 1 "kutoka chini na ½" kutoka pande za kushoto na kulia (kama inavyoonyeshwa kwenye picha 3).
  • Tumia jigsaw kukata shimo. Kisha tumia sandpaper ili mchanga kando kando.

Hatua ya 2: Kupunguzwa kwa Droo

Kupunguzwa kwa Droo
Kupunguzwa kwa Droo
Kupunguzwa kwa Droo
Kupunguzwa kwa Droo
Kupunguzwa kwa Droo
Kupunguzwa kwa Droo
Kupunguzwa kwa Droo
Kupunguzwa kwa Droo

Sasa tutaanza kujenga droo (a.k.a Sehemu ya Siri).

  • Kata pande mbili 4 "x 1", 3 ⅜ "x 1" (makali ya nyuma), 4 ¼ "x 1 ¼" (makali ya mbele), na 4 "x 3 ⅜" (jukwaa).
  • Gundi upande wa kwanza wa 4 "x 1" kando ya upande wa 4 "wa jukwaa. Niliweka karatasi kadhaa zilizokunjwa chini ya upande wa jukwaa ili iweze kuinuliwa kidogo, kwa njia hii haingevuta kwenye shimo ambalo nilikata kwenye ubao wa LS. Weka kwa kavu kwa dakika 30.
  • Vivyo hivyo, gundi 3 ⅜ "x 1" kando ya 3 ⅜ "makali ya jukwaa. Weka kwa kavu kwa dakika 30. Kisha gundi upande wa pili 4 "x 1" upande wa pili wa kwanza. Weka kwa kavu kwa dakika 30.
  • Weka kando ya mbele kwa sasa. Itakuwa jambo la mwisho kushikamana kwenye droo.
  • Unapomaliza, angalia ikiwa inatoshea kwenye shimo ulilochonga kwenye ubao wa LSM. Ikiwa sio hivyo, mchanga mchanga hadi droo itateleza kwa urahisi na kutoka, na hakuna buruta.

Hatua ya 3: Kuweka Sura Pamoja

Kuweka Sura Pamoja
Kuweka Sura Pamoja
Kuweka Sura Pamoja
Kuweka Sura Pamoja
Kuweka Sura Pamoja
Kuweka Sura Pamoja

Pamoja na sehemu zote zimekamilika tunaweza kuanza kukusanya sura nzima.

  • Gundi ubao wa LSM unaozingatia shimo la glasi na ½”kila upande. Hakikisha imeunganishwa na ½”mbali na shimo (kama inavyoonekana kwenye picha 1). Weka kwa kavu kwa dakika 30.
  • Gundi ubao wa kwanza wa SSM na ukingo ukigusa ndani ya ubao wa LSM ambao ulikuwa umefungwa tu. (Tumia rula ili kuhakikisha kuwa imewekwa gundi moja kwa moja). Weka kwa kavu kwa dakika 30.
  • Chukua upande mwingine wa LSM na gundi sawa na ile ya kwanza. Hakikisha iko ½”mbali na shimo na kwamba SSM ambayo ilikuwa imeambatishwa tu imewekwa gundi ndani ya ubao. Weka kwa kavu kwa dakika 30.
  • Gundi SSM ya mwisho kwenye makali ya juu. Kwa kuwa una LSM mbili pande zote mbili, kulingana na jinsi ulivyoziunganisha moja kwa moja, unaweza kuhitaji kuweka mchanga pande za SSM chini ili kuhakikisha kuwa inafaa (kukata kwangu wakati mwingine huwa mbali). Weka kwa kavu kwa dakika 30.
  • Pima nafasi ndogo kati ya chini ya droo na fremu. Kata kipande cha kuni cha MDF na kipimo hiki, na 4 ". Unataka kukifanya kipande hiki karibu na droo lakini hakigusi. Inamaanisha kuunga mkono droo hiyo na msuguano mdogo.
  • Wakati yote yamekamilika, nilinyunyiza sura hiyo ili vipande vyote vilingane.

Hatua ya 4: Kwa Mirror

Kwa Kioo
Kwa Kioo
Kwa Kioo
Kwa Kioo
Kwa Kioo
Kwa Kioo
Kwa Kioo
Kwa Kioo

Kushikamana kwa njia moja ambayo nilinunua Amazon ilikuwa karibu $ 10. Kuna zile bora zaidi ambazo ni ghali kidogo ikiwa una nia. Ninayotumia inaonyesha lakini unaweza kusema sio kioo cha kawaida ambacho ungeona nyumbani. Ghali zaidi zitakupa muonekano huo.

  • Safisha glasi na kusafisha glasi pande zote mbili.
  • Tandaza wambiso wa njia moja na uweke glasi juu. Kata wambiso kwa hivyo kuna angalau ½”ziada kwa kila upande wa glasi.
  • Weka glasi kando na ulowishe upande mmoja na maji. Kisha toa kanzu ya plastiki kwenye wambiso wa njia moja na unyunyize maji upande ulio wazi.
  • Weka upande wa mvua wa glasi upande wa mvua wa wambiso. Wacha tuketi kwa dakika 30.
  • Pinduka na utumie kidole gumba chako ili kupuliza mapovu yoyote kati ya wambiso na glasi. Kisha kata wambiso wa ziada kutoka pande zote.

Hatua ya 5: Sakinisha Kunyoosha Raspbian

Hii ilikuwa mara yangu ya kwanza kutafakari mazingira ya Raspberry Pi nilianza kutafuta maagizo juu ya jinsi ya kupata OS iliyosanikishwa. Mwishowe nikapata mafunzo ya moja kwa moja kwenye Youtube na TeCoEd ambayo ilikwenda kupitia mchakato wa kunyoosha iliyowekwa kwenye kadi ya SD (na utangulizi mzuri pia). Hapa kuna kiunga cha mafunzo hayo:

Kwa asili, unachohitaji kufanya ni:

  • Umbiza kadi ya SD kwa kuchagua Hifadhi yako >> Zana za Hifadhi> Umbizo. Pakua faili ya ZIP kwa Raspian Stretch (iliyopatikana hapa:
  • Piga picha ya OS kwenye Kadi ya SD. TeCoEd ilitumia Win32 Disk Imager kukamilisha hii. Niliishia kufunga balenaEtcher ambayo ilionekana kuwa sawa zaidi. (Hapa kuna kiunga cha kupakua cha balenaEtcher:
  • Mara moja kwenye balenaEtcher chagua "Flash kutoka faili" na uchague faili ya ZIP iliyopakuliwa hapo awali. Ifuatayo, chagua kadi ya SD unayotaka (ikiwa haijachaguliwa kiatomati). Kisha gonga kitufe cha juisi na subiri uchawi ufanyike.

Mara tu ikiwa imewekwa kwenye kadi ya SD unaweza kuiingiza kwenye Raspberry Pi na kupitia mchakato wa usanidi wa kawaida wa Pi.

Hatua ya 6: Sakinisha OpenCV

Sasa endelea kwenye sehemu za Usoni-zinazotambuliwa zaidi. Ili kutambua nyuso, lazima tupakue maktaba ya OpenCV ambayo ina idadi kubwa ya zana za kufanya kazi na maono ya kompyuta.

Kuweka OpenCV ilikuwa sehemu ngumu zaidi ya kipengele cha programu kwangu. Lakini baada ya kufuata maagizo kadhaa mwishowe nilipata mafunzo kutoka kwa Emmet kutoka PiMyLifeUp ambayo ilifanya ujanja ambao unapatikana hapa:

Sitatembea kupitia hatua hizi kwani utafaa zaidi kuzifuata kutoka kwa kiunga (na maelezo yaliyopewa na uwezo wa kunakili na kubandika moja kwa moja kutoka kwa wavuti kwa urahisi zaidi).

Hatua ya 7: Wezesha / Jaribu Kamera

Wezesha / Jaribu Kamera
Wezesha / Jaribu Kamera
Wezesha / Jaribu Kamera
Wezesha / Jaribu Kamera

Baada ya kupata OpenCV kusalia safari yangu yote ilikamilishwa kwa kutumia mafunzo na MJRoBot kwenye Hackster.io inayopatikana hapa:

Kabla ya kuanza ningependa kukumbusha kwamba mimi sio muundaji wa asili wa maandishi haya lakini niliishia kurekebisha sehemu zao.

Kuanza tunapaswa kujaribu kamera ili kuhakikisha tunaweza kunasa video kwenye skrini. Nilitumia karibu saa moja kujaribu kutumia hati iliyotolewa katika Hatua ya 3 ya MJRoBot. Kama maisha yangekuwa nayo sisi kwa kweli tunahitaji kuwezesha kamera kwenye Raspberry Pi (zinaonekana inaweza kuwa wazo nzuri kusoma maagizo yaliyotolewa… mmm nah). Kwa hivyo baada ya kuunganisha Kamera kwenye bandari yake sahihi fuata hatua hizi:

  • Fungua kituo cha amri na andika sudo raspi-config
  • Chagua "Wezesha Kamera" (hii inaweza kupatikana chini ya chaguo la vifaa)
  • Piga "Ingiza"
  • Nenda kwenye "Maliza" Na utahamasishwa kuanza upya

Kisha fuata hatua hizi:

  • Nenda kwenye Menyu kuu ya Raspberry (Juu kushoto)
  • Mapendeleo
  • Usanidi wa Raspberry Pi
  • Maingiliano
  • Kisha katika Kamera, chagua "Imewezeshwa"
  • Kisha "Sawa"

Sasa unapaswa kufanikiwa kuendesha hati hii kutoka kwa mafunzo ya MJRoBot ili kujaribu kamera (kumbuka kuwa nambari hii yote pamoja na maelezo ya kina zaidi hupatikana kwenye kiunga kilichopewa hapo juu kwa mafunzo ya MJRobot):

kuagiza numpy kama np

kuagiza cv2 cap = cv2. VideoCapture (0) cap.set (3, 640) # kuweka Upana cap.set (4, 480) # set Urefu wakati (Kweli): ret, frame = cap.read () frame = cv2. pindua (fremu, -1) # Pindua kamera wima kijivu = cv2.cvtColor (fremu, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('gray', gray) k = cv2.waitKey (30 & 0xff ikiwa k == 27: # waandishi wa habari 'ESC' ili kuacha kofia ya kuvunja tafadhali () cv2.destroyAllWindows ()

Nambari iliyotangulia inapaswa kuonyesha madirisha mawili, moja kwa rangi na lingine kwa greyscale. Ikiwa umeifanya hivi sasa nadhani unastahili sandwich nzuri.

Hatua ya 8: Kukusanya Takwimu na Takwimu za Mafunzo

Kukusanya Takwimu na Takwimu za Mafunzo
Kukusanya Takwimu na Takwimu za Mafunzo
Kukusanya Takwimu na Takwimu za Mafunzo
Kukusanya Takwimu na Takwimu za Mafunzo
Kukusanya Takwimu na Takwimu za Mafunzo
Kukusanya Takwimu na Takwimu za Mafunzo

Katika mafunzo yaliyotolewa mwandishi huenda kwa kina zaidi juu ya michakato ya nambari itakayotolewa hivi karibuni, lakini kwa kuwa haya ni maagizo ya jinsi kioo hiki kilitengenezwa sitaenda kwa kina kwenye historia wala mafundi ngumu. Napendekeza hata hivyo uchukue mwezi wa maisha yako kusoma juu ya vitu hivi viwili kwani vinaweza kutumikia akili yako vizuri.

Kuna karibu hati tatu zaidi za kukimbia kabla tuweze kufanya kazi hii yote. Ya kwanza ni kukusanya data, ya pili ni kuifundisha na ya mwisho ni kutambuliwa. Kukusanya data kunahitaji picha halisi za uso zichukuliwe na kuhifadhiwa mahali maalum kwa mafunzo. Muundaji wa nambari hii alifanya iwe rahisi sana kufanya yote haya kwa hivyo napendekeza kufuata maagizo haya ili kuepuka maumivu ya kichwa.

Fungua laini ya amri na fanya saraka mpya kuiita kitu cha kufurahisha (niliita yangu FaceRec)

mkdir FaceRec

Sasa, badilisha saraka kuwa FaceRec na fanya subdirectory kuwa na uhakika wa kuipatia jina la seta

cd usoRec

mkusanyiko wa data wa mkdir

Wakati tuko katika hilo, tunaweza pia kutengeneza kichwa kingine kinachoitwa mkufunzi

mkufunzi wa mkdir

Sasa unaweza kukimbia na kufuata maelekezo ya hati ya kwanza ambayo itachukua picha za mtumiaji. (Vichwa tu juu, hakikisha kuingiza kitambulisho cha mtumiaji kama 1, 2, 3 nk.)

kuagiza cv2import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set up video width cam.set (4, 480) # set video height face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Kwa kila mmoja mtu, ingiza kitambulisho cha uso cha nambari moja face_id = ingizo ('\ n ingiza kitambulisho cha mwisho cha kitambulisho cha mtumiaji ==>') chapisha ("\ n [INFO] Inapoanza kukamata uso. Angalia kamera na subiri …") # Anzisha hesabu ya uso ya mtu binafsi ya sampuli kuhesabu = 0 wakati (Kweli): (kijivu, 1.3, 5) kwa (x, y, w, h) katika nyuso: cv2. mstatili (img, (x, y), (x + w, y + h), (255, 0, 0), 2) hesabu + = 1 # Hifadhi picha iliyonaswa kwenye folda ya hifadhidata cv2.imwrite ("setaseti / Mtumiaji." + Str (uso_id) + '.' + Str (hesabu) + ".jpg", kijivu [y: y + h, x: x + w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Bonyeza 'ESC' kwa kutoka video ikiwa k == 27: kuvunja elif count> = 30: # Chukua sampuli 30 ya uso na uache uboreshaji wa video k chapa ("\ n [INFO] Programu ya Kuacha na kusafisha vitu") cam.release () cv2.destroyAllWindows ()

Kwa wakati huu hakikisha umeweka mto kwenye Pi. Ikiwa sivyo, tumia amri:

bomba kufunga mto

Baada ya hayo kukamilika unaweza kuendesha hati ya mafunzo (hati ya pili) ambayo itakupa faili ya.yaml ambayo itatumika katika hati ya mwisho

kuagiza cv2import numpy kama np kutoka PIL kuagiza picha kuagiza # Njia ya hifadhidata ya picha ya uso = 'dataset' kutambua = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # kazi ili kupata picha na lebo ya data def getImagesAndLabels (njia): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] faceSamples = ids = for imagePath in imagePaths: PIL_img = Image.open (imagePath). Convert ('L') # ibadilishe kuwa kijivu img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [- 1]. mgawanyiko (".") [1]) nyuso = detector.detectMultiScale (img_numpy) ya (x, y, w, h) katika nyuso: faceSamples.append (img_numpy [y: y + h, x: x + w]) ids. ids)) # Hifadhi mfano kwa mkufunzi / mkufunzi.yml kitambulisho.andika ('mkufunzi / mkufunzi.yml') # recognizer.save () alifanya kazi kwenye Mac, lakini sio kwenye Pi # Chapisha nambari ya nyuso zilizofunzwa na kumaliza mpango wa kuchapisha. ("\ n [INFO] {0} nyuso zimefundishwa. Programu ya Kuondoka". muundo (len (np.unique (ids))))

Je! Ni nini nzuri juu ya seti hii ya hati ni kwamba nyuso nyingi zinaweza kuingizwa kwenye mfumo ikimaanisha watu kadhaa wanaweza kufikia ndani ya kioo ikiwa inataka.

Hapo chini nina hati ya Kukamata Data na hati ya Mafunzo inapatikana kwa kupakuliwa.

Hatua ya 9: Saa ya Utambuzi wa Usoni

Wakati wa Utambuzi wa Usoni
Wakati wa Utambuzi wa Usoni
Wakati wa Utambuzi wa Usoni
Wakati wa Utambuzi wa Usoni

Mwishowe, tunaweza kuendesha hati ya kitambuzi. Nambari zaidi iliongezwa kwa hati hii ili kufanya mchakato wa motor ufanye kazi kwa hivyo nitaelezea sehemu hizo vizuri zaidi. Nitaigawanya katika sehemu lakini nitaweka hati yote mwisho wa hatua ikiwa ndio unafuata.

Tutaanza kwa kuagiza moduli zote ambazo tutahitaji na kisha kuweka hali ya GPIO kwa GPIO. BCM

kuagiza numpy kama np

kuagiza os kuagiza muda kuagiza RPi. GPIO kama GPIO GPIO. onyo (uwongo) GPIO.setmode (GPIO. BCM)

Orodha hii inayofuata inayoitwa ControlPin ni idadi ya nambari ambayo inawakilisha pini za pato ambazo zitatumika kwa motor yetu ya stepper.

UdhibitiPin = [14, 15, 18, 23]

Kitanzi huweka pini hizi kama Matokeo na kisha inahakikisha kuwa zimezimwa. Bado nina nambari kadhaa hapa ili kuruhusu droo ifungwe kwa kushinikiza kitufe lakini niliamua kutumia kipima muda badala yake.

Usanidi wa GPIO (ControlPin , GPIO. OUT)

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

Vigezo viwili vifuatavyo ni mfuatano tutakaotumia kuendesha gari. Nilijifunza habari hii kutoka kwa video nzuri ya Gaven MacDonald ambayo ninapendekeza sana kuitazama wakati anaingia kwa kina sio tu kificho lakini motor halisi (inayopatikana hapa: https://www.youtube.com/embed/Dc16mKFA7Fo). Kwa asili, kila mlolongo utaingiliwa kupitia kutumia vitanzi vilivyowekwa kwenye sehemu ya wazi ya kazi ya OpenComp na closeComp. Ikiwa unatazama kwa karibu seq2 ni kinyume kabisa cha seq1. Eeh, umekisia. Moja ni kusonga mbele gari na nyingine ni kugeuza nyuma.

seq1 =

seq2 =

Kuanzia na kazi yetu ya OpenComp tunaunda kitanzi ambacho kitapunguza mara 1024. Kulingana na video ya MacDonald 512 itapewa mzunguko kamili wa gari na nikagundua kuwa karibu mizunguko miwili ilikuwa urefu mzuri lakini hii inaweza kubadilishwa kulingana na ukubwa wa mtu binafsi. Kitanzi kifuatacho kinajumuisha maagizo 8 ili kuhesabu safu 8 zinazopatikana katika seq1 na seq2. Na mwishowe, kitanzi cha mwisho kinazunguka mara nne kwa vitu vinne ambavyo hupatikana katika kila safu hizi pamoja na pini 4 za GPIO ambazo motor yetu imeunganishwa nayo. Mstari chini ya hapa huchagua pini ya GPIO na kisha kuiwasha au kuzima kulingana na upakuaji gani. Mstari baada ya hutoa wakati wa bafa isije motor yetu ikazunguka kabisa. Baada ya gari kuzunguka kuhamisha droo nje hulala kwa sekunde 5 kabla ya kuendelea. Wakati huu unaweza kubadilishwa hapa au unaweza kuwezesha nambari iliyopewa maoni ambayo inaruhusu utumiaji wa kitufe cha kushinikiza kusonga mbele na hati badala ya kipima muda.

kwa mimi katika masafa (1024):

kwa nusu ya hatua katika masafa (8): kwa pini katika masafa (4): GPIO.output (ControlPin [pin], seq1 [halfstep] [pin] muda. lala (.001) '' wakati Ukweli: ikiwa (2) == GPIO. LOW: kuvunja; "" muda. Kulala (5)

Kazi ya karibuComp inafanya kazi kwa mtindo sawa. Baada ya gari kurudi nyuma naendelea kuweka pini zetu za mwisho za GPIO chini ili kuhakikisha kuwa hatupotezi nguvu yoyote na kisha ninaongeza sekunde tatu za wakati kabla ya kuendelea.

kwa mimi katika masafa (1024):

kwa nusu ya hatua (8): kwa pini katika masafa (4): Pato la GPIO (ControlPin [pini], seq2 [nusu ya hatua] [pini] wakati. (ControlPin [0], 0) Pato la GPIO. Pato (ControlPin [3], 0) wakati. Kulala (3)

Sehemu kubwa ya sehemu inayofuata hutumiwa kusanikisha kamera na kuanza utambuzi wa usoni. Tena, maagizo ya MKRoBot huenda kwenye sehemu zaidi lakini kwa sasa, ninaonyesha tu sehemu zinazotumiwa kwa kioo.

Kwanza nilibadilisha orodha ya majina ili jina langu liko kwenye faharisi ambayo niliipa wakati wa kukusanya data (kwa upande wangu 1). Na kisha nikaweka maadili yote kwa Hakuna kwani sikuwa na nyuso zaidi kwenye hifadhidata.

majina = ['Hakuna', 'Daniel', 'Hakuna', 'Hakuna', 'Hakuna', 'Hakuna']

Mistari yetu michache ya mwisho ya nambari imetekelezwa katika kitanzi cha kitanzi. Niliunda kutofautisha kuhifadhi ujasiri kama nambari kamili (intConfidence) kabla ya ujasiri kutofautiana kugeuzwa kuwa kamba. Halafu ninatumia taarifa-ikiwa kuangalia ikiwa ujasiri ni mkubwa kuliko 30 na ikiwa kitambulisho (ni mtu gani ambaye kompyuta inamchunguza, katika kesi hii, "Daniel") ni sawa na jina langu. Baada ya hii kudhibitishwa kazi openComp inaitwa ambayo (kama ilivyoelezewa hapo awali) inahamisha motor, inaachana baada ya sekunde 5, kisha inaendelea kufungaComp ambayo inasonga motor kwa mwelekeo mwingine na hufanya usafishaji kabla ya kuendelea na kitanzi cha thicc.

ikiwa intConfidence> 30 na id == 'Daniel':

openComp () karibuComp ()

Mdudu ambao nimepata hapa ni kwamba wakati mwingine baada ya kurudi kwa karibu naComp, nambari hiyo inaendelea lakini taarifa ya masharti ikiwa imeonekana kuwa ya kweli tena kana kwamba inasoma chakula cha video ambacho bado kiko kwenye bafa. Ingawa haifanyiki kila wakati bado sijapata njia ya kuhakikisha haifanyiki kamwe, kwa hivyo ikiwa mtu yeyote ana maoni yoyote nijulishe tu kwenye maoni.

Hapa kuna hati yote katika sehemu moja (na chini tu hapa kuna inayoweza kupakuliwa):

kuagiza cv2

kuagiza numpy kama np kuagiza os kuagiza muda kuagiza RPi. GPIO kama GPIO GPIO.setningarnings (False) GPIO.setmode (GPIO. BCM) ControlPin = [14, 15, 18, 23] for i in range (4): GPIO.setup (ControlPin , GPIO. OUT) GPIO.pato (ControlPin , 0) GPIO.setup (2, GPIO. IN, pull_up_down = GPIO. PUD_DOWN) seq1 =

Hatua ya 10: Kuweka Pi na Kuunganisha Magari

Kuweka Pi na Kuunganisha Magari
Kuweka Pi na Kuunganisha Magari
Kuweka Pi na Kuunganisha Magari
Kuweka Pi na Kuunganisha Magari
Kuweka Pi na Kuunganisha Magari
Kuweka Pi na Kuunganisha Magari

Kuweka Raspberry Pi kwenye fremu ilikuwa rahisi sana. Niliunda kiwiko kidogo cha digrii 90 na uso mmoja ukiwa na shimo na upande mwingine ukiwa gorofa kabisa. Baada ya uchapishaji wa 3D mbili kati ya hizi zinaweza kushikamana na visu kwa Raspberry Pi kwenye mashimo yake ya kupanda (nilitumia mashimo mawili kila upande wa pini za GPIO).

Kisha nikaanza kutumia gundi kubwa kwenye nyuso zilizo kinyume za viwiko vya 3D vilivyochapishwa ili kunamisha Pi juu tu ya droo kwenye fremu. Baada ya kuacha gundi kukauka niliweza kuondoa au kubadilisha Pi iwe kwenye nafasi kwa urahisi na kwa urahisi na visu mbili tu. Nina.stl ya kiwiko kilichounganishwa hapa chini.

Sasa unganisha dereva wa gari kwa PI na IN1, IN2, IN3, IN4 inayounganisha na GPIO 14, 15, 18, 23 mtawaliwa. Mwishowe, unganisha pini 5v na Ground ya bodi ya mtawala kwa pato la 5v na pini za chini za Pi.

Hapa kuna kiunga cha Pinout ya Pi kwa kumbukumbu nyingine:

Hatua ya 11: Kuweka Kamera

Kuweka Kamera
Kuweka Kamera
Kuweka Kamera
Kuweka Kamera
Kuweka Kamera
Kuweka Kamera

Kuweka Kamera kulikuwa na nguvu kidogo kuliko Pi lakini njia ilifanya kazi ifanyike. Baada ya kubuni na kuchapisha boriti nyembamba na mashimo 2 kila upande niliunganisha boriti kwenye Pi ya Rasberry kupitia shimo lake lililopanda. Kisha ambatisha kamera upande wa pili wa boriti na screw nyingine. Ta-da! Ni muonekano mzuri wa kuruka.

Hatua ya 12: Kuunda na Kuweka Njia ya Kutembeza-Kusonga

Kuunda na Kuweka Njia ya Kutembeza-Kusonga
Kuunda na Kuweka Njia ya Kutembeza-Kusonga
Kuunda na Kuweka Njia ya Kutembeza-Kusonga
Kuunda na Kuweka Njia ya Kutembeza-Kusonga
Kuunda na Kuweka Njia ya Kutembeza-Kusonga
Kuunda na Kuweka Njia ya Kutembeza-Kusonga

Hatua hii ilifanywa shukrani rahisi kwa zawadi nzuri za jamii ya watengenezaji. Baada ya utaftaji wa haraka juu ya Thingiverse niliweza kupata kiboreshaji cha laini iliyoundwa na TucksProjects (iliyopatikana hapa: https://www.thingiverse.com/thing:2987762). Kilichobaki kufanya ni kuipiga tu kwenye kadi ya SD na kumruhusu printa afanye kazi hiyo.

Niliishia kuingia Fusion 360 na kuhariri spur kwani shimoni la gari langu lilikuwa kubwa sana kwa ile iliyotolewa na TucksProjects. Nina.stl kwa hiyo hapa chini. Baada ya uchapishaji kufanywa, tunahitaji tu kuikusanya kwa kuweka kichocheo kwenye shimoni la gari, halafu kwa kuambatanisha pande za motor na uzio na visu 2 (hakikisha unaweka rack katikati kabla ya kuifunga). Niliishia kukata inchi mbali ya rafu ili iweze kutoshea kati ya droo na fremu.

Sasa kilichobaki ni kuambatisha utaratibu kwenye fremu na droo. "Je! Tutaendelea kufanya nini?" unauliza… yup, sema nami: Super Gundi. Kama inavyoonyeshwa kwenye picha zilizo hapo juu, weka tu utaratibu dhidi ya chini ya fremu na uusukume juu ya kipande cha kuni ambacho droo huteleza. Ni muhimu hapa ujaribu kupata rack / utaratibu sawa na sura iwezekanavyo ili wakati utaratibu unasonga inasukuma droo moja kwa moja na sio pembeni. Baada ya kukauka gundi, weka gundi zaidi pembeni ya rafu na songa droo katika nafasi na iiruhusu ikame. Mara tu tumekamilika tuna utaratibu thabiti wa kutelezesha droo yetu ya siri ndani na nje.

Hatua ya 13: Kuongeza Kadibodi Nyuma ya Kioo

Kuongeza Kadibodi Nyuma ya Kioo
Kuongeza Kadibodi Nyuma ya Kioo
Kuongeza Kadibodi Nyuma ya Kioo
Kuongeza Kadibodi Nyuma ya Kioo
Kuongeza Kadibodi Nyuma ya Kioo
Kuongeza Kadibodi Nyuma ya Kioo

Ili kuifanya filamu hii ya pande mbili ionekane kama glasi, niligundua kuwa inasaidia kusudi letu kuweka kadibodi nyuma ya glasi. Kadibodi iliyotumiwa ni ile iliyokuja na fremu lakini kipande chochote kilichokatwa kutoshea kitafanya kazi. Hii pia inahakikisha hakuna nuru kutoka kwa kamera ya LED, kidhibiti cha magari, au maonyesho ya Pi upande wa pili wa kioo. Ukiwa na kila kitu mahali pake tumia penseli kuashiria mahali ambapo kamera inakaa kwenye kadibodi. Kisha tumia wembe kukata mstatili ili kamera iweze kuchungulia inapokuwa mahali.

Hatua ya 14: Kuweka kipande cha mwisho

Kuweka kipande cha mwisho
Kuweka kipande cha mwisho
Kuweka kipande cha mwisho
Kuweka kipande cha mwisho

Jambo la mwisho kufanya ni kuweka sehemu ya mbele ya droo ambayo ilitengwa mapema. Hoja motor ili droo iingie nje. Kisha gundi sehemu ya mbele ili kipande cha droo kiwe katikati (kuwe na hang kidogo pande zote. Halafu unaweza tu kuitundika ukutani.

Hatua ya 15: Mwisho

Mwisho
Mwisho
Mwisho
Mwisho

Hapo unayo! Kuna maboresho kadhaa ambayo yanaweza kufanywa kama kuongeza kitufe cha kushinikiza, kununua filamu bora ya njia mbili na kurekebisha mdudu huyo kwenye nambari lakini kwa jumla, hufanya kazi ifanyike: inaonekana kama kioo, inatambua iliyotanguliwa uso wa mtumiaji na inafungua droo ndogo nzuri. Kama kawaida, ningependa kusikia maoni yako, maswali, na kumbukumbu kwenye maoni hapa chini.

Upimaji wa Jumla: 10/10

Maoni: # Singejaribu Jaribu tena… isipokuwa kama ningeweza kufuata mafundisho haya;)

Changamoto ya Sehemu ya Siri
Changamoto ya Sehemu ya Siri
Changamoto ya Sehemu ya Siri
Changamoto ya Sehemu ya Siri

Zawadi Kubwa katika Changamoto ya Chumba cha Siri

Ilipendekeza: