Obsah:

Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi: 4 kroky (s obrázkami)
Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi: 4 kroky (s obrázkami)

Video: Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi: 4 kroky (s obrázkami)

Video: Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi: 4 kroky (s obrázkami)
Video: Объяснение прошивки Marlin 2.0.x 2024, Júl
Anonim
Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi
Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi
Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi
Použitie dosky senzorov Complex Arts na ovládanie čistých dát cez WiFi

Už ste niekedy chceli experimentovať s gestickým ovládaním? Dať veci do pohybu mávnutím ruky? Ovládať hudbu otočením zápästia? Tento návod vám ukáže, ako na to!

Complex Arts Sensor Board (complexarts.net) je všestranný mikrokontrolér založený na ESP32 WROOM. Má všetky funkcie platformy ESP32 vrátane vstavaného WiFi a Bluetooth a 23 konfigurovateľných GPIO pinov. Senzorová doska je tiež vybavená procesorom BNO_085 IMU - pohybovým procesorom 9 DOF, ktorý vykonáva integrované rovnice fúzie a kvartéru snímača a poskytuje super presnú orientáciu, vektor gravitácie a lineárne zrýchlenie. Senzorovú dosku je možné naprogramovať pomocou Arduino, MicroPython alebo ESP-IDF, ale pre túto lekciu budeme dosku programovať pomocou Arduino IDE. Je dôležité si uvedomiť, že moduly ESP32 nie sú natívne programovateľné z Arduino IDE, ale umožnenie je veľmi jednoduché; tu je skvelý návod: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, ktorého dokončenie by malo trvať asi 2 minúty. Posledný kus nastavenia, ktorý potrebujeme, je ovládač pre čip USB-to-UART na doske senzorov, ktorý nájdete tu: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-ovládače. Stačí si vybrať operačný systém a nainštalovať ho, čo by malo trvať asi ďalšie 2 minúty. Akonáhle je to hotové, môžeme vyraziť!

[Táto lekcia nepredpokladá žiadnu znalosť Arduina ani Pure Data, ale nebude pokrývať ich inštaláciu. Arduino nájdete na aduino.cc. Pure Data nájdete na puredata.info. Oba weby majú ľahko zrozumiteľné pokyny na inštaláciu a nastavenie.]

Tiež … koncepty zahrnuté v tomto návode, ako je nastavenie pripojení UDP, programovanie ESP32 s Arduino a základná budova patch Pure Data - sú stavebnými kameňmi, ktoré je možné použiť na nespočetné množstvo projektov, takže sa sem neskloňte, keď už budete zbúrali tieto koncepty!

Zásoby

1. Senzorová doska komplexných umení

2. Arduino IDE

3. Čisté údaje

Krok 1: Kontrola kódu:

Preskúmanie kódu
Preskúmanie kódu
Preskúmanie kódu
Preskúmanie kódu

Najprv sa pozrieme na kód Arduino. (Zdroj je k dispozícii na https://github.com/ComplexArts/SensorBoardArduino. Odporúčame vám, aby ste postupovali spoločne s kódom.) Potrebujeme niekoľko knižníc, z ktorých jedna nie je základnou knižnicou Arduino, takže môže byť potrebné ho nainštalovať. Tento projekt sa spolieha na súbor SparkFun_BNO080_Arduino_Library.h, takže ak ho nemáte, budete musieť ísť na Sketch -> Include Library -> Manage Libraries. Zadajte „bno080“a zobrazí sa vyššie uvedená knižnica. Stlačte inštalovať.

Ostatné tri použité knižnice by mali štandardne obsahovať Arduino. Najprv použijeme na komunikáciu s BNO knižnicu SPI. Medzi ESP32 a BNO je možné použiť aj UART, ale keďže SparkFun už má knižnicu, ktorá používa SPI, budeme sa toho držať. (Vďaka, SparkFun!) Vrátane súboru SPI.h nám umožní vybrať, ktoré piny a porty chceme používať na komunikáciu SPI.

Knižnica WiFi obsahuje funkcie, ktoré nám umožňujú prístup k bezdrôtovej sieti. WiFiUDP obsahuje funkcie, ktoré nám umožňujú odosielať a prijímať údaje prostredníctvom tejto siete. Nasledujúce dva riadky nás zavedú do siete - zadajte názov siete a heslo. Nasledujúce dva riadky určujú sieťovú adresu a port, na ktorý odosielame naše údaje. V takom prípade budeme iba vysielať, čo znamená, že ho pošleme každému v našej sieti, kto ho počúva. Číslo portu určuje, kto počúva, o chvíľu uvidíme.

Nasledujúce dva riadky vytvárajú členov pre ich príslušné triedy, aby sme k ich funkciám mohli neskôr ľahko pristupovať.

Ďalej priradíme správne piny ESP k ich príslušným kolíkom na BNO.

Teraz nastavíme člena triedy SPI a tiež nastavíme rýchlosť portu SPI.

Nakoniec sa dostaneme k funkcii nastavenia. Tu spustíme sériový port, aby sme mohli takto sledovať náš výstup, ak chceme. Potom začneme WiFi. Pred pokračovaním program čaká na WiFi pripojenie. Akonáhle je WiFi pripojené, zahájime pripojenie UDP a potom vytlačíme názov našej siete a našu IP adresu na sériový monitor. Potom spustíme port SPI a skontrolujeme komunikáciu medzi ESP a BNO. Nakoniec nazývame funkciu „enableRotationVector (50);“pretože v tejto lekcii budeme používať iba rotačný vektor.

Krok 2: Zvyšok kódu…

Zvyšok kódu …
Zvyšok kódu …

Predtým, ako prejdeme do hlavnej slučky (), máme funkciu s názvom „mapFloat“.

Ide o vlastnú funkciu, ktorú sme pridali za účelom mapovania alebo zmeny mierok hodnôt na iné hodnoty. Vstavaná funkcia mapy v Arduine umožňuje iba celočíselné mapovanie, ale všetky naše počiatočné hodnoty z BNO budú medzi -1 a 1, takže ich budeme musieť manuálne škálovať na hodnoty, ktoré skutočne chceme. Bez obáv - tu však nájdete jednoduchú funkciu:

Teraz sa dostávame k hlavnej slučke (). Prvá vec, ktorú si všimnete, je ďalšia blokovacia funkcia, napríklad tá, vďaka ktorej program čaká na sieťové pripojenie. Toto sa zastaví, kým nebudú k dispozícii údaje z BNO. Keď začneme prijímať tieto údaje, priradíme prichádzajúce hodnoty quaternion premenným s pohyblivou rádovou čiarkou a vytlačíme tieto údaje na sériový monitor.

Teraz musíme tieto hodnoty zmapovať.

[Slovo o komunikácii UDP: údaje sa prenášajú cez UDP v 8-bitových paketoch alebo hodnotách od 0 do 255. Čokoľvek nad 255 bude odoslané do ďalšieho paketu, čím sa zvýši jeho hodnota. Preto sa musíme uistiť, že neexistujú žiadne hodnoty nad 255.]

Ako už bolo spomenuté, máme prichádzajúce hodnoty v rozsahu -1 -1. To nám nedáva veľa práce, pretože čokoľvek pod 0 bude prerušené (alebo sa zobrazí ako 0) a nemôžeme to urobiť. tona s hodnotami medzi 0 -1. Najprv musíme deklarovať novú premennú, aby držala našu namapovanú hodnotu, potom zoberieme túto počiatočnú premennú a namapujeme ju z -1 -1 na 0 -255, pričom výsledok priradíme našej novej premennej s názvom Nx.

Teraz, keď máme namapované údaje, môžeme dať svoj paket dohromady. Aby sme to urobili, musíme deklarovať vyrovnávaciu pamäť pre paketové údaje s veľkosťou [50], aby sme sa uistili, že sa všetky údaje zmestia. Potom začneme paket s adresou a portom, ktorý sme uviedli vyššie, zapíšeme našu vyrovnávaciu pamäť a 3 hodnoty do paketu to a potom paket ukončíme.

Nakoniec vytlačíme naše mapované súradnice na sériový monitor. Teraz je kód Arduino hotový! Zapíšte kód na dosku snímača a skontrolujte sériový monitor, aby ste sa uistili, že všetko funguje podľa očakávania. Mali by ste vidieť hodnoty kvaternionu a tiež mapované hodnoty.

Krok 3: Pripojenie pomocou čistých dát …

Pripojenie s čistými dátami…
Pripojenie s čistými dátami…

Teraz k Pure Data! Otvorte Pure Data a spustite novú opravu (ctrl n). Oprava, ktorú vytvoríme, je veľmi jednoduchá a má iba sedem objektov. Prvým, čo vytvoríme, je objekt [netreceive]. Toto je chlieb a maslo našej opravy, ktorá zvláda všetku komunikáciu UDP. Všimnite si toho, že pre objekt [netreceive] existujú tri argumenty; -u určuje UDP, -b určuje binárne a 7401 je samozrejme port, na ktorom počúvame. Môžete tiež odoslať správu „počúvať 7401“na [netreceive] a určiť svoj port.

Keď nám prídu dáta, musíme ich rozbaliť. Ak pripojíme [print] objekt k [netrecieve], môžeme vidieť, že dáta k nám spočiatku prichádzajú ako prúd čísel, ale chceme tieto čísla analyzovať a každé použiť na niečo iné. Môžete napríklad chcieť použiť otáčanie osi X na ovládanie výšky oscilátora a os Y na ovládanie hlasitosti alebo ľubovoľný počet ďalších možností. Aby to urobil, dátový tok prechádza objektom [rozbaliť], ktorý má tri argumenty (f f f).

Teraz, keď ste tak ďaleko, je svet vašou ustricou! Máte bezdrôtový ovládač, pomocou ktorého môžete vo vesmíre Pure Data manipulovať so všetkým, čo chcete. Ale zastavte sa! Okrem Rotation Vector vyskúšajte aj akcelerometer alebo magnetometer. Skúste použiť špeciálne funkcie BNO, ako napríklad „dvojité poklepanie“alebo „potrasenie“. Stačí sa trocha prehrabať v používateľských príručkách (alebo v ďalšom návode na použitie …).

Krok 4:

Čo sme urobili vyššie, je nastavenie komunikácie medzi doskou senzorov a Pure Data. Ak sa chcete začať baviť, pripojte svoje dátové výstupy k niektorým oscilátorom! Hrajte s ovládaním hlasitosti! Možno ovládate nejaké časy oneskorenia alebo reverb! svet je tvoja ustrica!

Odporúča: