Taula de continguts:
- Subministraments
- Pas 1: examen del codi:
- Pas 2: la resta del codi …
- Pas 3: connectar amb dades pures …
- Pas 4:
Vídeo: Ús del complex Arts Sensor Board per controlar dades pures mitjançant WiFi: 4 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
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:
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 …
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 …
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:
Controlador de coixinets de mostra amb dades pures: 4 passos
Controlador de coixinets de mostra que utilitza dades pures: en aquest manual es crearà un controlador que permetrà que alguns coixinets electrònics de bateria Roland antics activin sons sense el mòdul de bateria original que venia amb el kit. Utilitzaré Pure Data per crear un pegat per carregar alguns fitxers wav i després p
Com fer un dispositiu IoT per controlar els electrodomèstics i controlar el temps mitjançant Esp8266: 5 passos
Com fer un dispositiu IoT per controlar els electrodomèstics i controlar el clima mitjançant Esp8266: Internet de les coses (IoT) és la interconnexió de dispositius físics (també anomenats "dispositius connectats" i "dispositius intel·ligents"), edificis, i altres elements integrats amb electrònica, programari, sensors, actuadors i
Controlar Arduino mitjançant un telèfon intel·ligent mitjançant USB amb l'aplicació Blynk: 7 passos (amb imatges)
Controlar Arduino mitjançant un telèfon intel·ligent mitjançant USB amb l’aplicació Blynk: en aquest tutorial, aprendrem a utilitzar l’aplicació Blynk i Arduino per controlar la llum, la combinació es farà a través del port sèrie USB. la solució més senzilla que controla remotament el vostre Arduino o c
UI d'Android (remotexy) per controlar el motor servo mitjançant Arduino i Bluetooth: 7 passos (amb imatges)
Interfície d'usuari d'Android (remotexy) per controlar el motor servo mitjançant Arduino i Bluetooth: en aquest manual instructiu us faré un pas ràpid per fer la interfície d'usuari d'Android mitjançant Remotexy Interface Maker per controlar el motor servo connectat a Arduino Mega mitjançant Bluetooth. Aquest vídeo mostra com la IU controlarà la velocitat i la posició del servomotor
Centre de recollida de dades del sensor habilitat per IoT amb ESP8266 i PubNub: 9 passos (amb imatges)
Centre de recollida de dades del sensor habilitat per IoT amb ESP8266 i PubNub: la majoria dels tutorials de l’ESP8266 són a nivell de principiants (parpellejant remotament un led) o massa complexos per a algú que busca alguna cosa per millorar i millorar les seves habilitats de parpelleig de leds. objectius instructius per salvar aquesta bretxa per crear