Satura rādītājs:

Kompleksās mākslas sensoru plates izmantošana tīru datu kontrolei, izmantojot WiFi: 4 soļi (ar attēliem)
Kompleksās mākslas sensoru plates izmantošana tīru datu kontrolei, izmantojot WiFi: 4 soļi (ar attēliem)

Video: Kompleksās mākslas sensoru plates izmantošana tīru datu kontrolei, izmantojot WiFi: 4 soļi (ar attēliem)

Video: Kompleksās mākslas sensoru plates izmantošana tīru datu kontrolei, izmantojot WiFi: 4 soļi (ar attēliem)
Video: Paradise or Oblivion 2024, Jūlijs
Anonim
Izmantojot komplekso mākslas sensoru paneli, lai kontrolētu tīrus datus, izmantojot WiFi
Izmantojot komplekso mākslas sensoru paneli, lai kontrolētu tīrus datus, izmantojot WiFi
Izmantojot komplekso mākslas sensoru paneli, lai kontrolētu tīrus datus, izmantojot WiFi
Izmantojot komplekso mākslas sensoru paneli, lai kontrolētu tīrus datus, izmantojot WiFi

Vai esat kādreiz vēlējies eksperimentēt ar žestu kontroli? Likt lietām kustēties ar rokas vicināšanu? Kontrolēt mūziku ar rokas pagriezienu? Šī pamācība parādīs, kā!

Complex Arts Sensor Board (complexarts.net) ir daudzpusīgs mikrokontrolleris, kura pamatā ir ESP32 WROOM. Tam ir visas ESP32 platformas funkcijas, ieskaitot iebūvēto WiFi un Bluetooth, un 23 konfigurējamas GPIO tapas. Sensoru panelī ir arī BNO_085 IMU - 9 DOF kustības procesors, kas veic iebūvētu sensoru saplūšanas un kvaternionu vienādojumus, nodrošinot īpaši precīzu orientāciju, gravitācijas vektoru un lineārā paātrinājuma datus. Sensora paneli var ieprogrammēt, izmantojot Arduino, MicroPython vai ESP-IDF, taču šajā nodarbībā mēs programmēsim dēli ar Arduino IDE. Ir svarīgi atzīmēt, ka ESP32 moduļi nav sākotnēji programmējami no Arduino IDE, taču to izdarīt ir ļoti vienkārši; šeit ir lieliska apmācība: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, kuras izpildei vajadzētu aizņemt apmēram 2 minūtes. Pēdējais mums nepieciešamais iestatīšanas elements ir USB-UART mikroshēmas draiveris sensora panelī, kuru var atrast šeit: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-draiveri. Vienkārši izvēlieties savu OS un instalējiet to, un tam vajadzētu aizņemt vēl aptuveni 2 minūtes. Kad tas ir izdarīts, mums ir labi doties!

[Šī nodarbība neuzņemas nekādas zināšanas par Arduino vai Pure Data, tomēr tā neaptvers to instalēšanu. Arduino var atrast vietnē aduino.cc. Tīrus datus var atrast vietnē puredata.info. Abās vietnēs ir viegli izpildāmas instalēšanas un iestatīšanas instrukcijas.]

Arī… šajā apmācībā aplūkotie jēdzieni, piemēram, UDP savienojumu iestatīšana, ESP32 programmēšana ar Arduino un pamata Pure Data ielāpu veidošana - ir pamatelementi, kurus var izmantot neskaitāmiem projektiem, tāpēc nekavējieties šeit, kad esat nojauca šos jēdzienus!

Piegādes

1. Kompleksa mākslas sensoru panelis

2. Arduino IDE

3. Tīri dati

1. darbība: koda pārbaude:

Koda pārbaude
Koda pārbaude
Koda pārbaude
Koda pārbaude

Pirmkārt, mēs apskatīsim Arduino kodu. (Avots ir pieejams vietnē https://github.com/ComplexArts/SensorBoardArduino. Ieteicams sekot līdzi kodam.) Mums ir vajadzīgas dažas bibliotēkas, no kurām viena nav Arduino galvenā bibliotēka. var būt nepieciešams to instalēt. Šis projekts balstās uz failu SparkFun_BNO080_Arduino_Library.h, tādēļ, ja jums tā nav, jums būs jādodas uz Sketch -> Include Library -> Manage Libraries. Ierakstiet “bno080”, un parādīsies iepriekš minētā bibliotēka. Nospiediet instalēt.

Pārējām trim izmantotajām bibliotēkām pēc noklusējuma ir jābūt Arduino. Pirmkārt, mēs izmantosim SPI bibliotēku, lai sazinātos ar BNO. Ir iespējams arī izmantot UART starp ESP32 un BNO, taču, tā kā SparkFun jau ir bibliotēka, kas izmanto SPI, mēs pie tā paliksim. (Paldies, SparkFun!) SPI.h faila iekļaušana ļaus mums izvēlēties, kuras tapas un portus mēs vēlamies izmantot SPI komunikācijai.

WiFi bibliotēkā ir funkcijas, kas ļauj mums piekļūt bezvadu tīklam. WiFiUDP satur funkcijas, kas ļauj mums nosūtīt un saņemt datus šajā tīklā. Nākamās divas rindas mūs novirza uz tīklu - ievadiet tīkla nosaukumu un paroli. Divas rindas pēc tam norāda tīkla adresi un portu, uz kuru mēs sūtām savus datus. Šajā gadījumā mēs tikai pārraidīsim, kas nozīmē, ka nosūtiet to ikvienam mūsu tīklā, kurš klausās. Porta numurs nosaka, kas klausās, kā mēs redzēsim pēc brīža.

Šīs divas nākamās rindas izveido dalībniekus savām klasēm, lai vēlāk varētu viegli piekļūt viņu funkcijām.

Tālāk mēs piešķiram pareizās ESP tapas attiecīgajām BNO tapām.

Tagad mēs izveidojām SPI klases dalībnieku, iestatot arī SPI porta ātrumu.

Visbeidzot, mēs nonākam pie iestatīšanas funkcijas. Šeit mēs sāksim seriālo portu, lai mēs varētu šādā veidā pārraudzīt savu produkciju, ja mēs to vēlamies. Tad mēs sākam WiFi. Ņemiet vērā, ka programma pirms turpināšanas gaida WiFi savienojumu. Kad WiFi ir pievienots, mēs sākam UDP savienojumu, pēc tam sērijas monitorā izdrukājam tīkla nosaukumu un IP adresi. Pēc tam mēs sākam SPI portu un pārbaudām saziņu starp ESP un BNO. Visbeidzot, mēs saucam funkciju “enableRotationVector (50);” jo šajā nodarbībā mēs izmantosim tikai rotācijas vektoru.

2. darbība: pārējais kods…

Pārējais kodekss…
Pārējais kodekss…

Pirms doties uz galveno cilpu (), mums ir funkcija ar nosaukumu “mapFloat”.

Šī ir pielāgota funkcija, ko esam pievienojuši, lai kartētu vai mērogot vērtības ar citām vērtībām. Iebūvētā kartes funkcija Arduino ļauj veikt tikai veselu skaitļu kartēšanu, taču visas mūsu sākotnējās vērtības no BNO būs no -1 līdz 1, tāpēc mums tās būs manuāli jāsaskaņo līdz vērtībām, kuras mēs patiešām vēlamies. Tomēr neuztraucieties - šeit ir vienkārša funkcija, lai to izdarītu:

Tagad mēs nonākam pie galvenās cilpas (). Pirmā lieta, ko pamanīsit, ir cita bloķēšanas funkcija, piemēram, tā, kas liek programmai gaidīt tīkla savienojumu. Tas apstājas, līdz ir dati no BNO. Kad mēs sākam saņemt šos datus, mēs piešķiram ienākošās kvaternijas vērtības peldošā komata mainīgajiem un izdrukājam šos datus sērijas monitorā.

Tagad mums ir jāapraksta šīs vērtības.

[Vārds par UDP komunikāciju: dati tiek pārsūtīti pa UDP 8 bitu paketēs vai vērtības no 0 līdz 255. Viss, kas pārsniedz 255, tiks pārvietots uz nākamo paketi, palielinot tā vērtību. Tāpēc mums ir jāpārliecinās, ka vērtības nepārsniedz 255.]

Kā minēts iepriekš, mūsu ienākošās vērtības ir diapazonā no -1 līdz 1. Tas nedod daudz, ar ko strādāt, jo viss, kas ir zemāks par 0, tiks pārtraukts (vai parādīts kā 0), un mēs to nevaram izdarīt tonnu ar vērtībām no 0 līdz 1. Vispirms mums ir jādeklarē jauns mainīgais, lai saglabātu mūsu kartēto vērtību, tad mēs ņemam šo sākotnējo mainīgo un kartējam to no -1 -1 līdz 0 -255, piešķirot rezultātu mūsu jaunajam mainīgajam, ko sauc Nx.

Tagad, kad mums ir mūsu kartētie dati, mēs varam salikt savu paketi. Lai to izdarītu, mums ir jāpaziņo pakešu datu buferis, piešķirot tam izmēru [50], lai pārliecinātos, ka visi dati būs piemēroti. Pēc tam mēs sākam paketi ar iepriekš norādīto adresi un portu, ierakstām savu buferi un 3 vērtības līdz paketei, pēc tam pabeidzam paketi.

Visbeidzot, mēs izdrukājam savas kartētās koordinātas sērijas monitorā. Tagad Arduino kods ir pabeigts! Pārsūtiet kodu uz sensoru paneli un pārbaudiet sērijas monitoru, lai pārliecinātos, ka viss darbojas, kā paredzēts. Jums vajadzētu redzēt kvaterniona vērtības, kā arī kartētās vērtības.

3. darbība. Savienojuma izveide ar tīrajiem datiem…

Savienojuma izveide ar tīrajiem datiem…
Savienojuma izveide ar tīrajiem datiem…

Tagad par tīrajiem datiem! Atveriet Pure Data un sāciet jaunu ielāpu (ctrl n). Izveidotais ielāps ir ļoti vienkāršs, un tajā ir tikai septiņi objekti. Pirmais, ko mēs izveidosim, ir objekts [netrecept]. Šī ir mūsu plākstera maize un sviests, kas apstrādā visu UDP komunikāciju. Ievērojiet, ka objektam [netrecept] ir trīs argumenti; -u norāda UDP, -b norāda bināro, un 7401, protams, ir ports, kurā mēs klausāmies. Varat arī nosūtīt ziņojumu “klausīties 7401” uz [netrecept], lai norādītu savu portu.

Kad būsim saņēmuši datus, mums tie jāizpako. Ja mēs pievienojam [print] objektu [netrecieve], mēs varam redzēt, ka dati sākotnēji nonāk pie mums kā skaitļu plūsma, taču mēs vēlamies parsēt šos numurus un izmantot katru no tiem citam. Piemēram, jūs varat izmantot X ass rotāciju, lai kontrolētu oscilatora soli, un Y asi-skaļumam, vai jebkuru citu iespēju skaitu. Lai to izdarītu, datu straume iet caur [izpako] objektu, kuram ir trīs pludiņi (f f f).

Tagad, kad esat tik tālu, pasaule ir jūsu austere! Jums ir bezvadu kontrolieris, kuru varat izmantot, lai manipulētu ar visu, ko vēlaties Pure Data Visumā. Bet apstājies! Papildus rotācijas vektoram izmēģiniet akselerometru vai magnetometru. Mēģiniet izmantot īpašas BNO funkcijas, piemēram, “dubultskāriens” vai “krata”. Viss, kas jums nepieciešams, ir nedaudz rakt lietotāja rokasgrāmatās (vai nākamajā instrukcijā …).

4. solis:

Iepriekš mēs esam izveidojuši saziņu starp sensoru paneli un tīrajiem datiem. Ja vēlaties sākt izklaidēties, pievienojiet savu datu izvadi dažiem oscilatoriem! Spēlējiet ar skaļuma kontroli! Varbūt kontrolējiet kādu kavēšanās laiku vai reverbu! pasaule ir tava austere!

Ieteicams: