Tartalomjegyzék:

A komplex művészeti érzékelő kártya használata tiszta adatok vezérlésére WiFi -n keresztül: 4 lépés (képekkel)
A komplex művészeti érzékelő kártya használata tiszta adatok vezérlésére WiFi -n keresztül: 4 lépés (képekkel)

Videó: A komplex művészeti érzékelő kártya használata tiszta adatok vezérlésére WiFi -n keresztül: 4 lépés (képekkel)

Videó: A komplex művészeti érzékelő kártya használata tiszta adatok vezérlésére WiFi -n keresztül: 4 lépés (képekkel)
Videó: A Lélek-Agy-Szerv összefüggések - EGY VALAMI HÁROM SZINTEN 20. FB élő adás (biologika, szerv atlasz) 2024, Július
Anonim
A Complex Arts Sensor Board használata tiszta adatok vezérlésére WiFi -n keresztül
A Complex Arts Sensor Board használata tiszta adatok vezérlésére WiFi -n keresztül
A Complex Arts Sensor Board használata tiszta adatok vezérlésére WiFi -n keresztül
A Complex Arts Sensor Board használata tiszta adatok vezérlésére WiFi -n keresztül

Szeretett volna már kísérletezni a gesztusvezérléssel? Mozgassa a dolgokat egy kézmozdulattal? A csukló csavarásával irányíthatja a zenét? Ez az Instructable megmutatja, hogyan!

A Complex Arts Sensor Board (complexarts.net) az ESP32 WROOM alapú sokoldalú mikrokontroller. Rendelkezik az ESP32 platform összes funkciójával, beleértve a beépített WiFi-t és Bluetooth-t, valamint 23 konfigurálható GPIO-tűt. Az érzékelőtáblán megtalálható a BNO_085 IMU - egy 9 DOF mozgásprocesszor, amely a fedélzeti érzékelőfúziós és kvaternióniagyenleteket hajtja végre, szuper pontos tájékozódást, gravitációs vektort és lineáris gyorsulási adatokat szolgáltatva. Az érzékelő tábla programozható Arduino, MicroPython vagy ESP-IDF használatával, de ebben a leckében az Arduino IDE programozásával fogjuk programozni a táblát. Fontos megjegyezni, hogy az ESP32 modulok nem natív módon programozhatók az Arduino IDE -ből, de ennek lehetővé tétele nagyon egyszerű; van egy nagyszerű oktatóanyag itt: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, amelynek elkészítése körülbelül 2 percet vesz igénybe. Az utolsó beállítás, amire szükségünk van, az USB-UART chip illesztőprogramja az érzékelő táblán, amely itt található: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-driverek. Csak válassza ki az operációs rendszert és telepítse, ami körülbelül 2 percet vesz igénybe. Ha ez megtörtént, indulhatunk!

[Ez a lecke nem feltételezi az Arduino vagy a Pure Data ismereteit, azonban nem terjed ki a telepítésükre. Az Arduino megtalálható az aduino.cc webhelyen. A Pure Data a puredata.info oldalon található. Mindkét webhely könnyen követhető utasításokat tartalmaz a telepítéshez és a beállításhoz.]

Továbbá… az oktatóanyagban szereplő fogalmak, mint például az UDP -kapcsolatok beállítása, az ESP32 programozása Arduino -val, és az alapvető Pure Data patch -építés - építőkövei, amelyek számtalan projektre alkalmazhatók, ezért ne hajoljon meg itt, lenyomták ezeket a fogalmakat!

Kellékek

1. Komplex Arts Sensor Board

2. Arduino IDE

3. Pure Data

1. lépés: A kód vizsgálata:

A kódex vizsgálata
A kódex vizsgálata
A kódex vizsgálata
A kódex vizsgálata

Először is megnézzük az Arduino kódot. (A forrás elérhető a https://github.com/ComplexArts/SensorBoardArduino webhelyen. Javasoljuk, hogy kövesse a kódot menet közben.) Szükségünk van néhány könyvtárra, amelyek közül az egyik nem alapvető Arduino -könyvtár, ezért esetleg telepítenie kell. Ez a projekt a SparkFun_BNO080_Arduino_Library.h fájlra támaszkodik, így ha nem rendelkezik ezzel, akkor a Vázlat -> Könyvtár beillesztése -> Könyvtárak kezelése menüpontra kell lépnie. Írja be a „bno080” szót, és megjelenik a fent említett könyvtár. Nyomja meg a telepítést.

A másik három használt könyvtárnak alapértelmezés szerint az Arduino -val kell érkeznie. Először az SPI könyvtárat fogjuk használni a BNO -val való kommunikációhoz. Az UART használata az ESP32 és a BNO között is lehetséges, de mivel a SparkFun már rendelkezik SPI -t használó könyvtárral, maradunk ennél. (Köszönjük, SparkFun!) Az SPI.h fájl beillesztése lehetővé teszi számunkra, hogy kiválasszuk, mely tűket és portokat szeretnénk használni az SPI kommunikációhoz.

A WiFi könyvtár tartalmazza azokat a funkciókat, amelyek lehetővé teszik számunkra, hogy vezeték nélküli hálózathoz csatlakozzunk. A WiFiUDP tartalmazza azokat a funkciókat, amelyek lehetővé teszik, hogy adatokat küldjünk és fogadjunk a hálózaton keresztül. A következő két sor a hálózatra vezet minket - írja be a hálózat nevét és jelszavát. Az ezt követő két sor határozza meg azt a hálózati címet és portot, amelyre az adatainkat küldjük. Ebben az esetben csak sugározni fogunk, ami azt jelenti, hogy elküldi bárkinek a hálózatunkon, aki hallgatja. A port száma határozza meg, hogy ki hallgat, amint azt egy kicsit látni fogjuk.

Ez a következő két sor tagokat hoz létre az adott osztályokhoz, hogy később könnyen elérhessük funkcióikat.

Ezután hozzárendeljük az ESP megfelelő csapjait a BNO megfelelő csapjaihoz.

Most beállítottuk az SPI osztály tagját, és beállítottuk az SPI port sebességét is.

Végül elérjük a beállítási funkciót. Itt elindítunk egy soros portot, hogy így tudjuk nyomon követni a kimenetünket, ha akarjuk. Ezután elkezdjük a WiFi -t. Vegye figyelembe, hogy a program vár a WiFi kapcsolatra, mielőtt folytatja. A WiFi csatlakoztatása után megkezdjük az UDP kapcsolatot, majd kinyomtatjuk a hálózati nevet és az IP -címet a soros monitorra. Ezt követően elindítjuk az SPI portot, és ellenőrizzük a kommunikációt az ESP és a BNO között. Végül hívjuk a „enableRotationVector (50)” függvényt; mivel ebben a leckében csak rotációs vektort fogunk használni.

2. lépés: A kód többi része…

A kód többi része…
A kód többi része…

Mielőtt a fő hurokhoz () mennénk, van egy „mapFloat” nevű függvényünk.

Ez egy egyéni funkció, amelyet az értékek más értékekhez való hozzárendelése vagy hozzárendelése céljából adtunk hozzá. Az Arduino beépített térképfunkciója csak egész számok leképezését teszi lehetővé, de a BNO összes kezdeti értéke -1 és 1 között lesz, ezért manuálisan kell méreteznünk azokat az értékeket, amelyeket valóban akarunk. De ne aggódjon - itt az egyszerű funkció, amellyel ezt megteheti:

Most eljutunk a fő hurokhoz (). Az első dolog, amit észre fog venni, egy másik blokkoló funkció, például az, amely miatt a program várja a hálózati kapcsolatot. Ez megáll, amíg nincs adat a BNO -tól. Amikor elkezdjük fogadni ezeket az adatokat, hozzárendeljük a bejövő kvaternion értékeket a lebegőpontos változókhoz, és kinyomtatjuk ezeket az adatokat a soros monitornak.

Most ezeket az értékeket kell feltérképeznünk.

[Néhány szó az UDP kommunikációról: az adatok átvitele UDP-n keresztül 8 bites csomagokban történik, vagy 0-255 közötti értékekkel. Minden, ami 255 felett van, a következő csomagba kerül, növelve annak értékét. Ezért meg kell győződnünk arról, hogy nincsenek 255 feletti értékek.]

Amint azt korábban említettük, a bejövő értékek -1 -1 tartományban vannak. Ez nem ad sok munkát, mivel 0 alatt minden le lesz vágva (vagy 0 -ként jelenik meg), és nem tehetjük meg egy tonna, amelynek értéke 0 -1. Először új változót kell deklarálnunk, hogy megtartsuk a leképezett értékünket, majd vesszük azt a kezdeti változót és leképezzük -1 -1 és 0 -255 között, az eredményt hozzárendelve az új változónkhoz, az ún. Nx.

Most, hogy megvannak a leképezett adataink, össze tudjuk rakni a csomagunkat. Ennek érdekében puffert kell deklarálnunk a csomag adataihoz, megadva annak [50] méretét, hogy megbizonyosodjunk arról, hogy minden adat elfér. Ezután a csomagot a fent megadott címmel és porttal kezdjük, írjuk pufferünket és 3 értékünket a to packet -be, majd fejezzük be a csomagot.

Végül kinyomtatjuk a leképezett koordinátáinkat a soros monitorra. Most elkészült az Arduino kód! Villogtassa a kódot az érzékelő kártyához, és ellenőrizze a soros monitort, hogy minden a várt módon működik -e. Látnia kell a kvaternion értékeket, valamint a leképezett értékeket.

3. lépés: Csatlakozás tiszta adatokkal…

Csatlakozás tiszta adatokkal…
Csatlakozás tiszta adatokkal…

Most a Pure Data! Nyissa meg a Pure Data elemet, és indítson új javítást (ctrl n). Az általunk létrehozott javítás nagyon egyszerű, mindössze hét objektumot tartalmaz. Az első, amit létrehozunk, a [netrecept] objektum. Ez a javításunk kenyere, és kezeli az összes UDP kommunikációt. Vegye figyelembe, hogy a [netrecept] objektum mellett három érv szól; A -u UDP, a -b bináris, és a 7401 természetesen az a port, amelyet hallgatunk. A „listen 7401” üzenetet a [netrecept] címre is elküldheti a port megadásához.

Miután megérkeztek az adatok, ki kell csomagolnunk azokat. Ha egy [print] objektumot a [netrecieve] -hez kapcsolunk, akkor láthatjuk, hogy az adatok kezdetben számfolyamként érkeznek hozzánk, de szeretnénk elemezni ezeket a számokat, és mindegyiket másra használni. Például használhatja az X-tengely forgatását az oszcillátor hangmagasságának, az Y-tengelynek a hangerő szabályozásához, vagy bármilyen más lehetőséget. Ennek érdekében az adatfolyam egy [kicsomagolás] objektumon megy keresztül, amelynek három úszója van (f f f).

Most, hogy ilyen messze vagy, a világ az osztrigád! Van egy vezeték nélküli vezérlője, amellyel bármit manipulálhat a Pure Data univerzumban. De álljon meg! A Rotation Vector mellett próbálja meg a gyorsulásmérőt vagy a magnetométert. Próbálja ki a BNO speciális funkcióit, például a „dupla csap” vagy a „shake” funkciót. Mindössze egy kis ásás szükséges a felhasználói kézikönyvekben (vagy a következő utasításban).

4. lépés:

Amit fentebb tettünk, az kommunikáció beállítása az érzékelőtábla és a Pure Data között. Ha többet szeretne szórakozni, csatlakoztassa az adatkimeneteket néhány oszcillátorhoz! Játssz hangerőszabályzóval! Talán vezéreljen néhány késleltetési időt vagy visszhangot! a világ az osztrigád!

Ajánlott: