Obsah:

Použití senzorové desky Complex Arts k ovládání čistých dat přes WiFi: 4 kroky (s obrázky)
Použití senzorové desky Complex Arts k ovládání čistých dat přes WiFi: 4 kroky (s obrázky)

Video: Použití senzorové desky Complex Arts k ovládání čistých dat přes WiFi: 4 kroky (s obrázky)

Video: Použití senzorové desky Complex Arts k ovládání čistých dat přes WiFi: 4 kroky (s obrázky)
Video: Геро Мизенбок видоизменяет мозг 2024, Červenec
Anonim
Použití Complex Arts Sensor Board k ovládání čistých dat přes WiFi
Použití Complex Arts Sensor Board k ovládání čistých dat přes WiFi
Použití Complex Arts Sensor Board k ovládání čistých dat přes WiFi
Použití Complex Arts Sensor Board k ovládání čistých dat přes WiFi

Chtěli jste někdy experimentovat s gestickým ovládáním? Nechat věci pohnout mávnutím ruky? Ovládáte hudbu zkroucením zápěstí? Tento Instructable vám ukáže, jak!

Complex Arts Sensor Board (complexarts.net) je univerzální mikrokontrolér založený na ESP32 WROOM. Má všechny funkce platformy ESP32, včetně vestavěného WiFi a Bluetooth, a 23 konfigurovatelných GPIO pinů. Senzorová deska je také vybavena BNO_085 IMU - pohybovým procesorem 9 DOF, který provádí integrované rovnice fúze senzorů a kvaternionů a poskytuje super přesnou orientaci, gravitační vektor a data lineárního zrychlení. Senzorovou desku lze naprogramovat pomocí Arduino, MicroPython nebo ESP-IDF, ale pro tuto lekci budeme programovat desku pomocí Arduino IDE. Je důležité si uvědomit, že moduly ESP32 nelze nativně programovat z Arduino IDE, ale umožnit to je velmi jednoduché; zde je skvělý návod: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, jehož dokončení by mělo trvat asi 2 minuty. Poslední část nastavení, kterou potřebujeme, je ovladač pro čip USB-to-UART na desce senzorů, který najdete zde: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-ovladače. Stačí vybrat operační systém a nainstalovat, což by mělo trvat asi 2 minuty. Jakmile to bude hotové, můžeme vyrazit!

[Tato lekce nepředpokládá žádnou znalost Arduina ani Pure Data, ale nebude pokrývat jejich instalaci. Arduino najdete na aduino.cc. Čistá data najdete na puredata.info. Oba weby mají snadno srozumitelné pokyny pro instalaci a nastavení.]

Také … koncepty obsažené v tomto tutoriálu, jako je nastavení připojení UDP, programování ESP32 pomocí Arduina a základní budování patchů Pure Data - jsou stavební bloky, které lze použít pro nespočet projektů, takže se zde nesklánějte, jakmile budete dostal tyto koncepty dolů!

Zásoby

1. Senzorová deska komplexních umění

2. Arduino IDE

3. Čistá data

Krok 1: Kontrola kódu:

Zkoumání kódu
Zkoumání kódu
Zkoumání kódu
Zkoumání kódu

Nejprve se podíváme na kód Arduino. (Zdroj je k dispozici na https://github.com/ComplexArts/SensorBoardArduino. Doporučujeme, abyste postupovali společně s kódem.) Potřebujeme nějaké knihovny, z nichž jedna není základní knihovnou Arduino, takže může být nutné jej nainstalovat. Tento projekt spoléhá na soubor SparkFun_BNO080_Arduino_Library.h, takže pokud jej nemáte, budete muset přejít na Sketch -> Include Library -> Manage Libraries. Zadejte „bno080“a objeví se výše uvedená knihovna. Stiskněte nainstalovat.

Další tři použité knihovny by měly standardně obsahovat Arduino. Nejprve použijeme ke komunikaci s BNO knihovnu SPI. Je také možné použít UART mezi ESP32 a BNO, ale protože SparkFun již má knihovnu, která používá SPI, zůstaneme u toho. (Díky, SparkFun!) Zahrnutí souboru SPI.h nám umožní vybrat, které piny a porty chceme použít pro komunikaci SPI.

Knihovna WiFi obsahuje funkce, které nám umožňují přístup k bezdrátové síti. WiFiUDP obsahuje funkce, které nám umožňují odesílat a přijímat data přes tuto síť. Další dva řádky nás dostanou do sítě - zadejte název své sítě a heslo. Dva řádky poté určují síťovou adresu a port, na který posíláme naše data. V tomto případě budeme pouze vysílat, což znamená rozeslat komukoli v naší síti, kdo poslouchá. Číslo portu určuje, kdo poslouchá, jak za chvíli uvidíme.

Tyto další dva řádky vytvářejí členy pro jejich příslušné třídy, abychom mohli později snadno přistupovat k jejich funkcím.

Dále přiřadíme správné piny ESP jejich příslušným pinům na BNO.

Nyní nastavíme člena třídy SPI a také nastavíme rychlost portu SPI.

Nakonec se dostaneme k funkci nastavení. Zde spustíme sériový port, abychom mohli sledovat náš výstup tímto způsobem, pokud chceme. Poté spustíme WiFi. Před pokračováním program čeká na připojení WiFi. Jakmile je WiFi připojeno, zahájíme připojení UDP a poté vytiskneme název naší sítě a naši IP adresu na sériový monitor. Poté spustíme port SPI a zkontrolujeme komunikaci mezi ESP a BNO. Nakonec nazýváme funkci „enableRotationVector (50);“protože pro tuto lekci budeme používat pouze rotační vektor.

Krok 2: Zbytek kódu…

Zbytek kódu…
Zbytek kódu…

Než přejdeme do hlavní smyčky (), máme funkci nazvanou „mapFloat“.

Toto je vlastní funkce, kterou jsme přidali za účelem mapování nebo změny hodnot na jiné hodnoty. Vestavěná mapová funkce v Arduinu umožňuje pouze celočíselné mapování, ale všechny naše počáteční hodnoty z BNO budou mezi -1 a 1, takže je budeme muset ručně škálovat na hodnoty, které opravdu chceme. Bez obav - zde je jednoduchá funkce, jak to udělat:

Nyní se dostáváme k hlavní smyčce (). První věcí, které si všimnete, je další blokovací funkce, jako je ta, díky které program čeká na připojení k síti. Toto se zastaví, dokud nebudou k dispozici data z BNO. Když začneme přijímat tato data, přiřadíme příchozí hodnoty čtveřice proměnným s pohyblivou řádovou čárkou a vytiskneme tato data na sériový monitor.

Nyní musíme tyto hodnoty zmapovat.

[Slovo o komunikaci UDP: data jsou přenášena přes UDP v 8bitových paketech nebo hodnotách od 0 do 255. Cokoli přes 255 bude přesunuto do dalšího paketu, což zvýší jeho hodnotu. Proto se musíme ujistit, že neexistují žádné hodnoty nad 255.]

Jak již bylo zmíněno dříve, máme příchozí hodnoty v rozsahu -1 -1. To nám nedává moc práce, protože cokoli pod 0 bude přerušeno (nebo se zobrazí jako 0) a my to nedokážeme tunu s hodnotami mezi 0 -1. Nejprve musíme deklarovat novou proměnnou, která bude uchovávat naši namapovanou hodnotu, poté vezmeme tuto počáteční proměnnou a namapujeme ji od -1 -1 do 0 -255, přičemž výsledek přiřadíme naší nové proměnné s názvem Nx.

Nyní, když máme namapovaná data, můžeme dát náš paket dohromady. Abychom to mohli udělat, musíme pro paketová data deklarovat vyrovnávací paměť, která mu poskytne velikost [50], aby se zajistilo, že se všechna data vejdou. Pak začneme paket s adresou a portem, který jsme zadali výše, zapíšeme naši vyrovnávací paměť a 3 hodnoty do paketu to a pak ukončíme paket.

Nakonec vytiskneme namapované souřadnice na sériový monitor. Nyní je kód Arduino hotov! Nahrajte kód na desku senzoru a zkontrolujte sériový monitor, abyste se ujistili, že vše funguje podle očekávání. Měli byste vidět hodnoty kvaternionu i namapované hodnoty.

Krok 3: Připojení s čistými daty…

Propojení s čistými daty…
Propojení s čistými daty…

Nyní pro Pure Data! Otevřete Pure Data a spusťte novou opravu (ctrl n). Patch, který vytvoříme, je velmi jednoduchý a má pouze sedm objektů. První, co vytvoříme, je objekt [netreceive]. To je chléb a máslo naší opravy, která zvládá veškerou komunikaci UDP. Všimněte si, že pro objekt [netreceive] existují tři argumenty; -u určuje UDP, -b určuje binární a 7401 je samozřejmě port, na kterém posloucháme. Můžete také poslat zprávu „poslouchat 7401“na [netreceive] a zadat svůj port.

Jakmile máme data přicházející, musíme je rozbalit. Pokud k [netrecieve] připojíme objekt [print], můžeme vidět, že data k nám zpočátku přicházejí jako proud čísel, ale chceme tato čísla analyzovat a každé použít pro něco jiného. Například můžete chtít použít otáčení osy X k ovládání výšky oscilátoru a osy Y pro hlasitost nebo libovolný počet dalších možností. Aby to bylo možné provést, datový proud prochází objektem [unpack], který má tři argumenty (f f f).

Nyní, když jste tak daleko, je svět vaší ústřicí! Máte bezdrátový ovladač, který můžete použít k manipulaci se vším, co chcete ve vesmíru Pure Data. Ale zastavte se! Kromě rotačního vektoru vyzkoušejte akcelerometr nebo magnetometr. Zkuste použít speciální funkce BNO, jako je „dvojité klepnutí“nebo „zatřesení“. Stačí se trochu prokopat do uživatelských příruček (nebo dalšího Instructable…).

Krok 4:

Výše jsme provedli nastavení komunikace mezi deskou senzorů a Pure Data. Pokud se chcete začít více bavit, připojte své datové výstupy k některým oscilátorům! Hrajte s ovládáním hlasitosti! Možná ovládáte nějaké časy zpoždění nebo reverb! svět je vaše ústřice!

Doporučuje: