Orodha ya maudhui:

Kiimarishaji Kamera cha Mkononi: Hatua 13 (na Picha)
Kiimarishaji Kamera cha Mkononi: Hatua 13 (na Picha)

Video: Kiimarishaji Kamera cha Mkononi: Hatua 13 (na Picha)

Video: Kiimarishaji Kamera cha Mkononi: Hatua 13 (na Picha)
Video: ОЖИДАНИЕ или РЕАЛЬНОСТЬ! ИГРЫ в РЕАЛЬНОЙ ЖИЗНИ! Маленькие кошмары 2 в реальной жизни! 2024, Julai
Anonim
Kiimarishaji Kamera cha Mkononi
Kiimarishaji Kamera cha Mkononi

Utangulizi

Huu ni mwongozo wa kuunda kifaa cha utulivu wa kamera ya 3-axis kwa GoPro kwa kutumia Bodi ya Maendeleo ya Digilent Zybo Zynq-7000. Mradi huu ulibuniwa kwa darasa la CPE Real-Time Operating Systems (CPE 439). Kiimarishaji hutumia servos tatu na IMU kusahihisha mwendo wa mtumiaji kuweka kiwango cha kamera.

Sehemu Zinazohitajika kwa Mradi

  • Digilent Zybo Zynq-7000 Bodi ya Maendeleo
  • Sparkfun IMU Kuzuka - MPU 9250
  • 2 HiTec HS-5485HB Servos (nunua mwendo wa digrii 180 au programu kutoka digrii 90 hadi 180)
  • HiTec HS-5685MH Servo (nunua mwendo wa digrii 180 au programu kutoka digrii 90 hadi 180)
  • 2 Mabano ya kawaida ya Servo
  • 1 Bodi ya mkate
  • Kamba za kuruka za kiume-kwa-kiume 15
  • Waya 4 kwa mwanamke kuruka
  • Gundi ya Moto
  • Shika au Shika
  • 5 mm kipenyo cha mbao
  • GoPro au kamera nyingine na vifaa vya kuongezeka
  • Ugavi wa umeme unaoweza kutoa 5V.
  • Ufikiaji wa Printa ya 3D

Hatua ya 1: Usanidi wa Vifaa vya Vivado

Usanidi wa Vifaa vya Vivado
Usanidi wa Vifaa vya Vivado

Wacha tuanze na kuunda muundo wa msingi wa mradi.

  1. Fungua Vivado 2016.2, bonyeza kitufe cha "Unda Mradi Mpya", na bonyeza "Next>".
  2. Taja mradi wako na bonyeza "Next>".
  3. Chagua mradi wa RTL na piga "Next>".
  4. Andika kwenye upau wa utaftaji xc7z010clg400-1 na kisha chagua sehemu na ubonyeze "Ifuatayo>" na "Maliza".

Hatua ya 2: Kuanzisha Ubunifu wa Kuzuia

Sasa tutaanza kutoa muundo wa block kwa kuongeza na kuanzisha Zynq IP Block.

  1. Kwenye jopo la mkono wa kushoto, chini ya Kiunganishi cha IP, Bonyeza "Unda muundo wa Kuzuia" na kisha bonyeza "Sawa".
  2. Bonyeza kulia kwenye kichupo cha "Mchoro" na uchague "Ongeza IP…".
  3. Andika "Mfumo wa Usindikaji wa ZYNQ7" na ubofye uteuzi.
  4. Bonyeza mara mbili kwenye kizuizi cha Zynq kinachoonekana.
  5. Bonyeza "Ingiza Mipangilio ya XPS" na uingize faili iliyotolewa ya "ZYBO_zynq_def.xml".
  6. Nenda kwa "Usanidi wa MIO" na uchague "Kitengo cha Usindikaji wa Maombi" na uwezeshe vipima muda vya Timer 0 na Watazamaji.
  7. Katika kichupo hicho hicho, chini ya "Vipimo vya I / O", chagua ENET 0 (na ubadilishe menyu kunjuzi kuwa "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. Chini ya "GPIO", angalia GPIO MIO, ENET Rudisha, USB Rudisha, na I2C Rudisha.
  9. Sasa nenda kwenye "Usanidi wa Saa". Chagua FCLK_CLK0 chini ya Saa za Vitambaa vya PL. Kisha, Bonyeza "Sawa".

Hatua ya 3: Unda PWM ya Kinga ya IP ya Desturi

Kizuizi hiki cha IP kinaruhusu bodi kutuma ishara ya PWM nje kudhibiti harakati za servos. Kazi hiyo ilitokana sana na mafunzo na Digitronix Nepal, iliyopatikana hapa. Mantiki iliongezwa ili kupunguza mwendo wa saa kwa hivyo mapigo yalikuwa yakitoa kwa kiwango sahihi. Kizuizi huchukua nambari kutoka 0 hadi 180 na kuibadilisha kuwa pigo kutoka 750-750 usec.

  1. Sasa, chini ya kichupo cha Zana karibu na kona ya juu kushoto, bonyeza "Unda na Ufungashaji IP…" na ugonge Ifuatayo.
  2. Kisha chagua "Unda pembeni mpya ya AXI4" na ugonge Ifuatayo.
  3. Taja kizuizi chako cha PWM IP (tuliipa jina pwm_core) na bonyeza Ijayo na kisha bonyeza Ijayo kwenye ukurasa unaofuata pia.
  4. Sasa bonyeza "Hariri IP" na hit Finish. Hii itafungua dirisha mpya kuhariri kizuizi cha pwm.
  5. Katika kichupo cha "Vyanzo" na chini ya "Vyanzo vya Ubunifu", panua 'pwm_core_v1_0' (badilisha pwm_core na jina lako) na ufungue faili inayoonekana.
  6. Nakili na ubandike nambari iliyotolewa chini ya 'pwm_core_v1_0_S00_AXI.v' kwenye faili ya zip iliyo chini ya mradi. Ctrl + Shift + R na ubadilishe 'pwm_core' na jina lako kwa ip block.
  7. Kisha fungua 'jina _v1_0' na unakili katika nambari iliyotolewa kwenye faili 'pwm_core_v1_0.v'. Ctrl + Shift + R na ubadilishe 'pwm_core' na jina.
  8. Sasa nenda kwenye kichupo cha 'Pakiti ya IP - jina' na uchague "Vigezo vya Ugeuzaji kukufaa".
  9. Katika kichupo hiki kutakuwa na upau wa manjano hapo juu ambao umeunganisha maandishi. Chagua hii, na "Vigezo Vya Siri" vitaonekana kwenye sanduku.
  10. Sasa nenda kwa "Customization GUI" na bonyeza kulia kwenye Pwm Counter Max chagua "Hariri Parameter…".
  11. Angalia sanduku za "Inayoonekana katika Customization GUI" na "Taja Masafa".
  12. Badilisha orodha ya "Aina:" kwa orodha ya nambari na weka kiwango cha chini hadi 0 na upeo hadi 65535 na angalia sanduku la "Onyesha Rangi". Sasa bonyeza OK.
  13. Buruta Pwm Counter Max chini ya Mti wa 'Ukurasa 0'. Sasa nenda kwenye "Pitia na Kifurushi" na ubonyeze kitufe cha "Re-Package IP".

Hatua ya 4: Ongeza PWM IP Block kwa Design

Ongeza PWM IP Block kwa Kubuni
Ongeza PWM IP Block kwa Kubuni

Tutakuwa tukiongeza kizuizi cha IP kwenye muundo wa vizuizi kumruhusu mtumiaji kufikia kizuizi cha IP cha PWM kupitia processor.

  1. Bonyeza kulia kwenye kichupo cha mchoro na bonyeza "Mipangilio ya IP …". Nenda kwenye kichupo cha "Meneja wa Hifadhi".
  2. Bonyeza kitufe cha kijani pamoja na uchague. Sasa pata ip_repo katika Meneja wa Faili na uiongeze kwenye mradi. Kisha Hit Tumia na kisha Sawa.
  3. Bonyeza kulia kwenye kichupo cha mchoro na bonyeza "Ongeza IP…". Andika jina lako la kuzuia PWM IP na uchague.
  4. Inapaswa kuwa na baa ya kijani juu ya skrini, kwanza chagua "Run Run Connection Automation" na bonyeza OK. Kisha bonyeza "Run Block Automation" na bonyeza OK.
  5. Bonyeza mara mbili kwenye kizuizi cha PWM na ubadilishe Pwm Counter Max hadi 1024 kutoka 128.
  6. Hoja kipanya chako cha panya juu ya PWM0 kwenye kizuizi cha PWM. Inapaswa kuwa na penseli ndogo ambayo hujitokeza wakati unafanya. Bonyeza kulia na uchague "Unda Bandari …" na ubonyeze Sawa wakati dirisha linafungua. Hii inaunda bandari ya nje ya ishara inayopitishwa.
  7. Rudia hatua ya 6 kwa PWM1 na PWM2 pia.
  8. Pata ikoni ndogo ya mviringo mara mbili kwenye ubao wa pembeni na ubofye hiyo. Itaunda upya mpangilio na muundo wako wa block unapaswa kuonekana kama picha hapo juu.

Hatua ya 5: Sanidi kifuniko cha HDL na Weka faili ya Vizuizi

Sanidi kifuniko cha HDL na Weka faili ya Vizuizi
Sanidi kifuniko cha HDL na Weka faili ya Vizuizi

Sasa tutazalisha Ubunifu wa kiwango cha juu cha Kubuni yetu ya Zuia na kisha ramani PWM0, PWM1, na PWM2 kwa pini za Pmod kwenye bodi ya Zybo.

  1. Nenda kwenye kichupo cha "Vyanzo". Bonyeza kulia faili yako ya muundo wa block chini ya "Vyanzo vya Ubunifu" na ubofye "Unda Kifuniko cha HDL…". Chagua "Nakili kifuniko kilichotengenezwa ili kuruhusu mabadiliko ya mtumiaji" na ubonyeze sawa. Hii inazalisha Ubunifu wa kiwango cha juu cha Kubuni ya Zuia tuliyounda.
  2. Pmod tutakayokuwa tukitoa ni JE.
  3. Chini ya Faili, chagua "Ongeza Vyanzo…" na uchague "Ongeza au tengeneza vizuizi" na ubonyeze Ifuatayo.
  4. Bonyeza ongeza faili na uchague faili iliyojumuishwa ya "ZYBO_Master.xdc". Ukiangalia kwenye faili hii utagundua kila kitu hakijaambiwa isipokuwa mistari sita ya "set_property" chini ya "## Pmod Header JE". Utagundua kuwa PWM0, PWM1, na PWM2 ndio hoja za mistari hii. Wanapanga ramani ya Pin 1, Pin 2, na Pin 3 ya JE Pmod.

Hatua ya 6: Kuzalisha Bitstream

Tunahitaji kutengeneza mtiririko mdogo wa muundo wa vifaa kusafirisha kwa SDK kabla ya kuendelea.

  1. Chini ya "Programu na Utatuaji" kwenye upau wa kando, chagua "Zalisha Mtiririko". Hii itaendesha usanisi, halafu utekelezaji, na kisha itengeneze mkondo wa muundo.
  2. Sahihisha makosa yoyote yanayotokea, lakini maonyo kwa ujumla yanaweza kupuuzwa.
  3. Nenda kwenye Faili-> Anzisha SDK na ubonyeze sawa. Hii itafungua Xilinx SDK.

Hatua ya 7: Kuanzisha Mradi katika SDK

Sehemu hii inaweza kukatisha tamaa kidogo. Unapokuwa na shaka, tengeneza BSP mpya na ubadilishe ile ya zamani. Hii iliokoa kikundi cha wakati wa utatuzi.

  1. Anza kwa kupakua toleo la hivi karibuni la FreeRTOS hapa.
  2. Dondoa kila kitu kutoka kwa kupakua na kuagiza FreeRTOS ndani ya SDK kwa kubofya Faili-> Ingiza, na chini ya "Jumla" bonyeza "Miradi iliyopo Kwenye Sehemu ya Kazi" kisha bonyeza Ijayo.
  3. Nenda kwa "FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702" ndani ya folda ya FreeRTOS. Ingiza tu "RTOSDemo" kutoka eneo hili.
  4. Sasa toa Kifurushi cha Usaidizi wa Bodi (BSP) kwa kubofya Faili-> Kifurushi kipya cha Msaada wa Bodi.
  5. Chagua "ps7_cortexa9_0" na uangalie "lwip141" na ubonyeze sawa.
  6. Bonyeza kulia kwenye folda ya bluu ya RTOSDemo na uchague "Marejeleo ya Mradi".
  7. Ondoa alama "RTOSDemo_bsp" na angalia BSP mpya ambayo tumeunda tu.

Hatua ya 8: Marekebisho ya Msimbo wa FreeRTOS

Nambari tunayotoa inaweza kutengwa katika faili 7 tofauti. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h na iic_imu.h. Nambari katika iic_main_thread.c imebadilishwa kutoka maktaba ya Kris Winer, ambayo inaweza kupatikana hapa. Tulibadilisha nambari yake kuu kuingiza majukumu na kuifanya ifanye kazi na bodi ya Zybo. Tuliongeza pia kazi za kuhesabu marekebisho ya mwelekeo wa kamera. Tumeacha katika taarifa kadhaa za kuchapisha ambazo zinafaa kwa utatuzi. Wengi wao wametolewa maoni lakini ikiwa unahisi hitaji lako unaweza kuwasumbua.

  1. Njia rahisi ya kurekebisha faili kuu.c ni kubadilisha nambari na nambari iliyonakiliwa kutoka kwa faili yetu kuu ya kuu.c.
  2. Ili kuunda faili mpya, bonyeza kulia kwenye folda ya src chini ya RTOSDemo na uchague C File File. Ipe faili hii "iic_main_thread.c".
  3. Nakili nambari kutoka kwa "iic_main_thread.c" iliyojumuishwa na ibandike kwenye faili yako mpya.
  4. Rudia hatua 2 na 3 na faili zilizobaki.
  5. inahitaji maagizo ya kuunganisha katika gcc. Ili kuongeza hii kwenye njia ya kujenga bonyeza haki kwenye RTOSDemo na uchague "C / C ++ Kuunda Mipangilio".
  6. Dirisha jipya litafunguliwa. Nenda kwenye ARM v7 gcc linker-> Maktaba. Chagua faili ndogo ya kuongeza kwenye kona ya juu kulia na andika "m". Hii itajumuisha maktaba ya hesabu katika mradi huo.
  7. Jenga mradi na Ctrl + B ili kudhibitisha kila kitu kinafanya kazi. Angalia maonyo ambayo yanazalishwa lakini unaweza kupuuza.
  8. Kuna maeneo kadhaa ambayo itahitaji marekebisho, haswa upungufu wa sumaku wa eneo lako la sasa. Tutaelezea jinsi ya kubadilisha hii katika sehemu ya calibration ya mafunzo.

Hatua ya 9: Uchapishaji wa 3D wa Kiimarishaji

Uchapishaji wa 3D kwa Udhibiti
Uchapishaji wa 3D kwa Udhibiti

Unahitaji kuchapisha 3D sehemu kadhaa za mradi huu. Mtu anaweza kununua sehemu ambazo zina vipimo / saizi sawa na sehemu zetu zilizochapishwa.

  1. Tumia faili zilizotolewa kuchapisha mkono na kushikilia bracket kwa GoPro.
  2. Unahitaji kuongeza kiunzi kwenye faili ya.stl.
  3. Punguza / safi sehemu za kiunzi cha ziada mara baada ya kuchapishwa.
  4. Unaweza kuchukua nafasi ya kitambaa cha mbao na sehemu iliyochapishwa ya 3D ikiwa ungependa.

Hatua ya 10: Kukusanya Sehemu

Kukusanya Sehemu
Kukusanya Sehemu

Hizi ni sehemu kadhaa za kukusanya kiimarishaji. Mabano yaliyonunuliwa huja na visu 4 vya kujipiga na bolts 4 na karanga. Kwa kuwa kuna servos 3, moja ya pembe za servo inahitaji kubanwa kabla ili kuruhusu 2 ya bolts kutoshea.

  1. Solder pini 8 kwenye kuzuka kwa IMU, 4 kila upande.
  2. IMU imeambatanishwa na bracket iliyochapishwa ya 3D kwa GoPro katikati ya bracket.
  3. Kuelekeza mabano kwa hivyo mashimo yanayopandikiza servo yako upande wako wa kushoto. Weka IMU pembeni kabisa kwako, huku pini zikining'inia pembeni. Kisha, weka mlima wa GoPro juu ya IMU, ukishikilia IMU na mlima mahali kwenye bracket.
  4. Ambatisha HS-5485HB kwenye bracket ya servo ambayo imejumuishwa kwenye mkono uliochapishwa wa 3D.
  5. Piga bracket ya GoPro ndani ya mkono ulioambatanishwa na servo, hakikisha kwamba servo imewekwa ili iwe katikati ya mwendo wake.
  6. Ifuatayo, ambatisha servo ya HS-5685MH kwenye bracket ya servo. Kisha gonga pembe ya servo na moja ya vis. Sasa ambatisha servo chini ya bracket ya mwisho ya servo.
  7. Sasa ambatisha servo ya mwisho kwenye bracket ambayo servo ya HS-5685MH imeingiliwa ndani. Kisha unganisha mkono ndani ya servo hii, ukihakikisha kuwa mkono umefungwa juu ili uweze kusonga digrii 90 kila njia.
  8. Ili kumaliza ujenzi wa gimbal, ongeza kipande kidogo cha kitambaa cha mbao kuungana kati ya bracket ya GoPro na mkono uliochapishwa wa 3D. Sasa umekusanya kiimarishaji.
  9. Mwishowe, unaweza kuongeza kipini kilichounganishwa na bracket ya chini ya servo.

Hatua ya 11: Kuunganisha Zybo kwa Udhibiti

Kuunganisha Zybo kwa Udhibiti
Kuunganisha Zybo kwa Udhibiti

Kuna mambo kadhaa ya kuwa mwangalifu wakati wa kufanya hivi. Unataka kuhakikisha kuwa 5V kutoka kwa usambazaji wa umeme haiingii kamwe kwenye bodi ya Zybo, kwani hii itasababisha shida na bodi. Hakikisha kuangalia mara mbili kuruka kwako ili kudhibitisha hakuna waya zinazobadilishwa.

  1. Ili kushikamana na Zybo kwenye kiimarishaji utahitaji wanarukaji wa kiume 15 hadi wa kiume na wanne wa kiume kuruka.
  2. Kwanza, unganisha kuruka mbili kwa umeme wako wa 5V kando ya reli za + na - za ubao wa mkate. Hizi zitatoa nguvu kwa servos.
  3. Kisha, unganisha jozi 3 za kuruka kwa reli + na - za ubao wa mkate. Hizi zitakuwa nguvu kwa kila servos.
  4. Chomeka mwisho mwingine wa + na - kuruka ndani ya kila servos.
  5. Unganisha jumper kati ya - reli ya ubao wa mkate na moja ya pini za GND kwenye Zybo JE Pmod (Tazama picha ya Hatua ya 5). Hii itaunda msingi wa pamoja kati ya bodi ya Zybo na usambazaji wa umeme.
  6. Ifuatayo unganisha waya wa ishara ili kubandika 1, piga 2, na ubandike 3 ya JE Pmod. Bandika ramani 1 kwa servo ya chini, piga ramani 2 kwa servo mwisho wa mkono, na ubandike ramani 3 kwa servo ya kati.
  7. Chomeka waya 4 za kike kwenye pini za GND, VDD, SDA na SCL za kuzuka kwa IMU. GND na VDD kuziba kwenye GND na 3V3 kwenye pini za JF. Chomeka pini ya SDA kwenye pini 8 na SCL ndani ya pini 7 kwenye JF (Tazama picha ya Hatua ya 5).
  8. Mwishowe, unganisha kompyuta kwenye ubao ukitumia kebo ndogo ya usb. Hii itaruhusu mawasiliano ya uart na kukuruhusu kupanga bodi ya Zybo.

Hatua ya 12: Marekebisho ya Kweli ya Kaskazini

Marekebisho ya Kweli ya Kaskazini
Marekebisho ya Kweli ya Kaskazini

Ulinganishaji wa magnetometer katika IMU ni muhimu kwa operesheni sahihi ya kifaa. Kupungua kwa sumaku, ambayo hurekebisha kaskazini ya magnetic kwenda kaskazini ya kweli.

  1. Ili kurekebisha tofauti kutoka kaskazini ya sumaku na kweli, unahitaji kutumia mchanganyiko wa huduma mbili, Ramani za Google na kikokotoo cha uwanja wa sumaku wa NOAA.
  2. Tumia Ramani za Google kupata latitudo na longitudo ya eneo lako la sasa.
  3. Chukua longitudo yako ya sasa na latitudo na uiingize kwenye kikokotoo cha shamba la sumaku.
  4. Kinachorudishwa ni kupungua kwa sumaku. Chomeka hesabu hii kwenye nambari kwenye laini ya 378 ya "iic_main_thread.c". Ikiwa kupungua kwako ni mashariki, basi toa kutoka kwa thamani ya yaw, ikiwa magharibi kisha ongeza kwa thamani ya yaw.

* picha ilipigwa kutoka kwa mwongozo wa uhusiano wa Sparkfun's MPU 9250, uliopatikana hapa.

Hatua ya 13: Kuendesha Programu

Kuendesha Programu
Kuendesha Programu

Wakati ambao umekuwa ukingojea! Sehemu bora ya mradi ni kuiona inafanya kazi. Shida moja ambayo tumegundua ni kwamba kuna kuteleza kutoka kwa maadili yaliyoripotiwa kutoka IMU. Kichujio cha kupitisha chini kinaweza kusaidia kusahihisha utelezaji huu, na kupigana na kiini cha sumaku, kuongeza kasi na hesabu za gyro pia itasaidia kusahihisha utelezaji huu.

  1. Kwanza, jenga zote kwenye SDK, hii inaweza kufanywa kwa kubonyeza Ctrl + B.
  2. Hakikisha usambazaji wa umeme umewashwa na kuweka 5V. Angalia mara mbili kuwa waya zote zinaenda kwenye sehemu zao sahihi.
  3. Kisha, ili kuendesha programu, bonyeza pembetatu ya kijani katikati ya juu ya mwambaa wa kazi.
  4. Wakati programu inaendesha, servos zote zitarejeshwa kwenye nafasi zao 0, kwa hivyo uwe tayari kwa rig kusonga. Mara tu mpango utakapoanza, servos zitarudi kwenye nafasi zao za digrii 90.
  5. Kazi ya upimaji wa magnetometer itaendesha na maagizo yatachapishwa kwa kituo cha UART, ambacho unaweza kuunganisha kupitia mfuatiliaji wa serial kama vile "putty" au mfuatiliaji wa serial uliotolewa kwenye SDK.
  6. Ulinganishaji utahamisha kifaa kwa kielelezo cha 8 kwa sekunde 10. Unaweza kuondoa hatua hii kwa kutoa maoni nje ya mstari wa 273 wa "iic_main_thread.c". Ukiitolea maoni unahitaji kutolea maoni mistari 323 - 325 "iic_main_thread.c". Thamani hizi hapo awali zilikusanywa kutoka kwa hesabu ya sumaku hapo juu na kisha zikaingizwa kama maadili.
  7. Baada ya usawazishaji nambari ya utulivu itaanza na kifaa kitaweka kamera imara.

Ilipendekeza: