Turinys:

„Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“: 4 žingsniai (su nuotraukomis)
„Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“: 4 žingsniai (su nuotraukomis)

Video: „Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“: 4 žingsniai (su nuotraukomis)

Video: „Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“: 4 žingsniai (su nuotraukomis)
Video: FULL BUILD | Rebuilding A DESTROYED Porsche 911 Turbo! 2024, Lapkritis
Anonim
„Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“
„Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“
„Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“
„Complex Arts“jutiklių plokštės naudojimas gryniems duomenims valdyti per „WiFi“

Ar kada nors norėjote eksperimentuoti su gestų valdymu? Priversti daiktus judėti rankos mostu? Valdykite muziką sukdami riešą? Ši instrukcija parodys, kaip tai padaryti!

„Complex Arts Sensor Board“(complexarts.net) yra universalus mikrovaldiklis, pagrįstas ESP32 WROOM. Jis turi visas ESP32 platformos funkcijas, įskaitant įmontuotą „WiFi“ir „Bluetooth“, ir 23 konfigūruojamus GPIO kaiščius. Jutiklių plokštėje taip pat yra BNO_085 IMU - 9 DOF judesio procesorius, kuris atlieka borto jutiklių sintezės ir kvartero lygtis, suteikdamas itin tikslią orientaciją, gravitacijos vektorių ir tiesinio pagreičio duomenis. Jutiklių plokštę galima užprogramuoti naudojant „Arduino“, „MicroPython“arba ESP-IDF, tačiau šioje pamokoje mes programuosime plokštę naudodami „Arduino IDE“. Svarbu pažymėti, kad ESP32 moduliai nėra programuojami iš „Arduino IDE“, tačiau tai padaryti yra labai paprasta; čia yra puiki pamoka: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, kuri turėtų užtrukti apie 2 minutes. Paskutinė sąrankos dalis, kurios mums reikia, yra USB-UART lusto tvarkyklė, esanti jutiklių plokštėje, kurią rasite čia: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-vairuotojai. Tiesiog pasirinkite savo OS ir įdiekite, o tai turėtų užtrukti dar apie 2 minutes. Kai tai bus padaryta, mes galime eiti!

[Šioje pamokoje nėra jokių žinių apie „Arduino“ar „Pure Data“, tačiau ji neapims jų diegimo. „Arduino“galima rasti adresu aduino.cc. „Pure Data“galite rasti svetainėje puredata.info. Abiejose svetainėse yra lengvai sekamos diegimo ir sąrankos instrukcijos.]

Taip pat… šioje pamokoje aptariamos sąvokos, tokios kaip UDP ryšių nustatymas, ESP32 programavimas naudojant „Arduino“ir pagrindinis „Pure Data“pataisos kūrimas - yra statybiniai blokai, kuriuos galima pritaikyti daugybei projektų, todėl nesileiskite čia suprato šias sąvokas!

Prekės

1. Kompleksinė menų jutiklių lenta

2. „Arduino IDE“

3. Gryni duomenys

1 žingsnis: išnagrinėkite kodą:

Kodekso tyrimas
Kodekso tyrimas
Kodekso tyrimas
Kodekso tyrimas

Pirma, mes pažvelgsime į „Arduino“kodą. (Šaltinį rasite adresu https://github.com/ComplexArts/SensorBoardArduino. Rekomenduojama sekti kartu su kodu.) Mums reikia kai kurių bibliotekų, iš kurių viena nėra pagrindinė „Arduino“biblioteka, todėl gali tekti ją įdiegti. Šis projektas remiasi „SparkFun_BNO080_Arduino_Library.h“failu, taigi, jei to neturite, turėsite eiti į eskizą -> Įtraukti biblioteką -> Tvarkyti bibliotekas. Įveskite „bno080“ir pasirodys aukščiau paminėta biblioteka. Paspauskite įdiegti.

Kitos trys naudojamos bibliotekos pagal numatytuosius nustatymus turėtų būti komplektuojamos su „Arduino“. Pirma, bendraudami su BNO naudosime SPI biblioteką. Taip pat galima naudoti UART tarp ESP32 ir BNO, tačiau kadangi „SparkFun“jau turi biblioteką, naudojančią SPI, mes to laikysimės. (Ačiū, SparkFun!) Įtraukę SPI.h failą, galėsime pasirinkti, kuriuos kaiščius ir prievadus norime naudoti SPI ryšiui.

„WiFi“bibliotekoje yra funkcijų, leidžiančių prisijungti prie belaidžio tinklo. „WiFiUDP“yra funkcijos, leidžiančios siųsti ir gauti duomenis per tą tinklą. Kitos dvi eilutės mus įtraukia į tinklą - įveskite savo tinklo pavadinimą ir slaptažodį. Po to einančios dvi eilutės nurodo tinklo adresą ir prievadą, į kurį siunčiame duomenis. Šiuo atveju mes tiesiog transliuosime, o tai reiškia, kad išsiųsite jį visiems mūsų tinklo nariams, kurie klausosi. Prievado numeris nustato, kas klauso, kaip mes pamatysime šiek tiek vėliau.

Šios dvi eilutės sukuria atitinkamų klasių narius, kad vėliau galėtume lengvai pasiekti jų funkcijas.

Tada mes priskiriame tinkamus ESP kaiščius prie atitinkamų BNO kaiščių.

Dabar mes nustatėme SPI klasės narį, taip pat nustatydami SPI prievado greitį.

Galiausiai mes pereiname prie sąrankos funkcijos. Čia pradėsime nuoseklųjį prievadą, kad galėtume taip stebėti savo produkciją, jei to norime. Tada mes pradedame „WiFi“. Atkreipkite dėmesį, kad programa prieš tęsdama laukia „WiFi“ryšio. Kai „WiFi“prijungtas, mes pradedame UDP ryšį, tada atspausdiname savo tinklo pavadinimą ir IP adresą į serijinį monitorių. Po to paleidžiame SPI prievadą ir patikriname ryšį tarp ESP ir BNO. Galiausiai funkciją vadiname „enableRotationVector (50)“; nes šiai pamokai naudosime tik sukimosi vektorių.

2 žingsnis: Likusi kodo dalis…

Likusi kodekso dalis…
Likusi kodekso dalis…

Prieš eidami į pagrindinę kilpą (), turime funkciją, pavadintą „mapFloat“.

Tai yra pasirinktinė funkcija, kurią pridėjome, norėdami susieti reikšmes su kitomis. Įmontuota „Arduino“žemėlapio funkcija leidžia atvaizduoti tik sveikus skaičius, tačiau visos mūsų pradinės BNO vertės bus nuo -1 iki 1, todėl turėsime rankiniu būdu jas sureguliuoti iki norimų verčių. Tačiau nesijaudinkite - čia yra paprasta funkcija, kaip tai padaryti:

Dabar prieiname prie pagrindinės kilpos (). Pirmas dalykas, kurį pastebėsite, yra kita blokavimo funkcija, tokia, kuri priverčia programą laukti tinklo ryšio. Tai sustabdoma, kol bus gauti duomenys iš BNO. Kai pradedame gauti tuos duomenis, gaunamojo ketvirčio reikšmes priskiriame slankiojo kablelio kintamiesiems ir atspausdiname tuos duomenis serijiniam monitoriui.

Dabar turime susieti tas vertybes.

[Žodis apie UDP ryšį: duomenys per UDP perduodami 8 bitų paketuose arba reikšmės nuo 0 iki 255. Viskas, kas viršija 255, bus perkelta į kitą paketą, padidindama jo vertę. Todėl turime įsitikinti, kad nėra didesnių nei 255 verčių.]

Kaip minėta anksčiau, gaunamos vertės yra nuo -1 iki 1. Tai mums neduoda daug darbo, nes viskas, kas yra žemiau 0, bus nutraukta (arba rodoma kaip 0) ir mes negalime to padaryti tonų, kurių vertės yra nuo 0 iki 1. Pirmiausia turime deklaruoti naują kintamąjį, kad išlaikytume susietą vertę, tada imame tą pradinį kintamąjį ir priskiriame jį nuo -1 -1 iki 0 -255, priskirdami rezultatą naujam kintamajam, vadinamam Nx.

Dabar, kai turime savo susietus duomenis, galime sudėti savo paketą. Norėdami tai padaryti, turime deklaruoti paketinių duomenų buferį, suteikiant jam [50] dydį, kad įsitikintume, jog visi duomenys tiks. Tada mes pradedame paketą nuo aukščiau nurodyto adreso ir prievado, įrašome savo buferį ir 3 reikšmes į paketą, tada baigiame paketą.

Galiausiai į serijinį monitorių atspausdiname susietas koordinates. Dabar „Arduino“kodas baigtas! Perkraukite kodą į jutiklių plokštę ir patikrinkite serijinį monitorių, kad įsitikintumėte, jog viskas veikia taip, kaip tikėtasi. Turėtumėte matyti kvaterniono vertes ir susietas reikšmes.

3 veiksmas: prisijungimas prie grynų duomenų …

Prisijungimas prie grynų duomenų…
Prisijungimas prie grynų duomenų…

Dabar apie grynus duomenis! Atidarykite „Pure Data“ir paleiskite naują pataisą (ctrl n). Pleistras, kurį sukursime, yra labai paprastas, jame yra tik septyni objektai. Pirmasis, kurį ketiname sukurti, yra [netrecept] objektas. Tai yra mūsų pleistro duona ir sviestas, tvarkantis visą UDP ryšį. Atkreipkite dėmesį, kad yra trys argumentai dėl [netrecept] objekto; -u nurodo UDP, -b nurodo dvejetainį, o 7401, žinoma, yra prievadas, kurio klausomės. Taip pat galite nusiųsti pranešimą „klausytis 7401“į [netrecept], kad nurodytumėte savo prievadą.

Gavę duomenis, turime juos išpakuoti. Jei prijungsime [spausdinimo] objektą prie [netrecieve], matysime, kad duomenys iš pradžių ateina pas mus kaip skaičių srautas, tačiau norime išanalizuoti tuos skaičius ir naudoti kiekvieną iš jų kitam. Pvz., Galbūt norėsite naudoti X ašies sukimąsi, kad valdytumėte osciliatoriaus žingsnį, o Y ašį-garsumui arba bet kokias kitas galimybes. Norėdami tai padaryti, duomenų srautas eina per [išpakuoti] objektą, kuriame yra trys plūdės (f f f).

Dabar, kai esi taip toli, pasaulis yra tavo austrė! Turite belaidį valdiklį, kurį galite naudoti norėdami manipuliuoti viskuo, ko norite „Pure Data“visatoje. Bet sustok ten! Be sukimosi vektoriaus, išbandykite akselerometrą arba magnetometrą. Pabandykite naudoti specialias BNO funkcijas, tokias kaip „dvigubas bakstelėjimas“arba „purtymas“. Viskas, ko reikia, yra šiek tiek įsigilinti į vartotojo vadovus (arba kitą instrukciją …).

4 žingsnis:

Tai, ką mes padarėme aukščiau, yra ryšys tarp jutiklių plokštės ir „Pure Data“. Jei norite pradėti linksmintis, prijunkite savo duomenų išvestis prie kai kurių generatorių! Žaisk su garsumo valdymu! Galbūt valdykite vėlavimo laiką ar atgarsį! pasaulis yra tavo austrė!

Rekomenduojamas: