Taula de continguts:

Ús del complex Arts Sensor Board per controlar dades pures mitjançant WiFi: 4 passos (amb imatges)
Ús del complex Arts Sensor Board per controlar dades pures mitjançant WiFi: 4 passos (amb imatges)

Vídeo: Ús del complex Arts Sensor Board per controlar dades pures mitjançant WiFi: 4 passos (amb imatges)

Vídeo: Ús del complex Arts Sensor Board per controlar dades pures mitjançant WiFi: 4 passos (amb imatges)
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, De novembre
Anonim
Utilització de la placa de sensors Complex Arts per controlar dades pures a través de WiFi
Utilització de la placa de sensors Complex Arts per controlar dades pures a través de WiFi
Utilització de la placa de sensors Complex Arts per controlar dades pures a través de WiFi
Utilització de la placa de sensors Complex Arts per controlar dades pures a través de WiFi

Alguna vegada has volgut experimentar amb el control gestual? Feu que les coses es moguin amb una onada de la mà? Voleu controlar la música amb un gir del canell? Aquest instructiu us mostrarà com fer-ho!

El Complex Arts Sensor Board (complexarts.net) és un microcontrolador versàtil basat en l’ESP32 WROOM. Té totes les funcions de la plataforma ESP32, incloses les connexions WiFi i Bluetooth integrades, i 23 pins GPIO configurables. La placa del sensor també compta amb el BNO_085 IMU, un processador de moviment de 9 DOF que realitza equacions de fusió i quaternió de sensors a bord, proporcionant dades d’orientació, vector de gravetat i acceleració lineal súper precises. La placa del sensor es pot programar mitjançant Arduino, MicroPython o ESP-IDF, però per a aquesta lliçó programarem la placa amb l'IDE Arduino. És important tenir en compte que els mòduls ESP32 no són programables de forma nativa des de l’IDE Arduino, però fer-ho possible és molt senzill; aquí hi ha un gran tutorial: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ que hauria de trigar uns 2 minuts a completar-se. La darrera configuració que necessitem és el controlador del xip USB-a-UART de la placa sensor, que es pot trobar aquí: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivers. Només heu de triar el sistema operatiu i instal·lar-lo, que hauria de trigar uns 2 minuts més. Un cop fet això, ja estem bé.

[Aquesta lliçó no suposa cap familiaritat ni amb Arduino ni amb Pure Data, però no cobrirà la seva instal·lació. Arduino es pot trobar a aduino.cc. Pure Data es pot trobar a puredata.info. Tots dos llocs tenen instruccions fàcils de seguir per instal·lar i configurar.]

A més … els conceptes tractats en aquest tutorial, com configurar connexions UDP, programar l’ESP32 amb Arduino i la construcció bàsica de pegats Pure Data, són blocs que es poden aplicar a infinitat de projectes, així que no us quedeu aquí un cop hàgiu ha rebutjat aquests conceptes!

Subministraments

1. Taula de sensors d’arts complexes

2. ID Arduino

3. Dades pures

Pas 1: examen del codi:

Examen del codi
Examen del codi
Examen del codi
Examen del codi

En primer lloc, veurem el codi Arduino. (La font està disponible a https://github.com/ComplexArts/SensorBoardArduino. Es recomana que seguiu el codi a mesura que anem avançant.) Necessitem algunes biblioteques, una de les quals no és una biblioteca Arduino bàsica, de manera que pot ser que hagueu d’instal·lar-lo. Aquest projecte es basa en el fitxer SparkFun_BNO080_Arduino_Library.h, de manera que, si no en teniu, haureu d’anar a Sketch -> Inclou biblioteca -> Gestiona biblioteques. Escriviu “bno080” i apareixerà la biblioteca esmentada. Premeu Instal·la.

Les altres tres biblioteques que s’utilitzen haurien de venir per defecte amb Arduino. En primer lloc, utilitzarem la biblioteca SPI per comunicar-nos amb el BNO. També és possible utilitzar UART entre l’ESP32 i el BNO, però com que SparkFun ja té una biblioteca que utilitza SPI, ens en quedarem. (Gràcies, SparkFun!) La inclusió del fitxer SPI.h ens permetrà seleccionar quins pins i ports volem utilitzar per a la comunicació SPI.

La biblioteca WiFi conté les funcions que ens permeten accedir a una xarxa sense fils. WiFiUDP conté les funcions que ens permeten enviar i rebre dades per aquesta xarxa. Les dues línies següents ens portaran a la xarxa: introduïu el vostre nom i contrasenya de xarxa. Les dues línies posteriors especifiquen l’adreça de xarxa i el port al qual enviam les nostres dades. En aquest cas, només emetrem, cosa que significa que l’enviarem a qualsevol persona de la nostra xarxa que estigui escoltant. El número de port determina qui escolta, com veurem en una mica.

Les següents dues línies creen membres per a les seves respectives classes, de manera que podrem accedir fàcilment a les seves funcions més endavant.

A continuació, assignem els pins adequats de l’ESP als seus respectius pins del BNO.

Ara configurem el membre de la classe SPI, també establint la velocitat del port SPI.

Finalment arribem a la funció de configuració. Aquí iniciarem un port sèrie perquè puguem controlar la nostra sortida d’aquesta manera si volem. Després comencem el WiFi. Tingueu en compte que el programa espera una connexió WiFi abans de continuar. Un cop connectat el WiFi, comencem la connexió UDP i, a continuació, imprimim el nom de la xarxa i la nostra adreça IP al monitor sèrie. Després, iniciem el port SPI i comprovem si hi ha comunicació entre l’ESP i el BNO. Per últim, anomenem la funció "enableRotationVector (50);" ja que només utilitzarem el vector de rotació per a aquesta lliçó.

Pas 2: la resta del codi …

La resta del codi …
La resta del codi …

Abans d'anar al bucle principal (), tenim una funció anomenada "mapFloat".

Aquesta és una funció personalitzada que hem afegit per tal de mapar o escalar valors a altres valors. La funció de mapa integrada a Arduino només permet el mapatge enter, però tots els nostres valors inicials del BNO estaran entre -1 i 1, de manera que els haurem d’escalar manualment als valors que realment volem. No us preocupeu, però, aquí teniu la funció senzilla de fer això:

Ara arribem al bucle principal (). El primer que notareu és una altra funció de bloqueig, com la que fa esperar al programa una connexió de xarxa. Aquest s’atura fins que hi ha dades del BNO. Quan comencem a rebre aquestes dades, assignem els valors de quaternió entrants a variables de coma flotant i imprimim aquestes dades al monitor sèrie.

Ara hem de mapar aquests valors.

[Una paraula sobre la comunicació UDP: les dades es transfereixen per UDP en paquets de 8 bits o valors de 0-255. Qualsevol cosa superior a 255 s'enviarà al següent paquet, afegint el seu valor. Per tant, hem d’assegurar-nos que no hi hagi valors superiors a 255.]

Com s'ha esmentat anteriorment, tenim valors entrants en el rang de -1 a 1. Això no ens dóna molt de treball, ja que qualsevol cosa inferior a 0 es tallarà (o es mostrarà com a 0) i no podem fer-ho una tona amb valors entre 0 - 1. Primer hem de declarar una nova variable per mantenir el valor assignat, després agafem aquesta variable inicial i la mapem de -1 - 1 a 0 - 255, assignant el resultat a la nostra nova variable anomenada Nx.

Ara que tenim les nostres dades mapades, podem unir el paquet. Per fer-ho, hem de declarar una memòria intermèdia per al paquet de dades, donant-li una mida de [50] per assegurar-nos que totes les dades encaixin. A continuació, comencem el paquet amb l'adreça i el port que hem especificat anteriorment, escrivim el nostre buffer i 3 valors al paquet to, i després acabem el paquet.

Per últim, imprimim les nostres coordenades mapeades al monitor sèrie. Ara el codi Arduino està acabat. Feu llançar el codi a la placa del sensor i comproveu el monitor sèrie per assegurar-vos que tot funciona correctament. Hauríeu de veure els valors del quaternió i els valors assignats.

Pas 3: connectar amb dades pures …

Connectant amb dades pures …
Connectant amb dades pures …

Ara per Pure Data! Obriu Pure Data i inicieu un nou pedaç (ctrl n). El pegat que crearem és molt senzill, només té set objectes. El primer que crearem és l’objecte [netreceive]. Aquest és el pa i la mantega del nostre pegat, que gestiona tota la comunicació UDP. Fixeu-vos que hi ha tres arguments per a l'objecte [netreceive]; el -u especifica UDP, el -b especifica el binari i, per descomptat, 7401 és el port que escoltem. També podeu enviar el missatge “escolta 7401” a [netreceive] per especificar el vostre port.

Un cop tinguem dades, hem de desempaquetar-les. Si connectem un objecte [imprimir] a [netrecieve], podem veure que les dades ens arriben inicialment com un flux de números, però volem analitzar-los i utilitzar-los per a alguna cosa diferent. Per exemple, és possible que vulgueu utilitzar la rotació de l'eix X per controlar el pas d'un oscil·lador i l'eix Y per al volum o qualsevol altra quantitat de possibilitats. Per fer-ho, el flux de dades passa per un objecte [descomprimir] que té tres flotants (f f f) són els seus arguments.

Ara que esteu fins aquí, el món és la vostra ostra! Teniu un controlador sense fils que podeu utilitzar per manipular tot allò que vulgueu a l’univers Pure Data. Però atureu-vos aquí! A més de Rotation Vector, proveu l’acceleròmetre o el magnetòmetre. Proveu d'utilitzar funcions especials del BNO, com ara "doble toc" o "sacsejar". Tot el que cal és aprofundir una mica en els manuals de l'usuari (o en el següent instructable …).

Pas 4:

El que hem fet anteriorment és configurar la comunicació entre la placa de sensors i Pure Data. Si voleu començar a divertir-vos més, connecteu les vostres sortides de dades a alguns oscil·ladors. Juga amb el control de volum. Potser controleu alguns temps de retard o reverb! el món és la teva ostra!

Recomanat: