Indholdsfortegnelse:

Brug af Complex Arts Sensor Board til at styre rene data over WiFi: 4 trin (med billeder)
Brug af Complex Arts Sensor Board til at styre rene data over WiFi: 4 trin (med billeder)

Video: Brug af Complex Arts Sensor Board til at styre rene data over WiFi: 4 trin (med billeder)

Video: Brug af Complex Arts Sensor Board til at styre rene data over WiFi: 4 trin (med billeder)
Video: Камера ANBIUX ДВУГЛАЗКА УДИВИЛА после ОБНОВЛЕНИЯ!!! 2024, Juli
Anonim
Brug af Complex Arts Sensor Board til at styre rene data over WiFi
Brug af Complex Arts Sensor Board til at styre rene data over WiFi
Brug af Complex Arts Sensor Board til at styre rene data over WiFi
Brug af Complex Arts Sensor Board til at styre rene data over WiFi

Har du nogensinde ønsket at eksperimentere med gestuskontrol? Få tingene til at bevæge sig med en håndbølge? Styr musik med et twist af dit håndled? Denne instruktør viser dig hvordan!

Complex Arts Sensor Board (complexarts.net) er en alsidig mikrokontroller baseret på ESP32 WROOM. Det har alle funktionerne på ESP32-platformen, herunder indbygget WiFi og Bluetooth, og 23 konfigurerbare GPIO-ben. Sensorbrættet har også BNO_085 IMU - en 9 DOF -bevægelsesprocessor, der udfører indbyggede sensorfusions- og kvaternionligninger, der giver superpræcis orientering, tyngdekraftvektor og lineære accelerationsdata. Sensorbrættet kan programmeres ved hjælp af Arduino, MicroPython eller ESP-IDF, men til denne lektion programmerer vi tavlen med Arduino IDE. Det er vigtigt at bemærke, at ESP32 -modulerne ikke er programmerbare fra Arduino IDE, men det er meget enkelt at gøre det muligt. der er en god tutorial her: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, der skal tage cirka 2 minutter at fuldføre. Det sidste stykke setup, vi har brug for, er driveren til USB-til-UART-chippen på Sensor Board, som kan findes her: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivere. Vælg bare dit operativsystem og installer, hvilket skulle tage cirka 2 minutter mere. Når det er gjort, er vi godt i gang!

[Denne lektion forudsætter ikke nogen fortrolighed med hverken Arduino eller Pure Data, men den dækker ikke deres installation. Arduino kan findes på aduino.cc. Pure Data kan findes på puredata.info. Begge steder har nemme at følge instruktioner til installation og opsætning.]

Også … de begreber, der er dækket i denne vejledning, såsom opsætning af UDP -forbindelser, programmering af ESP32 med Arduino og grundlæggende Pure Data -patchbygning - er byggesten, der kan anvendes til utallige projekter, så du skal ikke bøje dig her, når du har fik disse begreber ned!

Forbrugsvarer

1. Complex Arts Sensor Board

2. Arduino IDE

3. Ren data

Trin 1: Undersøgelse af koden:

Undersøgelse af koden
Undersøgelse af koden
Undersøgelse af koden
Undersøgelse af koden

Først ser vi på Arduino -koden. (Kilden er tilgængelig på https://github.com/ComplexArts/SensorBoardArduino. Det anbefales, at du følger koden, mens vi går.) Vi har brug for nogle biblioteker, hvoraf det ene ikke er et kernearduino -bibliotek, så du skal muligvis installeres. Dette projekt er afhængigt af filen SparkFun_BNO080_Arduino_Library.h, så hvis du ikke har det, skal du gå til Sketch -> Inkluder bibliotek -> Administrer biblioteker. Indtast “bno080”, og det førnævnte bibliotek vises. Tryk på installer.

De andre tre biblioteker, der bruges, skal leveres med Arduino som standard. Først vil vi bruge SPI -biblioteket til at kommunikere med BNO. Det er også muligt at bruge UART mellem ESP32 og BNO, men da SparkFun allerede har et bibliotek, der bruger SPI, holder vi fast ved det. (Tak, SparkFun!) Inklusive SPI.h -filen giver os mulighed for at vælge, hvilke pins og porte vi vil bruge til SPI -kommunikationen.

WiFi -biblioteket indeholder de funktioner, der giver os mulighed for at komme på et trådløst netværk. WiFiUDP indeholder de funktioner, der giver os mulighed for at sende og modtage data over det netværk. De næste to linjer får os til netværket - indtast dit netværksnavn og adgangskode. De to linjer efter det angiver netværksadressen og porten, som vi sender vores data til. I dette tilfælde sender vi bare, hvilket betyder at sende det ud til alle på vores netværk, der lytter. Portnummeret bestemmer, hvem der lytter, som vi ser om lidt.

Disse to næste linjer opretter medlemmer til deres respektive klasser, så vi let kan få adgang til deres funktioner senere.

Derefter tildeler vi de korrekte stifter af ESP til deres respektive ben på BNO.

Nu konfigurerer vi SPI -klassen, og indstiller også SPI -portens hastighed.

Endelig kommer vi til opsætningsfunktionen. Her starter vi en seriel port, så vi kan overvåge vores output på den måde, hvis vi vil. Derefter starter vi WiFi. Bemærk, at programmet venter på en WiFi -forbindelse, før det fortsætter. Når WiFi er tilsluttet, starter vi UDP -forbindelsen og udskriver derefter vores netværksnavn og vores IP -adresse til den serielle skærm. Derefter starter vi SPI -porten og kontrollerer kommunikation mellem ESP og BNO. Endelig kalder vi funktionen "enableRotationVector (50);" da vi kun vil bruge rotationsvektor til denne lektion.

Trin 2: Resten af koden…

Resten af koden…
Resten af koden…

Inden vi går til hovedsløjfen (), har vi en funktion kaldet "mapFloat."

Dette er en brugerdefineret funktion, som vi har tilføjet for at kortlægge eller skalere værdier til andre værdier. Den indbyggede kortfunktion i Arduino tillader kun heltalskortlægning, men alle vores startværdier fra BNO vil være mellem -1 og 1, så vi bliver nødt til manuelt at skalere dem til de værdier, vi virkelig ønsker. Men ingen bekymringer - her er den enkle funktion til at gøre netop det:

Nu kommer vi til hovedsløjfen (). Den første ting, du vil bemærke, er en anden blokeringsfunktion, som den, der får programmet til at vente på en netværksforbindelse. Denne stopper, indtil der er data fra BNO. Når vi begynder at modtage disse data, tildeler vi de indgående quaternion -værdier til variabler med flydende punkter og udskriver disse data til den serielle skærm.

Nu skal vi kortlægge disse værdier.

[Et ord om UDP-kommunikation: data overføres over UDP i 8-bit pakker eller værdier fra 0-255. Alt over 255 vil blive skubbet til den næste pakke og tilføje til dens værdi. Derfor skal vi sikre os, at der ikke er værdier over 255.]

Som nævnt før har vi indgående værdier i området -1 -1. Dette giver os ikke meget at arbejde med, da alt under 0 vil blive afskåret (eller vise sig som 0), og vi ikke kan gøre et ton med værdier mellem 0 -1. Vi skal først deklarere en ny variabel for at holde vores kortlagte værdi, derefter tager vi den oprindelige variabel og kortlægger den fra -1 -1 til 0 -255 og tildeler resultatet til vores nye variabel kaldet Nx.

Nu hvor vi har vores kortlagte data, kan vi sammensætte vores pakke. For at gøre det skal vi deklarere en buffer for pakkedataene og give dem en størrelse på [50] for at sikre, at alle data passer. Vi begynder derefter pakken med den adresse og port, vi har angivet ovenfor, skriver vores buffer og 3 værdier til pakken og slutter derefter pakken.

Endelig udskriver vi vores kortlagte koordinater til den serielle skærm. Nu er Arduino -koden færdig! Flash koden til Sensor Board, og kontroller den serielle skærm for at sikre, at alt fungerer som forventet. Du bør se kvaternionværdierne samt de kortlagte værdier.

Trin 3: Oprettelse af forbindelse til rene data …

Opretter forbindelse til rene data …
Opretter forbindelse til rene data …

Nu til Pure Data! Åbn Pure Data, og start en ny patch (ctrl n). Den patch, vi opretter, er meget enkel og har kun syv objekter. Det første, vi skal oprette, er [netreceive] -objektet. Dette er brød og smør i vores patch, der håndterer al UDP -kommunikation. Bemærk, at der er tre argumenter for [netreceive] -objektet; -u angiver UDP, -b angiver binær, og 7401 er naturligvis den port, vi lytter til. Du kan også sende meddelelsen "lyt 7401" til [netreceive] for at angive din port.

Når vi har data, der kommer ind, skal vi pakke det ud. Hvis vi forbinder et [print] -objekt til [netrecieve], kan vi se, at dataene i første omgang kommer til os som en strøm af tal, men vi vil analysere disse tal og bruge hvert enkelt til noget andet. For eksempel vil du måske bruge X-akse-rotation til at styre en oscillators tonehøjde og Y-aksen for volumen eller et vilkårligt antal andre muligheder. For at gøre det går datastrømmen gennem et [udpakning] -objekt, der har tre floats (f f f), er dets argumenter.

Nu hvor du er så langt, er verden din østers! Du har en trådløs controller, som du kan bruge til at manipulere alt, hvad du ønsker i Pure Data -universet. Men stop der! Udover Rotation Vector, prøv accelerometeret eller magnetometeret. Prøv at bruge særlige funktioner i BNO, f.eks. "Dobbelt tryk" eller "ryste". Alt det kræver er lidt at grave i brugermanualerne (eller den næste instruerbare …).

Trin 4:

Det, vi har gjort ovenfor, er at oprette kommunikation mellem Sensor Board og Pure Data. Hvis du vil begynde at have det sjovere, skal du tilslutte dine dataoutput til nogle oscillatorer! Spil med lydstyrkekontrol! Måske kontrollere nogle forsinkelsestider eller rumklang! verden er din østers!

Anbefalede: