Orodha ya maudhui:

Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi: Hatua 4 (na Picha)
Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi: Hatua 4 (na Picha)

Video: Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi: Hatua 4 (na Picha)

Video: Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi: Hatua 4 (na Picha)
Video: Я ОДЕРЖИМЫЙ ДЕМОНАМИ 2024, Novemba
Anonim
Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi
Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi
Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi
Kutumia Bodi ya Sensor ya Sanaa tata kudhibiti data safi juu ya WiFi

Je! Umewahi kutaka kujaribu majaribio ya kudhibiti ishara? Fanya vitu kusonga na wimbi la mkono wako? Dhibiti muziki kwa kupotosha mkono wako? Agizo hili litaonyesha jinsi!

Bodi ya Sensor ya Sanaa tata (complexarts.net) ni mdhibiti mdogo anayeweza kutekelezwa kulingana na ESP32 WROOM. Ina sifa zote za jukwaa la ESP32, pamoja na WiFi iliyojengwa na Bluetooth, na pini 23 zinazoweza kusanidiwa za GPIO. Bodi ya sensorer pia ina BNO_085 IMU - processor 9 ya mwendo wa DOF ambayo hufanya fusion ya sensorer ya ndani na hesabu za quaternion, ikitoa mwelekeo sahihi kabisa, vector ya mvuto, na data ya kasi ya kasi. Bodi ya Sensor inaweza kusanidiwa kwa kutumia Arduino, MicroPython, au ESP-IDF, lakini kwa somo hili tutakuwa tukipanga bodi na IDE ya Arduino. Ni muhimu kutambua kwamba moduli za ESP32 hazijapangwa kiasili kutoka kwa IDE ya Arduino, lakini kuifanya iwezekane ni rahisi sana; kuna mafunzo mazuri hapa: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ ambayo inapaswa kuchukua kama dakika 2 kukamilisha. Sehemu ya mwisho ya usanidi tunahitaji ni dereva wa chip ya USB-to-UART kwenye Bodi ya Sensor, ambayo inaweza kupatikana hapa: https://www.silabs.com/products/development-tools/software/usb-to -dereva-daraja-vcp-madereva. Chagua tu OS yako na usakinishe, ambayo inapaswa kuchukua kama dakika 2 zaidi. Mara baada ya kumaliza, tuko vizuri kwenda!

[Somo hili halifikirii kujuana yoyote na Arduino au Takwimu safi, hata hivyo haitafunika usanikishaji wao. Arduino inaweza kupatikana kwa aduino.cc. Takwimu safi zinaweza kupatikana kwenye puredata.info. Tovuti zote mbili zina maagizo rahisi kufuata ya usanidi na usanidi.]

Pia… dhana zilizofunikwa katika mafunzo haya, kama vile kuanzisha unganisho la UDP, kupanga programu ya ESP32 na Arduino, na jengo la msingi la Takwimu safi - ni vizuizi vya ujenzi ambavyo vinaweza kutumika kwa miradi isitoshe, kwa hivyo usisimame hapa mara tu got dhana hizi chini!

Vifaa

1. Bodi ya Sensor ya Sanaa tata

2. Arduino IDE

3. Takwimu safi

Hatua ya 1: Kuchunguza Kanuni:

Kuchunguza Kanuni
Kuchunguza Kanuni
Kuchunguza Kanuni
Kuchunguza Kanuni

Kwanza, tutaangalia nambari ya Arduino. (Chanzo kinapatikana katika https://github.com/ComplexArts/SensorBoardArduino. Inashauriwa ufuate pamoja na nambari tunapoenda.) Tunahitaji maktaba kadhaa, ambayo moja sio maktaba ya msingi ya Arduino, kwa hivyo wewe inaweza kuhitaji kuiweka. Mradi huu unategemea faili ya SparkFun_BNO080_Arduino_Library.h, kwa hivyo ikiwa huna hiyo, utahitaji kwenda kwa Mchoro -> Jumuisha Maktaba -> Simamia Maktaba. Andika kwenye "bno080" na maktaba iliyotajwa hapo juu itaonekana. Bonyeza kufunga.

Maktaba mengine matatu ambayo hutumiwa yanapaswa kuja na Arduino kwa chaguo-msingi. Kwanza, tutatumia maktaba ya SPI kuwasiliana na BNO. Inawezekana pia kutumia UART kati ya ESP32 na BNO, lakini kwa kuwa SparkFun tayari ina maktaba inayotumia SPI, tutashikamana nayo. (Asante, SparkFun!) Ikiwa ni pamoja na faili ya SPI.h itaturuhusu kuchagua pini na bandari ambazo tunataka kutumia kwa mawasiliano ya SPI.

Maktaba ya WiFi ina kazi ambazo zinaturuhusu kuingia kwenye mtandao wa wireless. WiFiUDP ina kazi zinazoturuhusu kutuma na kupokea data juu ya mtandao huo. Mistari miwili inayofuata hutupata kwenye mtandao - ingiza jina lako la mtandao na nywila. Mistari miwili baada ya hapo inataja anwani ya mtandao na bandari ambayo tunatuma data yetu. Katika kesi hii, tutatangaza tu, ambayo inamaanisha kumtuma mtu yeyote kwenye mtandao wetu anayesikiliza. Nambari ya bandari huamua ni nani anayesikiliza, kama tutakavyoona kidogo.

Mistari miwili inayofuata huunda washiriki kwa madarasa yao ili tuweze kupata kazi zao kwa urahisi baadaye.

Ifuatayo, tunapeana pini sahihi za ESP kwa pini zao kwenye BNO.

Sasa tunaanzisha mshiriki wa darasa la SPI, pia kuweka kasi ya bandari ya SPI.

Mwishowe tunapata kazi ya usanidi. Hapa, tutaanza bandari ya serial ili tuweze kufuatilia pato letu kwa njia hiyo ikiwa tunataka. Kisha tunaanza WiFi. Ona kwamba programu inasubiri muunganisho wa WiFi kabla ya kuendelea. Mara baada ya WiFi kushikamana, tunaanza unganisho la UDP, kisha chapisha jina letu la mtandao na anwani yetu ya IP kwa mfuatiliaji wa serial. Baada ya hapo tunaanza bandari ya SPI na kuangalia mawasiliano kati ya ESP na BNO. Mwishowe, tunaita kazi hiyo "kuwezeshaRotationVector (50);" kwani tutatumia vector ya kuzungusha tu kwa somo hili.

Hatua ya 2: Kanuni Zilizobaki…

Kanuni Zilizobaki…
Kanuni Zilizobaki…

Kabla ya kwenda kwenye kitanzi kuu (), tuna kazi inayoitwa "mapFloat."

Hii ni kazi ya kawaida ambayo tumeongeza ili kuweka ramani, au kupima viwango kwa maadili mengine. Kazi ya ramani iliyojengwa katika Arduino inaruhusu tu ramani kamili, lakini maadili yetu yote ya awali kutoka BNO yatakuwa kati ya -1 na 1, kwa hivyo itabidi tuwapime kwa maadili tunayotaka. Hakuna wasiwasi, ingawa - hapa kuna kazi rahisi kufanya hivyo tu:

Sasa tunakuja kwenye kitanzi kuu (). Jambo la kwanza utagundua ni kazi nyingine ya kuzuia, kama ile ambayo inafanya mpango kusubiri unganisho la mtandao. Huyu anasimama hadi kuwe na data kutoka kwa BNO. Tunapoanza kupokea data hiyo, tunapeana nambari zinazoingia za quaternion kwa vigeu vya alama vinavyoelea na kuchapisha data hiyo kwa mfuatiliaji wa serial.

Sasa tunahitaji kuweka ramani kwa maadili hayo.

[Neno kuhusu mawasiliano ya UDP: data inahamishwa juu ya UDP katika pakiti 8-bit, au maadili kutoka 0-255. Chochote zaidi ya 255 kitasukumwa kwenye pakiti inayofuata, na kuongeza thamani yake. Kwa hivyo, tunahitaji kuhakikisha kuwa hakuna maadili zaidi ya 255.]

Kama ilivyotajwa hapo awali, tuna maadili yanayokuja katika anuwai ya -1 - 1. Hii haitupatii mengi ya kufanya kazi nayo, kwani kila kitu chini ya 0 kitakatwa (au itaonyeshwa kama 0) na hatuwezi kufanya tani yenye maadili kati ya 0 - 1. Kwanza tunapaswa kutangaza tofauti mpya kushikilia dhamana yetu iliyowekwa ramani, kisha tunachukua ubadilishaji wa awali na kuupa ramani kutoka -1 - 1 hadi 0 - 255, tukitoa matokeo kwa ubadilishaji wetu mpya uitwao Nx.

Sasa kwa kuwa tuna data yetu ya ramani, tunaweza kuweka pakiti yetu pamoja. Ili kufanya hivyo, ni lazima tutangaze bafa ya data ya pakiti, na kuipatia saizi ya [50] ili kuhakikisha kuwa data zote zitatoshea. Kisha tunaanza pakiti na anwani na bandari tuliyoainisha hapo juu, andika bafa yetu na maadili 3 kwa pakiti, kisha maliza pakiti.

Mwishowe, tunachapisha kuratibu zetu zilizopangwa kwa mfuatiliaji wa serial. Sasa nambari ya Arduino imefanywa! Piga msimbo kwenye Bodi ya Sensor na angalia mfuatiliaji wa serial ili kuhakikisha kila kitu kinafanya kazi kama inavyotarajiwa. Unapaswa kuona maadili ya quaternion pamoja na maadili yaliyopangwa.

Hatua ya 3: Kuunganisha na Takwimu safi…

Inaunganisha na Takwimu safi…
Inaunganisha na Takwimu safi…

Sasa kwa Takwimu safi! Fungua Takwimu safi na anza kiraka kipya (ctrl n). Kiraka ambacho tutatengeneza ni rahisi sana, kuwa na vitu saba tu. Ya kwanza tutakayounda ni kitu [cha kupokea]. Huu ndio mkate na siagi ya kiraka chetu, inayoshughulikia mawasiliano yote ya UDP. Angalia kuna hoja tatu za kitu [cha kupokea]; -u inabainisha UDP, -b inataja binary, na 7401 ni kweli bandari ambayo tunasikiliza. Unaweza pia kutuma ujumbe wa "sikiliza 7401" kwa [netreceive] kutaja bandari yako.

Mara tu tunapokuwa na data inayoingia, tunahitaji kuifungua. Ikiwa tutaunganisha kitu [cha kuchapisha] kwa [nambari], tunaweza kuona data mwanzoni inatujia kama mkondo wa nambari, lakini tunataka kuchanganua nambari hizo na kutumia kila moja kwa kitu tofauti. Kwa mfano, unaweza kutaka kutumia mzunguko wa mhimili wa X kudhibiti upeo wa oscillator, na mhimili wa Y kwa ujazo, au idadi yoyote ya uwezekano mwingine. Ili kufanya hivyo, mkondo wa data hupitia kitu [kifungue] kilicho na kuelea tatu (f f f) ni hoja zake.

Sasa kwa kuwa uko hapa, ulimwengu ni chaza yako! Una kidhibiti kisichotumia waya ambacho unaweza kutumia kudhibiti chochote unachotaka katika ulimwengu safi wa Takwimu. Lakini acha hapo! Licha ya Mzunguko Vector, jaribu kipima kasi au kipima nguvu. Jaribu kutumia kazi maalum za BNO kama "bomba mara mbili" au "kutikisa". Yote inachukua ni kuchimba kidogo katika miongozo ya mtumiaji (au inayofuata inayoweza kufundishwa…).

Hatua ya 4:

Kile tumefanya hapo juu ni kuanzisha mawasiliano kati ya Bodi ya Sensor na Takwimu safi. Ikiwa unataka kuanza kujifurahisha zaidi, funga matokeo yako ya data kwa oscillators kadhaa! Cheza na kudhibiti sauti! Labda dhibiti nyakati za kuchelewesha au reverb! dunia ni chaza yako!

Ilipendekeza: