Sadržaj:

Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a: 4 koraka (sa slikama)
Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a: 4 koraka (sa slikama)

Video: Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a: 4 koraka (sa slikama)

Video: Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a: 4 koraka (sa slikama)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Novembar
Anonim
Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a
Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a
Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a
Korištenje složene ploče senzora umjetnosti za kontrolu čistih podataka putem WiFi -a

Jeste li ikada poželjeli eksperimentirati s kontrolom gestama? Da pokrenete stvari pokretom ruke? Kontrolišite muziku okretanjem zgloba? Ovaj Instructable će vam pokazati kako!

Složena ploča senzorskih umjetnosti (complexarts.net) je svestrani mikrokontroler zasnovan na ESP32 WROOM. Ima sve značajke ESP32 platforme, uključujući ugrađeni WiFi i Bluetooth, te 23 GPIO pina koji se mogu konfigurirati. Pločica senzora također sadrži BNO_085 IMU - 9 DOF procesor kretanja koji izvodi fuziju senzora i kvaternionske jednadžbe, pružajući super preciznu orijentaciju, gravitacijski vektor i podatke o linearnom ubrzanju. Pločica senzora može se programirati pomoću Arduina, MicroPythona ili ESP-IDF-a, ali za ovu lekciju programirat ćemo ploču s Arduino IDE-om. Važno je napomenuti da ESP32 moduli nisu izvorno programirani iz Arduino IDE -a, ali je to vrlo jednostavno; ovdje postoji odličan vodič: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ koji bi trebao potrajati oko 2 minute. Zadnji dio postavki koji nam je potreban je upravljački program za USB-to-UART čip na ploči senzora, koji se može pronaći ovdje: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-upravljački programi. Samo odaberite svoj OS i instalirajte, što bi trebalo potrajati još oko 2 minute. Kad to završimo, možemo krenuti!

[Ova lekcija ne pretpostavlja nikakvo poznavanje ni Arduina ni čistih podataka, ali neće pokriti njihovu instalaciju. Arduino možete pronaći na aduino.cc. Čiste podatke možete pronaći na puredata.info. Obje stranice imaju upute za instalaciju i postavljanje koje se lako prate.]

Također … koncepti obuhvaćeni ovim vodičem, kao što su postavljanje UDP veza, programiranje ESP32 s Arduinom i osnovna izgradnja zakrpe za čiste podatke - građevni su blokovi koji se mogu primijeniti na bezbroj projekata, stoga nemojte se spuštati ovdje oborio ove koncepte!

Supplies

1. Složena ploča senzora umjetnosti

2. Arduino IDE

3. Čisti podaci

Korak 1: Ispitivanje koda:

Ispitivanje Kodeksa
Ispitivanje Kodeksa
Ispitivanje Kodeksa
Ispitivanje Kodeksa

Prvo ćemo pogledati Arduino kod. (Izvor je dostupan na https://github.com/ComplexArts/SensorBoardArduino. Preporučuje se da slijedite kôd dok idemo.) Trebaju nam neke biblioteke, od kojih jedna nije osnovna Arduino biblioteka, pa možda ga je potrebno instalirati. Ovaj se projekt oslanja na datoteku SparkFun_BNO080_Arduino_Library.h, pa ako to nemate, morat ćete otići na Sketch -> Include Library -> Manage Libraries. Upišite “bno080” i pojavit će se gore spomenuta biblioteka. Pritisnite install.

Ostale tri biblioteke koje se koriste trebale bi standardno imati Arduino. Prvo ćemo koristiti SPI biblioteku za komunikaciju sa BNO. Također je moguće koristiti UART između ESP32 i BNO, ali budući da SparkFun već ima biblioteku koja koristi SPI, toga ćemo se držati. (Hvala, SparkFun!) Uključivanje datoteke SPI.h omogućit će nam da odaberemo koje pinove i portove želimo koristiti za SPI komunikaciju.

WiFi biblioteka sadrži funkcije koje nam omogućuju pristup bežičnoj mreži. WiFiUDP sadrži funkcije koje nam omogućuju slanje i primanje podataka preko te mreže. Sljedeća dva retka dovode nas na mrežu - unesite naziv mreže i lozinku. Dva reda nakon toga navode mrežnu adresu i port na koji šaljemo naše podatke. U ovom slučaju samo ćemo emitirati, što znači poslati ga bilo kome na našoj mreži ko sluša. Broj porta određuje ko sluša, kao što ćemo vidjeti uskoro.

Sljedeća dva retka stvaraju članove za odgovarajuće klase tako da kasnije možemo lako pristupiti njihovim funkcijama.

Zatim dodjeljujemo odgovarajuće pinove ESP -a njihovim odgovarajućim pinovima na BNO -u.

Sada postavljamo člana SPI klase, također postavljajući brzinu SPI porta.

Konačno dolazimo do funkcije postavljanja. Ovdje ćemo pokrenuti serijski port kako bismo mogli pratiti naš izlaz na taj način ako želimo. Zatim započinjemo WiFi. Primijetite da program čeka WiFi vezu prije nego što nastavi. Kada se WiFi poveže, započinjemo UDP vezu, zatim ispisujemo naziv mreže i IP adresu na serijski monitor. Nakon toga pokrećemo SPI port i provjeravamo komunikaciju između ESP -a i BNO -a. Na kraju, pozivamo funkciju „enableRotationVector (50);“jer ćemo za ovu lekciju koristiti samo vektor rotacije.

Korak 2: Ostatak koda…

Ostatak Kodeksa…
Ostatak Kodeksa…

Prije nego što pređemo na glavnu petlju (), imamo funkciju koja se zove “mapFloat”.

Ovo je prilagođena funkcija koju smo dodali za mapiranje ili skaliranje vrijednosti u druge vrijednosti. Ugrađena funkcija karte u Arduinu dozvoljava samo cjelobrojno mapiranje, ali sve naše početne vrijednosti iz BNO -a bit će između -1 i 1, pa ćemo ih morati ručno skalirati na vrijednosti koje zaista želimo. Bez brige, međutim - evo jednostavne funkcije za to:

Sada dolazimo do glavne petlje (). Prvo što ćete primijetiti je još jedna funkcija blokiranja, poput one zbog koje program čeka na mrežnu vezu. Ovaj se zaustavlja sve dok nema podataka iz BNO -a. Kad počnemo primati te podatke, dodjeljujemo vrijednosti dolazne kvaternione varijablama s pomičnim zarezom i ispisujemo te podatke na serijski monitor.

Sada moramo mapirati te vrijednosti.

[Riječ o UDP komunikaciji: podaci se prenose preko UDP-a u 8-bitnim paketima ili vrijednosti od 0-255. Sve preko 255 bit će gurnuto u sljedeći paket, dodajući njegovu vrijednost. Stoga moramo biti sigurni da nema vrijednosti iznad 255.]

Kao što je već spomenuto, imamo ulazne vrijednosti u rasponu od -1 -1. To nam ne daje puno posla s obzirom na to da će sve ispod 0 biti odsječeno (ili će se prikazati kao 0), a mi to ne možemo učiniti tona s vrijednostima između 0 -1. Prvo moramo deklarirati novu varijablu da zadrži našu preslikanu vrijednost, zatim uzimamo tu početnu varijablu i preslikavamo je od -1 -1 do 0 -255, dodjeljujući rezultat našoj novoj varijabli tzv. Nx.

Sada kada imamo svoje mapirane podatke, možemo sastaviti naš paket. Da bismo to učinili, moramo deklarirati međuspremnik za paketne podatke, dajući mu veličinu [50] kako bismo bili sigurni da svi podaci odgovaraju. Zatim započinjemo paket s adresom i portom koje smo gore naveli, upisujemo naš međuspremnik i 3 vrijednosti u paket, zatim završavamo paket.

Na kraju, štampamo naše preslikane koordinate na serijski monitor. Sada je Arduino kod gotov! Prenesite kôd na ploču senzora i provjerite serijski monitor kako biste bili sigurni da sve radi kako se očekuje. Trebali biste vidjeti vrijednosti kvaterniona, kao i mapirane vrijednosti.

Korak 3: Povezivanje s čistim podacima …

Povezivanje s čistim podacima…
Povezivanje s čistim podacima…

Sada o čistim podacima! Otvorite Pure Data i pokrenite novu zakrpu (ctrl n). Zakrpa koju ćemo stvoriti je vrlo jednostavna, ima samo sedam objekata. Prvo što ćemo stvoriti je [netreceive] objekt. Ovo je kruh i maslac našeg zakrpe, koji upravlja svim UDP komunikacijama. Primijetite da postoje tri argumenta za [netreceive] objekt; -u specificira UDP, -b specificira binarni, a 7401 je naravno port na kojem slušamo. Također možete poslati poruku “listen 7401” na [netreceive] da navedete vaš port.

Nakon što dođemo do podataka, moramo ih raspakirati. Ako povežemo [print] objekt s [netrecieve], možemo vidjeti da nam podaci u početku dolaze kao niz brojeva, ali želimo ih raščlaniti i koristiti svaki za nešto drugo. Na primjer, možda ćete htjeti koristiti rotaciju osi X za kontrolu visine oscilatora i osi Y za jačinu zvuka ili bilo koji broj drugih mogućnosti. Da bi se to učinilo, tok podataka prolazi kroz [raspakiraj] objekt koji ima tri float -a (f f f) su njegovi argumenti.

Sad kad si tako daleko, svijet je tvoja kamenica! Imate bežični kontroler koji možete koristiti za manipulaciju svime što želite u univerzumu Pure Data. Ali stanite tu! Osim vektora rotacije, probajte i akcelerometar ili magnetometar. Pokušajte koristiti posebne funkcije BNO -a, poput „dvostrukog dodira“ili „protresanja“. Sve što je potrebno je malo kopati po korisničkim priručnicima (ili sljedećim Instructable …).

Korak 4:

Ono što smo gore učinili je uspostavljanje komunikacije između ploče senzora i čistih podataka. Ako se želite više zabaviti, spojite svoje izlaze podataka na neke oscilatore! Igrajte se sa kontrolom jačine zvuka! Možda kontrolirati neko vrijeme kašnjenja ili reverb! svijet je tvoja kamenica!

Preporučuje se: