Orodha ya maudhui:

Laser Harp Synthesizer kwenye Bodi ya Zybo: Hatua 10 (na Picha)
Laser Harp Synthesizer kwenye Bodi ya Zybo: Hatua 10 (na Picha)

Video: Laser Harp Synthesizer kwenye Bodi ya Zybo: Hatua 10 (na Picha)

Video: Laser Harp Synthesizer kwenye Bodi ya Zybo: Hatua 10 (na Picha)
Video: Обзор современного дома: Твой дом ДОЛЖЕН БЫТЬ ТАКИМ | Красивые дома, интерьер дома, хаус тур 2024, Julai
Anonim
Laser kinubi Synthesizer kwenye Bodi ya Zybo
Laser kinubi Synthesizer kwenye Bodi ya Zybo

Katika mafunzo haya tutaunda kinubi cha laser kinachotumika kikamilifu kutumia sensorer za IR na kiolesura cha serial ambacho kitamruhusu mtumiaji kubadilisha mkao na sauti ya chombo. Kinubi hii itakuwa kumbukumbu ya karne ya 21 ya chombo cha zamani. Mfumo huo uliundwa kwa kutumia bodi ya maendeleo ya Xilinx Zybo pamoja na Vivado Design Suites. Nini utahitaji kukamilisha mradi:

  • Sensorer 12 za IR na emitters (zaidi au chini inaweza kutumika kulingana na idadi ya masharti)
  • Bodi ya maendeleo ya Zybo Zynq-7000
  • RTOS ya bure
  • Suite ya Ubunifu wa Vivado
  • Waya (kwa kuunganisha sensorer kwenye bodi)
  • Vipande 3 vya bomba la PVC ((2) inchi 18 na (1) inchi 8)
  • Viwiko 2 vya PVC

Hatua ya 1: Pata Maonyesho ya Sauti ya Zybo DMA ya Digilent

Upande wa FPGA wa mradi huu unategemea sana mradi wa onyesho linalopatikana hapa. Inatumia ufikiaji wa kumbukumbu moja kwa moja kutuma data moja kwa moja kutoka kwa kumbukumbu ambayo processor inaweza kuandika juu ya Mkondo wa AXI kwa kizuizi cha sauti cha I2S. Hatua zifuatazo zitakusaidia kupata mradi wa onyesho la onyesho la DMA:

  1. Toleo jipya la faili ya bodi kwa bodi ya Zybo inaweza kuwa muhimu. Fuata maagizo haya kupata faili mpya za bodi ya Vivado.
  2. Fuata hatua 1 na 2 katika maagizo kwenye ukurasa huu ili kupata mradi wa onyesho huko Vivado. Tumia njia ya Vivado, sio msaada wa vifaa vya SDK.
  3. Unaweza kupata ujumbe ambao unasema baadhi ya vizuizi vyako vya ip vinapaswa kusasishwa. Ikiwa ndivyo, chagua "Onyesha Hali ya IP" na kisha kwenye kichupo cha hali ya IP chagua IP yote ya nje ya tarehe na bonyeza "Sasisha Iliyochaguliwa". Inapomalizika na dirisha linaibuka ikiwa unataka kutoa bidhaa ya pato, endelea na bonyeza "Tengeneza". Ukipata ujumbe muhimu wa onyo, upuuze.
  4. Badilisha kutoka kwa muundo hadi kichupo cha vyanzo huko Vivado ili uone faili za chanzo. Bonyeza kulia muundo wa block "design_1" na uchague "Unda kifuniko cha HDL". Unapoambiwa chagua "nakala iliyofungiwa ili kuruhusu mabadiliko ya mtumiaji". Faili ya kufunika mradi huo itatengenezwa.
  5. Sasa kwa kuwa hatua hizo muhimu ambazo kwa namna fulani ziliachwa kwenye mafunzo mengine zimekamilika, unaweza kurudi kwenye mafunzo yaliyounganishwa hapo awali na uendelee kutoka hatua ya 4 hadi mwisho na uhakikishe kuwa mradi wa onyesho unaendesha kwa usahihi. Ikiwa huna njia ya kuingiza sauti ili kurekodi basi rekodi tu na vichwa vya sauti vyako na usikilize sauti feki ya sekunde 5-10 unapobonyeza kitufe cha uchezaji. Kwa muda mrefu kama kitu kinatoka kwenye kichwa cha kichwa unapobonyeza kitufe cha kucheza, labda inafanya kazi kwa usahihi.

Hatua ya 2: Fanya Mabadiliko kadhaa kwenye Vivado

Fanya Mabadiliko kadhaa huko Vivado
Fanya Mabadiliko kadhaa huko Vivado

Kwa hivyo sasa unayo demo ya sauti ya Digilent ya DMA inafanya kazi, lakini sio lengo la mwisho hapa. Kwa hivyo lazima turudi kwa Vivado na tufanye mabadiliko ili sensorer zetu ziweze kuingiliwa kwenye vichwa vya PMOD na tuweze kutumia thamani yao kwa upande wa programu.

  1. Fungua mchoro wa block huko Vivado
  2. Unda kizuizi cha GPIO kwa kubofya kulia kwenye nafasi tupu kwenye mchoro wa block na uchague "Ongeza IP" kutoka kwenye menyu. Pata na uchague "AXI GPIO".
  3. Bonyeza mara mbili kizuizi kipya cha IP na katika ubadilishe tena windows IP nenda kwenye kichupo cha usanidi wa IP. Chagua pembejeo zote na uweke upana kuwa kumi na mbili, kwani tutakuwa na "nyuzi" 12 kwenye kinubi chetu na kwa hivyo tunahitaji sensorer 12. Ikiwa unataka kutumia sensorer chache au zaidi basi rekebisha nambari hii ipasavyo. Pia weka kuwezesha kukatiza.
  4. Bonyeza kulia kizuizi kipya cha GPIO IP na uchague "endesha kiotomatiki cha unganisho". Angalia kisanduku cha AXI na ugonge sawa. Hii inapaswa kuunganisha kiolesura cha AXI kiatomati, lakini acha matokeo ya kizuizi kisichounganishwa.
  5. Ili kutoa nafasi kwa usumbufu wa ziada, bonyeza mara mbili kwenye xlconcat_0 IP block na ubadilishe idadi ya bandari kutoka 4 hadi 5. Kisha unaweza kuunganisha pini ya ip2intc_irpt kutoka kwa kizuizi kipya cha GPIO hadi bandari mpya isiyotumika kwenye block xlconcat.
  6. Bonyeza kulia kwenye pato la "GPIO" la kizuizi kipya cha GPIO IP na uchague "fanya nje". Pata mahali ambapo mstari huenda na bonyeza kwenye pentagon ndogo ya kando na upande wa kushoto dirisha inapaswa kufungua ambapo unaweza kubadilisha jina. Badilisha jina kuwa "SENSORS". Ni muhimu kutumia jina moja ikiwa unataka faili ya vizuizi tunayopeana kufanya kazi, vinginevyo itabidi ubadilishe jina kwenye faili ya vizuizi.
  7. Rudi kwenye kichupo cha vyanzo, pata faili ya vizuizi na uibadilishe na ile tunayotoa. Unaweza kuchagua kubadilisha faili au nakili tu yaliyomo kwenye faili yetu ya vizuizi na ubandike juu ya yaliyomo kwenye ile ya zamani. Moja ya mambo muhimu ambayo faili yetu ya vizuizi hufanya ni kuwezesha vipingaji vya pullup kwenye vichwa vya PMOD. Hii ni muhimu kwa sensorer fulani tulizotumia, hata hivyo sio sensorer zote zinafanana. Ikiwa sensorer zako zinahitaji vihimili vya kuvuta chini unaweza kubadilisha kila mfano wa "set_property PULLUP kweli" na "set_property PULLDOWN true". Ikiwa zinahitaji thamani tofauti ya kipinga kuliko ile iliyo kwenye ubao, basi unaweza kuondoa laini hizi na utumie vipinga nje. Majina ya pini yamo kwenye maoni kwenye faili ya vizuizi, na yanahusiana na maandiko kwenye mchoro wa kwanza katika Zybo Schematics ukurasa ambao unaweza kupatikana hapa. Ikiwa unataka kutumia pini tofauti za jioni tu linganisha majina kwenye faili ya kikwazo na lebo kwenye muundo. Tunatumia kichwa cha PMOD JE na JD, na tumia pini sita za data kwa kila moja, ukiacha pini 1 na 7. Habari hii ni muhimu wakati wa kuunganisha sensorer zako. Kama inavyoonyeshwa katika mpango, pini 6 na 12 kwenye PMODS ni VCC na pini 5 na 11 ni chini.
  8. Zalisha tena kifuniko cha HDL kama hapo awali, na unakili na uweke tena ya zamani. Ikimaliza, tengeneza vifaa vya mkondo na usafirishaji kama hapo awali, na uzindue tena SDK. Ikiwa utaulizwa ikiwa unataka kubadilisha faili ya zamani ya vifaa, jibu ni ndio. Labda ni bora kuwa na SDK imefungwa wakati unasafirisha vifaa ili iweze kubadilishwa vizuri.
  9. Zindua SDK.

Hatua ya 3: Pata Mbio za FreeRTOS

Hatua inayofuata ni kupata FreeRTOS inayoendesha kwenye bodi ya Zybo.

  1. Ikiwa huna nakala tayari, pakua FreeRTOS hapa na utoe faili.
  2. Ingiza onyesho la FreeRTOS Zynq lililoko FreeRTOSv9.0.0 / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo. Mchakato wa kuagiza ni sawa sawa na ilivyokuwa kwa mradi mwingine wa onyesho, hata hivyo kwa sababu onyesho la FreeRTOS Zynq hutegemea faili zingine kwenye folda ya FreeRTOS, haupaswi kunakili faili hizo kwenye nafasi yako ya kazi. Badala yake, unapaswa kuweka folda nzima ya FreeRTOS ndani ya folda yako ya mradi.
  3. Unda kifurushi kipya cha msaada wa bodi kwa kwenda kwenye "faili" -> "mpya" -> "kifurushi cha bodi". Hakikisha kusimama pekee kunachaguliwa na bonyeza kumaliza. Baada ya muda dirisha litaibuka, angalia kisanduku kando ya lwip141 (hii inasimamisha moja ya demos za FreeRTOS kushindwa kukusanya) na kugonga sawa. Baada ya hapo kukamilisha bonyeza haki kwenye mradi wa RTOSdemo na nenda kwenye "mali", nenda kwenye kichupo cha "marejeo ya mradi", na angalia sanduku karibu na bsp mpya uliyounda. Tunatumahi kuwa itatambuliwa lakini wakati mwingine Xilinx SDK inaweza kuwa ya kushangaza juu ya aina hii ya kitu. Ikiwa bado unapata kosa baada ya hatua hii ambayo xparameters.h haipo au kitu kama hicho basi jaribu kurudia hatua hii na labda kutoka na kuzindua tena SDK.

Hatua ya 4: Ongeza Nambari ya kinubi ya Laser

Sasa kwa kuwa FreeRTOS imeingizwa, unaweza kuleta faili kutoka kwa mradi wa kinubi wa laser kwenye onyesho la FreeRTOS

  1. Unda folda mpya chini ya folda ya src kwenye onyesho la FreeRTOS na unakili na ubandike faili zote zilizopewa c isipokuwa main.c kwenye folda hii.
  2. Badilisha nafasi kuu ya RTOSDemo na kuu iliyotolewa.c.
  3. Ikiwa kila kitu kimefanywa kwa usahihi, unapaswa kutumia nambari ya kinubi ya laser wakati huu. Kwa madhumuni ya upimaji, pembejeo ya kitufe ambayo ilitumika katika mradi wa onyesho la DMA sasa inatumiwa kucheza sauti bila sensorer zilizoambatanishwa (yoyote ya vifungo vinne vikuu itafanya kazi). Itacheza kamba kila wakati unapoibonyeza na kuzunguka kwa kamba zote kwenye mfumo juu ya mashinikizo mengi. Chomeka vichwa vya sauti au spika kwenye kichwa cha kichwa kwenye ubao wa Zybo na hakikisha unaweza kusikia milio ya kamba inayokuja unapobonyeza kitufe.

Hatua ya 5: Kuhusu Kanuni

Wengi wenu mnaosoma mafunzo haya kuna uwezekano hapa kujifunza jinsi ya kuweka sauti au kutumia DMA kufanya kitu tofauti, au kuunda ala tofauti ya muziki. Kwa sababu hiyo sehemu chache zifuatazo zinajitolea kuelezea jinsi nambari inayotolewa inafanya kazi kwa kushirikiana na vifaa vilivyoelezewa hapo awali kupata pato la sauti linalofanya kazi kwa kutumia DMA. Ikiwa unaelewa ni kwanini vipande vya nambari vipo basi unapaswa kuwa na uwezo wa kuzoea kwa chochote ambacho unataka kuunda.

Usumbufu

Kwanza nitataja jinsi usumbufu umeundwa katika mradi huu. Njia tuliyofanya ni kwa kwanza kuunda muundo wa meza ya vector ambayo inafuatilia kitambulisho, kukatiza kishikaji, na kumbukumbu ya kifaa kwa kila kukatiza. Vitambulisho vya kukatiza hutoka kwa xparameters.h. Kidhibiti cha kukatiza ni kazi ambayo tuliandika kwa DMA na GPIO, na usumbufu wa I2C unatoka kwa dereva wa Xlic I2C. Rejeleo la kifaa huelekeza kwa matukio ya kila kifaa ambacho tunaanzisha mahali pengine. Karibu na mwisho wa kazi ya _init_audio kitanzi hupitia kila kitu kwenye jedwali la usumbufu na huita kazi mbili, XScuGic_Connect () na XScuGic_Enable () kuungana na kuwezesha usumbufu. Wanataja xInterruptController, ambayo ni kidhibiti cha usumbufu iliyoundwa katika FreeRTOS main.c kwa msingi. Kwa hivyo kimsingi tunaambatanisha kila kukatika kwetu kwa kidhibiti hiki cha usumbufu ambacho tayari kilikuwa kimeundwa kwetu na FreeRTOS.

DMA

Nambari ya uanzishaji ya DMA huanza katika lh_main.c. Kwanza mfano tuli wa muundo wa XAxiDma unatangazwa. Halafu katika _init_audio () kazi hupangwa. Kwanza kazi ya kusanidi kutoka kwa mradi wa onyesho inaitwa, ambayo iko katika dma.c. Imeandikwa vizuri na inakuja moja kwa moja kutoka kwa onyesho. Kisha usumbufu huunganishwa na kuwezeshwa. Kwa mradi huu tu usumbufu wa bwana-kwa-mtumwa unahitajika, kwa sababu data zote zinatumwa na DMA kwa kidhibiti cha I2S. Ikiwa unataka kurekodi sauti, utahitaji pia kukatizwa kwa mtumwa-kwa-bwana. Usumbufu wa bwana-kwa-mtumwa huitwa wakati DMA inapomaliza kutuma data yoyote uliyoiambia itume. Usumbufu huu ni muhimu sana kwa mradi wetu kwa sababu kila wakati DMA inapomaliza kutuma bafa moja ya sampuli za sauti lazima ianze mara moja kutuma bafa inayofuata, au sivyo ucheleweshaji unaosikika utatokea kati ya utumaji. Ndani ya dma_mm2s_ISR () kazi unaweza kuona jinsi tunavyoshughulikia usumbufu. Sehemu muhimu iko karibu na mwisho ambapo tunatumia xSemaphoreGiveFromISR () na portYIELD_FROM_ISR () kuarifu _audio_task () kwamba inaweza kuanzisha uhamisho unaofuata wa DMA. Njia tunayotuma data ya sauti ya mara kwa mara ni kwa kubadilisha kati ya bafa mbili. Wakati bafa moja inapelekwa kwa kizuizi cha I2C bafa nyingine ina hesabu za hesabu na kuhifadhiwa. Halafu usumbufu unapotokea kutoka kwa DMA swichi ya bafa inayotumika na bafa iliyoandikwa hivi karibuni huanza kuhamishwa wakati bafa iliyohamishwa hapo awali inaanza kuandikishwa na data mpya. Sehemu muhimu ya kazi ya _audio_task ni pale fnAudioPlay () inaitwa. fnAudioPlay () inachukua mfano wa DMA, urefu wa bafa, na kiashiria kwa bafa ambayo data itahamishwa. Thamani chache zinatumwa kwa rejista za I2S ili kujua sampuli zaidi zinakuja. Kisha XAxiDma_SimpleTransfer () inaitwa kuanzisha uhamisho.

Sauti ya I2S

audio.c na audio.h ni pale ambapo uanzishaji wa I2S hufanyika. Nambari ya uanzishaji ya I2S ni chunk ya kawaida ya nambari inayozunguka katika maeneo kadhaa, unaweza kupata tofauti kidogo kutoka kwa vyanzo vingine lakini hii inapaswa kufanya kazi. Imeandikwa vizuri na haihitajiki sana kubadilishwa kwa mradi wa kinubi. Demo ya sauti ya DMA ambayo ilitoka ina kazi za kubadili mic au pembejeo za laini ili uweze kuzitumia ikiwa unahitaji utendaji huo.

Usanisi wa Sauti

Ili kuelezea jinsi usanisi wa sauti unavyofanya kazi, nitaorodhesha kila modeli za sauti zilizotumiwa katika ukuzaji ambazo zilisababisha njia ya mwisho, kwani itakupa hisia ya kwanini imefanywa jinsi inavyofanyika.

Njia 1: Kipindi kimoja cha maadili ya sine huhesabiwa kwa kila kamba kwa masafa yanayolingana ya maandishi ya muziki ya kamba na kuhifadhiwa katika safu. Kwa mfano, urefu wa safu itakuwa kipindi cha wimbi la sine katika sampuli, ambayo ni sawa na # ya sampuli / mzunguko. Ikiwa kiwango cha sampuli ni 48kHz na mzunguko wa noti ni 100Hz, basi kuna sampuli 48, 000 / pili na mizunguko 100 / pili inayoongoza kwa sampuli 4800 kwa kila mzunguko, na urefu wa safu itakuwa sampuli 4800 na itakuwa na maadili ya moja kamili kipindi cha wimbi la sine. Wakati kamba inachezwa, bafa ya sampuli ya sauti hujazwa kwa kuchukua thamani kutoka kwa safu ya mawimbi ya sine na kuiweka kwenye bafa ya sauti kama sampuli, kisha ikiongezea faharasa katika safu ya mawimbi ya sine ili kutumia mfano wetu wa zamani juu ya kozi ya sampuli 4800 mzunguko mmoja wa sine huwekwa kwenye bafa ya sauti. Operesheni ya modulo hutumiwa kwenye faharisi ya safu ili kila wakati iangalie kati ya 0 na urefu, na wakati faharisi ya safu inapita juu ya kizingiti fulani (kama labda sekunde 2 za sampuli) kamba imezimwa. Ili kucheza kamba nyingi kwa wakati mmoja, fuatilia faharisi ya safu ya kila kando kando na uongeze thamani kutoka kwa wimbi la kila kamba pamoja kupata kila sampuli.

Njia ya 2: Kuunda sauti zaidi ya muziki, tunaanza na modeli ya hapo awali na kuongeza ma-harmoniki kwa kila mzunguko wa kimsingi. Masafa ya Harmonic ni masafa ambayo ni idadi kubwa ya masafa ya kimsingi. Tofauti na wakati masafa mawili yasiyohusiana yamefupishwa pamoja, ambayo husababisha sauti mbili tofauti kuchezwa wakati huo huo, wakati harmoniki imeongezwa pamoja inaendelea kusikika kama sauti moja tu, lakini kwa sauti tofauti. Ili kufanikisha hili, kila wakati tunapoongeza thamani ya wimbi la sine kwenye eneo (safu ya safu% urefu wa safu) kwa sampuli ya sauti, tunaongeza pia (2 * safu index% urefu wa safu), na (3 * safu index% urefu wa safu), na kadhalika kwa maagizo mengi yanahitajika. Fahirisi hizi zilizoongezeka zitapita wimbi la sine kwa masafa ambayo ni hesabu kamili ya masafa ya asili. Ili kuruhusu udhibiti zaidi wa toni, maadili ya kila harmonic yanaongezwa na anuwai ambayo inawakilisha kiwango cha sauti hiyo kwa sauti ya jumla. Kwa mfano, wimbi la msingi la sine linaweza kuwa na maadili yote yamezidishwa na 6 kuifanya iwe sababu zaidi katika sauti ya jumla, wakati harmoniki ya 5 inaweza kuwa na kipatanishi cha 1, ikimaanisha maadili yake yanachangia kidogo kwa sauti ya jumla.

Njia ya 3: Sawa, kwa hivyo sasa tuna sauti nzuri kwenye daftari, lakini bado kuna shida muhimu sana: wanacheza kwa sauti iliyowekwa kwa muda uliowekwa. Ili kusikika kabisa kama chombo halisi ujazo wa kamba inayochezwa inapaswa kuoza vizuri kwa muda. Ili kufanikisha hili, safu imejazwa na maadili ya kazi ya kuoza kwa kasi. Sasa wakati sampuli za sauti zinaundwa, sauti inayotoka kwa kila kamba imehesabiwa kama kwa njia iliyotangulia lakini kabla ya kuongezwa kwenye sampuli ya sauti inazidishwa na thamani kwenye faharisi ya safu ya safu hiyo katika safu ya kazi ya uozo wa kielelezo. Hii inafanya sauti ipasuke vizuri kwa muda. Wakati faharisi ya safu inafikia mwisho wa safu ya kuoza, kamba imesimamishwa.

Njia ya 4: Hatua hii ya mwisho ndio inayowapa mshipi sauti zao halisi za kamba. Kabla ya wao kusikika kuwa ya kupendeza lakini wazi. Ili kujaribu kuiga bora kamba ya kinubi ya ulimwengu wa kweli, kiwango tofauti cha uozo kimepewa kila harmonic. Katika nyuzi halisi, wakati kamba inapigwa mara ya kwanza kuna yaliyomo juu ya sauti za juu za masafa ambayo huunda aina ya sauti ya kukwanyua tunayotarajia kutoka kwa kamba. Sauti hizi za sauti za juu sana kwa kifupi sana ni sehemu kuu ya sauti, sauti ya kamba inayopigwa, lakini huoza haraka sana wakati sauti ya polepole inachukua. Safu ya kuoza imeundwa kwa kila nambari ya usawa inayotumika katika usanisi wa sauti kila moja na kiwango chake cha kuoza. Sasa kila harmonic inaweza kuzidishwa kwa kujitegemea na thamani safu inayolingana ya kuoza kwenye faharisi ya safu ya kamba na kuongezwa kwa sauti.

Kwa jumla usanisi wa sauti ni wa angavu lakini hesabu ni nzito. Kuhifadhi sauti nzima ya kamba katika kumbukumbu mara moja itachukua kumbukumbu nyingi, lakini kuhesabu wimbi la sine na kazi ya ufafanuzi kati ya kila fremu itachukua muda mrefu sana kufuata kiwango cha uchezaji wa sauti. Ujanja kadhaa hutumiwa katika nambari ili kuharakisha hesabu. Hesabu zote isipokuwa katika uundaji wa kwanza wa sine na meza za kuoza kwa ufafanuzi hufanywa kwa muundo kamili, ambayo inahitaji kueneza nafasi inayopatikana ya nambari katika pato la sauti la 24. Kwa mfano, meza ya sine ni ya amplitude 150 ili iwe laini lakini sio kubwa sana kwamba kamba nyingi zinazochezwa pamoja zinaweza kuongeza kuwa zaidi ya bits 24. Vivyo hivyo, maadili ya kielelezo huongezewa na 80 kabla ya kuzungushwa kwa nambari na kuhifadhiwa. Uzito wa harmonic unaweza kuchukua maadili tofauti kati ya 0 na 10. Pia sampuli zote ni mara mbili na mawimbi ya sine yameorodheshwa na 2, kwa ufanisi kupunguza kiwango cha sampuli. Hii inapunguza kiwango cha juu kinachoweza kuchezwa, lakini ilikuwa muhimu kwa idadi ya sasa ya kamba na harmonics kuhesabiwa haraka vya kutosha.

Kuunda modeli hii ya sauti na kuifanya iweze kufanya kazi ilichukua juhudi kubwa kwa upande wa processor, na ingekuwa ngumu sana kuifanya iweze kufanya kazi kwa upande wa fpga kutoka mwanzoni mwa wakati wa mradi huu (fikiria lazima urejee kijito kila wakati kipande cha verilog kilibadilishwa kujaribu sauti). Walakini, kuifanya kwenye fpga kunaweza kuwa njia bora ya kuifanya, ikiwezekana kuondoa suala la kutokuwa na uwezo wa kuhesabu sampuli haraka vya kutosha na kuruhusu masharti zaidi, harmonics, na hata athari za sauti au kazi zingine kuendeshwa kwenye upande wa processor.

Hatua ya 6: Kuunganisha Sensorer

Kuunganisha Sensorer
Kuunganisha Sensorer

Ili kuunda masharti tulitumia sensorer za boriti za IR ambazo zitagundua wakati kamba inachezwa. Tuliamuru sensorer zetu kutoka kwa kiunga kifuatacho. Sensorer zina nguvu, ardhi, na waya wa data wakati watoaji wana nguvu tu na waya wa ardhini. Tulitumia v3.33 na pini za ardhini kutoka kwa vichwa vya PMOD kuwapa nguvu watoaji na sensorer. Ili kuwezesha sensorer zote na watoaji ni muhimu kuunganisha sensorer zote na mtoaji sawa. Waya za data kutoka kwa sensorer kila mmoja atahitaji kwenda kwenye pini yao ya jioni.

Hatua ya 7: Kuunda Mifupa

Kuunda Mifupa
Kuunda Mifupa

Ili kuunda umbo la kinubi vipande vitatu hutumiwa kama mifupa ili kuweka sensorer na vitoweo. Kwenye moja ya vipande viwili vya inchi 18 vya bomba la PVC pangilia sensorer na vitozi kwa mpangilio wa inchi 1.5 kutoka kwa kila mmoja na kisha uziweke kwenye bomba. Kwenye bomba lingine la PVC la inchi 18 linganisha sensorer na vitozi kwa mpangilio mbadala lakini hakikisha kumaliza agizo (i.e. ikiwa bomba la kwanza lilikuwa na sensor kwanza ya pili inapaswa kuwa na emitter kwanza na kinyume chake). Itakuwa muhimu kusambaza waya mrefu kwenye data, nguvu, na waya za ardhini ili kuhakikisha wataweza kufikia bodi.

Hatua ya 8: Kujenga Nje ya Mbao

Kujenga Nje ya Mbao
Kujenga Nje ya Mbao

Hatua hii ni ya hiari lakini inashauriwa sana. Nje ya kuni sio tu inafanya kinubi ionekane nzuri pia inalinda sensorer na waya kutokana na uharibifu. Sura ya kuni inaweza kuundwa na pete ya ukumbi wa mstatili kutoka kwa kuni. Ndani ya mstatili inahitaji kuwa na ufunguzi wa angalau inchi 1-1 / 2 kutoshea mifupa ya bomba na sensorer. Mara tu fremu ikijengwa chimba mashimo mawili ambayo yataruhusu waya kutoka kwa sensorer na kutolea nje ili kuziunganisha na bodi.

* Kumbuka: Inashauriwa kuongeza vituo vya ufikiaji ili kuweza kuondoa na kuingiza mifupa ya bomba ikiwa matengenezo yanahitajika kufanywa au marekebisho kidogo yanahitajika kufanywa.

Hatua ya 9: Kuweka Vipande vyote Pamoja

Kuweka Vipande vyote Pamoja
Kuweka Vipande vyote Pamoja

Mara tu hatua zote za awali zimekamilika ni wakati wa kujenga kinubi. Kwanza weka mifupa ya bomba ndani ya nje ya mbao. Kisha ingiza waya kwa sensorer na emitters kwenye eneo sahihi kwenye ubao. Kisha fungua SDK na bonyeza kitufe cha utatuzi ili kupanga bodi. Mara tu bodi inapopangiliwa kuziba vichwa vya sauti au spika. Kutegemea na ni sensor ipi inayoishia ambayo bandari ya pmod kamba zako za kinubi labda zitakuwa nje ya utaratibu kuanza. Kwa sababu inaweza kuwa ngumu kusema ni waya gani huenda kwa sensorer gani wakati waya nyingi zinahusika, tulijumuisha njia ya kupachika nambari za kamba kukatiza nafasi kidogo kwenye programu. Pata "static int sensor_map [NUM_STRINGS]" na urekebishe maadili katika safu hadi safu zicheze kutoka chini hadi juu kabisa.

Menyu inaweza kutumika kwa kufungua wastaafu wa serial (kwa mfano RealTerm) na kuweka kiwango cha baud hadi 115200 na onyesho kwa ANSI. Menyu inaweza kusafiri kwa kutumia funguo za w na s kusonga juu na chini na funguo za a na d kubadilisha maadili.

Hatua ya 10: ROCK OUT

Mara kinubi kinapofanya kazi kikamilifu. Bwana kinubi na usikilize sauti tamu ya muziki wako mwenyewe!

Ilipendekeza: