Talaan ng mga Nilalaman:

Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi: 4 na Hakbang (na may Mga Larawan)
Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi: 4 na Hakbang (na may Mga Larawan)

Video: Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi: 4 na Hakbang (na may Mga Larawan)

Video: Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi: 4 na Hakbang (na may Mga Larawan)
Video: Overview of Autonomic Disorders 2024, Nobyembre
Anonim
Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi
Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi
Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi
Paggamit ng Board ng Sensor ng Kompleksyon ng Sining upang Makontrol ang Purong Data Sa paglipas ng WiFi

Nais mo na bang mag-eksperimento sa kontrol sa paggalaw? Gumalaw ng mga bagay sa isang alon ng iyong kamay? Kontrolin ang musika gamit ang pag-ikot ng iyong pulso? Ipapakita sa iyo ng Instructable na ito kung paano!

Ang Lupon ng Sensor ng Sining ng Sining (complexarts.net) ay isang maraming nalalaman microcontroller batay sa ESP32 WROOM. Mayroon itong lahat ng mga tampok ng platform ng ESP32, kabilang ang built-in na WiFi at Bluetooth, at 23 na mai-configure na mga GPIO pin. Nagtatampok din ang Sensor Board ng BNO_085 IMU - isang 9 DOF motion processor na nagsasagawa ng onboard sensor fusion at equation ng quaternion, na nagbibigay ng sobrang tumpak na oryentasyon, gravity vector, at linear data data. Ang Sensor Board ay maaaring mai-program gamit ang Arduino, MicroPython, o ang ESP-IDF, ngunit para sa araling ito ay mai-program namin ang board kasama ang Arduino IDE. Mahalagang tandaan na ang mga module ng ESP32 ay hindi likas na mai-programmable mula sa Arduino IDE, ngunit ang paggawa ng posible ay napaka-simple; mayroong isang mahusay na tutorial dito: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ na dapat tumagal ng halos 2 minuto upang makumpleto. Ang huling piraso ng pag-setup na kailangan namin ay ang driver para sa USB-to-UART chip sa Sensor Board, na matatagpuan dito: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-driver. Piliin lamang ang iyong OS at i-install, na dapat tumagal ng halos 2 minuto. Kapag tapos na iyon, mahusay na tayong pumunta!

[Ang araling ito ay hindi ipinapalagay ang anumang pamilyar sa alinman sa Arduino o Purong Data, subalit hindi nito sasakupin ang kanilang pag-install. Ang Arduino ay matatagpuan sa aduino.cc. Ang Purong Data ay matatagpuan sa puredata.info. Ang parehong mga site ay may madaling sundin na mga tagubilin para sa pag-install at pag-set up.]

Gayundin … ang mga konsepto na sakop sa tutorial na ito, tulad ng pagse-set up ng mga koneksyon sa UDP, pagprograma ng ESP32 kasama ang Arduino, at pangunahing pagbuo ng Pure Data patch - ay mga bloke ng gusali na maaaring mailapat para sa hindi mabilang na mga proyekto, kaya't huwag tumiklop dito kapag mayroon ka na nakuha ang mga konseptong ito!

Mga gamit

1. Lupon ng Sensor ng Komplikadong Sining

2. Arduino IDE

3. Purong Data

Hakbang 1: Sinusuri ang Code:

Sinusuri ang Code
Sinusuri ang Code
Sinusuri ang Code
Sinusuri ang Code

Una, titingnan namin ang Arduino code. (Magagamit ang mapagkukunan sa https://github.com/ComplexArts/SensorBoardArduino. Inirerekumenda na sundin mo kasama ang code habang nagpupunta kami.) Kailangan namin ng ilang mga silid-aklatan, na ang isa ay hindi isang pangunahing silid arduino, kaya't ikaw maaaring kailanganing i-install ito. Ang proyektong ito ay umaasa sa SparkFun_BNO080_Arduino_Library.h file, kaya kung wala ka nito, kakailanganin mong pumunta sa Sketch -> Isama ang Library -> Pamahalaan ang Mga Aklatan. Mag-type sa "bno080" at lilitaw ang nabanggit na library. Pindutin ang install.

Ang iba pang tatlong mga aklatan na ginamit ay dapat na may Arduino bilang default. Una, gagamitin namin ang SPI library upang makipag-usap sa BNO. Posible ring gamitin ang UART sa pagitan ng ESP32 at ng BNO, ngunit dahil ang SparkFun ay mayroon nang isang silid-aklatan na gumagamit ng SPI, mananatili kami doon. (Salamat, SparkFun!) Ang pagsasama ng SPI.h file ay magpapahintulot sa amin na piliin kung aling mga pin at port ang nais naming gamitin para sa komunikasyon ng SPI.

Naglalaman ang library ng WiFi ng mga pagpapaandar na nagbibigay-daan sa amin upang makapunta sa isang wireless network. Naglalaman ang WiFiUDP ng mga pagpapaandar na nagpapahintulot sa amin na magpadala at makatanggap ng data sa network na iyon. Ang susunod na dalawang linya ay makukuha sa amin sa network - ipasok ang iyong pangalan sa network at password. Ang dalawang linya pagkatapos nito ay tumutukoy sa address ng network at port kung saan kami nagpapadala ng aming data. Sa kasong ito, ipapalabas lang namin, na nangangahulugang ipadala ito sa sinuman sa aming network na nakikinig. Tinutukoy ng numero ng port kung sino ang nakikinig, tulad ng makikita natin nang kaunti.

Ang susunod na dalawang linya na ito ay lumilikha ng mga miyembro para sa kani-kanilang klase upang madali naming ma-access ang kanilang mga function sa paglaon.

Susunod, itatalaga namin ang mga tamang pin ng ESP sa kani-kanilang mga pin sa BNO.

Ngayon ay nai-set up namin ang miyembro ng klase ng SPI, naitatakda din ang bilis ng SPI port.

Sa wakas nakarating kami sa pag-andar ng pag-setup. Dito, magsisimula kami ng isang serial port upang masubaybayan namin ang aming output sa ganoong paraan kung nais namin. Pagkatapos ay sinisimulan namin ang WiFi. Pansinin na ang programa ay naghihintay para sa isang koneksyon sa WiFi bago magpatuloy. Kapag nakakonekta ang WiFi, sinisimulan namin ang koneksyon ng UDP, pagkatapos ay i-print ang aming pangalan ng network at ang aming IP address sa serial monitor. Pagkatapos nito simulan namin ang SPI port at suriin para sa komunikasyon sa pagitan ng ESP at ng BNO. Panghuli, tinawag namin ang pagpapaandar na "paganahin angRotationVector (50);" dahil gagamitin lang namin ang rotation vector para sa araling ito.

Hakbang 2: Ang Pahinga ng Code…

Ang Natitirang Kodigo …
Ang Natitirang Kodigo …

Bago kami pumunta sa pangunahing loop (), mayroon kaming isang function na tinatawag na "mapFloat."

Ito ay isang pasadyang pagpapaandar na naidagdag namin upang mapa, o masukat, ang mga halaga sa iba pang mga halaga. Pinapayagan lamang ng built-in na pagpapaandar ng mapa sa Arduino ang pagmamapa ng integer, ngunit ang lahat ng aming mga paunang halaga mula sa BNO ay nasa pagitan ng -1 at 1, kaya kailangan nating manu-manong sukatin ang mga ito sa mga halagang talagang nais namin. Gayunpaman, walang pag-aalala - narito ang simpleng pagpapaandar upang magawa iyon:

Ngayon nakarating kami sa pangunahing loop (). Ang unang bagay na mapapansin mo ay isa pang pag-andar sa pag-block, tulad ng isang naghihintay sa programa para sa isang koneksyon sa network. Ang isang ito ay hihinto hanggang sa may data mula sa BNO. Kapag sinimulan naming matanggap ang data na iyon, itatalaga namin ang mga papasok na halaga ng quaternion sa mga variable na lumulutang point at i-print ang data na iyon sa serial monitor.

Ngayon kailangan naming i-map ang mga halagang iyon.

[Isang salita tungkol sa komunikasyon sa UDP: ang data ay inililipat sa paglipas ng UDP sa 8-bit packet, o mga halagang 0-255. Anumang higit sa 255 ay itutulak sa susunod na packet, pagdaragdag sa halaga nito. Samakatuwid, kailangan nating tiyakin na walang mga halagang higit sa 255.]

Tulad ng nabanggit dati, mayroon kaming mga papasok na halaga sa saklaw na -1 - 1. Hindi ito nagbibigay sa amin ng maraming mapagtatrabaho, dahil ang anumang mas mababa sa 0 ay mapuputol (o magpapakita bilang 0) at hindi namin magawa isang tonelada na may mga halaga sa pagitan ng 0 - 1. Kailangan muna naming magdeklara ng isang bagong variable upang hawakan ang aming na-map na halaga, pagkatapos ay kukunin namin ang paunang variable at i-map ito mula sa -1 - 1 hanggang 0 - 255, itinalaga ang resulta sa aming bagong variable na tinawag Nx.

Ngayon na mayroon na kaming naka-map na data, maaari naming pagsamahin ang aming packet. Upang magawa iyon, dapat naming ideklara ang isang buffer para sa packet data, bibigyan ito ng isang laki ng [50] upang matiyak na magkasya ang lahat ng data. Pagkatapos ay sinisimulan namin ang packet sa address at port na tinukoy namin sa itaas, isulat ang aming buffer at 3 halaga sa to packet, pagkatapos ay wakasan ang packet.

Panghuli, nai-print namin ang aming mga naka-mapa na coordinate sa serial monitor. Ngayon ang Arduino code ay tapos na! I-flash ang code sa Sensor Board at suriin ang serial monitor upang matiyak na gumagana ang lahat ayon sa inaasahan. Dapat mong makita ang mga halaga ng quaternion pati na rin ang mga na-map na halaga.

Hakbang 3: Kumokonekta Sa Purong Data …

Kumokonekta Sa Purong Data …
Kumokonekta Sa Purong Data …

Ngayon para sa Purong Data! Buksan ang Purong Data at magsimula ng isang bagong patch (ctrl n). Ang patch na lilikha namin ay napaka-simple, mayroon lamang pitong mga bagay. Ang unang gagawin namin ay ang [netreceive] na bagay. Ito ang tinapay at mantikilya ng aming patch, paghawak ng lahat ng komunikasyon sa UDP. Pansinin mayroong tatlong mga argumento para sa bagay na [netreceive]; tinutukoy ng -u ang UDP, tinutukoy ng -b ang binary, at ang 7401 ay syempre ang port na nakikinig sa amin. Maaari mo ring ipadala ang mensahe na "makinig 7401" sa [netreceive] upang tukuyin ang iyong port.

Kapag mayroon kaming papasok na data, kailangan namin itong i-unpack. Kung ikinonekta namin ang isang [naka-print] na object sa [netrecieve], maaari naming makita ang data na sa una ay dumating sa amin bilang isang stream ng mga numero, ngunit nais naming i-parse ang mga numerong iyon at gamitin ang bawat isa para sa isang bagay na naiiba. Halimbawa, baka gusto mong gamitin ang pag-ikot ng X-axis upang makontrol ang pitch ng isang oscillator, at ang Y-axis para sa dami, o anumang bilang ng iba pang mga posibilidad. Upang magawa iyon, dumadaan ang stream ng data sa isang [i-unpack] na bagay na mayroong tatlong float (f f f) ang mga argumento nito.

Ngayong malayo ka na, ang mundo ay ang iyong talaba! Mayroon kang isang wireless controller na maaari mong gamitin upang manipulahin ang anumang nais mo sa uniberso ng Purong Data. Ngunit huminto ka diyan! Bukod sa Rotation Vector, subukan ang accelerometer o ang magnetometer. Subukang gumamit ng mga espesyal na pagpapaandar ng BNO tulad ng "double tap" o "shake". Ang kailangan lang nito ay isang maliit na paghuhukay sa mga manwal ng gumagamit (o sa susunod na Makatuturo…).

Hakbang 4:

Ang nagawa namin sa itaas ay ang pag-set up ng komunikasyon sa pagitan ng Sensor Board at Purong Data. Kung nais mong simulan ang pagkakaroon ng mas masaya, i-hook up ang iyong mga output ng data sa ilang mga oscillator! Maglaro ng may kontrol sa dami! Siguro kontrolin ang ilang mga pagkaantala ng oras o reverb! ang mundo ay iyong talaba!

Inirerekumendang: