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, Srpanj
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? Pokrenuti stvari pokretom ruke? Kontrolirati glazbu okretanjem zapešća? Ovaj Instructable će vam pokazati kako!

Složena ploča senzora umjetnosti (complexarts.net) svestrani je mikrokontroler temeljen na ESP32 WROOM. Ima sve značajke platforme ESP32, uključujući ugrađene WiFi i Bluetooth te 23 konfigurabilna GPIO pina. Pločica senzora također sadrži BNO_085 IMU - procesor kretanja od 9 DOF koji izvodi ugrađene jednadžbe fuzije i kvaterniona senzora, pružajući super preciznu orijentaciju, gravitacijski vektor i podatke o linearnom ubrzanju. Senzorska ploča može se programirati pomoću Arduina, MicroPythona ili ESP-IDF-a, ali za ovu ćemo lekciju programirati ploču s Arduino IDE-om. Važno je napomenuti da moduli ESP32 nisu izvorno programirani iz Arduino IDE -a, ali to je 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. Posljednji postav koji nam je potreban je upravljački program za čip USB-to-UART 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 učinimo, spremni smo za početak!

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

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

Pribor

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 knjižnice, od kojih jedna nije osnovna Arduino knjižnica, 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 knjižnica. Pritisnite install.

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

WiFi knjižnica 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 putem te mreže. Sljedeća dva retka dovode nas na mrežu - unesite naziv mreže i lozinku. Dva retka 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 tko sluša. Broj porta određuje tko sluša, kao što ćemo vidjeti malo kasnije.

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 smo postavili člana klase SPI, također postavljajući brzinu priključka SPI.

Konačno dolazimo do funkcije postavljanja. Ovdje ćemo pokrenuti serijski port kako bismo na taj način mogli pratiti naš izlaz ako želimo. Zatim započinjemo WiFi. Primijetite da program čeka WiFi vezu prije nego što nastavi. Nakon što 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, funkciju nazivamo "enableRotationVector (50);" jer ćemo za ovu lekciju koristiti samo vektor rotacije.

Korak 2: Ostatak koda…

Ostatak Kodeksa…
Ostatak Kodeksa…

Prije nego što prijeđ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 dopušta samo preslikavanje cijelih brojeva, 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 doista želimo. No, bez brige - evo jednostavne funkcije za napraviti upravo to:

Sada dolazimo do glavne petlje (). Prvo što ćete primijetiti je druga funkcija blokiranja, poput one koja tjera program da čeka 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 iznad 255 bit će premješteno u sljedeći paket, dodajući njegovu vrijednost. Stoga se moramo pobrinuti da nema vrijednosti veće od 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 uzmemo tu početnu varijablu i preslikamo 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, zapisujemo naš međuspremnik i 3 vrijednosti u paket, a zatim završavamo.

Na kraju, svoje preslikane koordinate ispisujemo na serijski monitor. Sada je Arduino kod gotov! Prenesite kôd na ploču senzora i provjerite serijski monitor kako biste provjerili radi li sve 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 za čiste podatke! Otvorite Pure Data i pokrenite novu zakrpu (ctrl n). Zakrpa koju ćemo stvoriti vrlo je jednostavna, ima samo sedam objekata. Prvi koji ćemo stvoriti je [netreceive] objekt. Ovo je kruh i maslac našeg zakrpe, koji upravlja svim UDP komunikacijama. Uočite da postoje tri argumenta za [netreceive] objekt; -u navodi UDP, -b specificira binarni, a 7401 je naravno port na kojem slušamo. Također možete poslati poruku “listen 7401” na [netreceive] kako biste naveli svoj port.

Nakon što dođemo do podataka, moramo ih raspakirati. Ako spojimo [ispisni] objekt na [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 volumen 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 pomoću kojeg možete manipulirati svime što želite u svemiru 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 uputama …).

Korak 4:

Gore smo uspostavili komunikaciju između ploče senzora i čistih podataka. Ako se želite više zabaviti, spojite svoje izlazne podatke na neke oscilatore! Igrajte se s kontrolom glasnoće! Možda kontrolirati neko vrijeme kašnjenja ili odjeknuti! svijet je tvoja Kamenica!

Preporučeni: