Sisällysluettelo:

Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi: n kautta: 4 vaihetta (kuvilla)
Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi: n kautta: 4 vaihetta (kuvilla)

Video: Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi: n kautta: 4 vaihetta (kuvilla)

Video: Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi: n kautta: 4 vaihetta (kuvilla)
Video: Täydellinen vastauskyselykurssi tunnissa | TanStack Query v4 aloittelijoille 2024, Marraskuu
Anonim
Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi -yhteyden kautta
Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi -yhteyden kautta
Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi -yhteyden kautta
Complex Arts -anturikortin käyttäminen puhtaan datan hallintaan WiFi -yhteyden kautta

Oletko koskaan halunnut kokeilla eleiden hallintaa? Saa asiat liikkeelle käden heilutuksella? Hallitsetko musiikkia ranteesi kiertämällä? Tämä Instructable näyttää kuinka!

Complex Arts Sensor Board (complexarts.net) on monipuolinen mikro -ohjain, joka perustuu ESP32 WROOM -laitteeseen. Siinä on kaikki ESP32-alustan ominaisuudet, mukaan lukien sisäänrakennettu WiFi ja Bluetooth, sekä 23 konfiguroitavaa GPIO-nastaa. Anturikortissa on myös BNO_085 IMU - 9 DOF -liikeprosessori, joka suorittaa sisäänrakennetut anturien fuusio- ja kvaternioyhtälöt ja tarjoaa erittäin tarkan suunnan, painovoiman ja lineaarisen kiihtyvyyden. Anturikortti voidaan ohjelmoida Arduinolla, MicroPythonilla tai ESP-IDF: llä, mutta tässä oppitunnissa ohjelmoimme levyn Arduino IDE: llä. On tärkeää huomata, että ESP32 -moduuleja ei voi ohjelmoida alun perin Arduino IDE: stä, mutta sen mahdollistaminen on hyvin yksinkertaista; täällä on loistava opetusohjelma: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, jonka pitäisi kestää noin 2 minuuttia. Viimeinen tarvittava määritys on anturikortin USB-UART-sirun ohjain, joka löytyy täältä: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-ajurit. Valitse vain käyttöjärjestelmä ja asenna, mikä kestää noin 2 minuuttia. Kun tämä on tehty, olemme valmiita lähtemään!

[Tämä oppitunti ei edellytä Arduinon tai Pure Datan tuntemusta, mutta se ei kata niiden asennusta. Arduino löytyy osoitteesta aduino.cc. Pure Data löytyy osoitteesta puredata.info. Molemmilla sivustoilla on helppo seurata asennus- ja asennusohjeita.]

Myös… tässä opetusohjelmassa käsiteltyjä käsitteitä, kuten UDP -yhteyksien määrittäminen, ESP32: n ohjelmointi Arduinolla ja perus Pure Data -korjausrakenne - ovat rakennuspalikoita, joita voidaan soveltaa lukemattomiin projekteihin, joten älä kumartu tänne, kun olet sait nämä käsitteet alas!

Tarvikkeet

1. Monimutkainen Arts Sensor Board

2. Arduino IDE

3. Puhdas data

Vaihe 1: Koodin tutkiminen:

Koodin tutkiminen
Koodin tutkiminen
Koodin tutkiminen
Koodin tutkiminen

Ensin katsomme Arduino -koodia. (Lähde on saatavilla osoitteessa https://github.com/ComplexArts/SensorBoardArduino. On suositeltavaa seurata koodin mukana kulkiessamme.) Tarvitsemme joitain kirjastoja, joista yksi ei ole Arduino -ydinkirjasto, joten saattaa joutua asentamaan sen. Tämä projekti perustuu SparkFun_BNO080_Arduino_Library.h -tiedostoon, joten jos sinulla ei ole sitä, sinun on siirryttävä Sketch -> Include Library -> Manage Libraries -kohtaan. Kirjoita "bno080" ja edellä mainittu kirjasto tulee näkyviin. Paina asenna.

Muiden kolmen käytetyn kirjaston tulee olla oletusarvoisesti Arduinon mukana. Ensinnäkin käytämme SPI -kirjastoa kommunikoidaksesi BNO: n kanssa. On myös mahdollista käyttää UART: a ESP32: n ja BNO: n välillä, mutta koska SparkFunilla on jo kirjasto, joka käyttää SPI: tä, pysymme siinä. (Kiitos, SparkFun!) Kun sisällytetään SPI.h -tiedosto, voimme valita, mitä nastoja ja portteja haluamme käyttää SPI -viestintään.

WiFi -kirjasto sisältää toiminnot, joiden avulla voimme siirtyä langattomaan verkkoon. WiFiUDP sisältää toiminnot, joiden avulla voimme lähettää ja vastaanottaa tietoja kyseisen verkon kautta. Seuraavat kaksi riviä saavat meidät verkkoon - kirjoita verkon nimi ja salasana. Kaksi riviä sen jälkeen määrittävät verkko -osoitteen ja portin, johon lähetämme tiedot. Tässä tapauksessa lähetämme vain lähetyksen, mikä tarkoittaa, että lähetämme sen kaikille verkostossamme oleville, jotka kuuntelevat. Portin numero määrittää, kuka kuuntelee, kuten näemme hetken kuluttua.

Nämä kaksi seuraavaa riviä luovat jäseniä omille luokilleen, jotta voimme helposti käyttää niiden toimintoja myöhemmin.

Seuraavaksi määritämme ESP: n oikeat tapit vastaaviin nastoihin BNO: ssa.

Nyt perustimme SPI -luokan jäsenen ja asetimme myös SPI -portin nopeuden.

Lopuksi pääsemme asetustoimintoon. Tässä aloitamme sarjaportin, jotta voimme seurata tuotostamme tällä tavalla, jos haluamme. Sitten aloitamme WiFi. Huomaa, että ohjelma odottaa WiFi -yhteyttä ennen kuin jatkat. Kun WiFi on kytketty, aloitamme UDP -yhteyden ja tulostamme sitten verkon nimen ja IP -osoitteemme sarjamonitoriin. Sen jälkeen käynnistetään SPI -portti ja tarkistetaan, onko ESP: n ja BNO: n välillä yhteys. Lopuksi kutsumme toimintoa "enableRotationVector (50)"; koska käytämme tässä oppitunnissa vain kiertovektoria.

Vaihe 2: Loput koodista…

Loput koodista…
Loput koodista…

Ennen kuin siirrymme pääsilmukkaan (), meillä on toiminto nimeltä “mapFloat”.

Tämä on mukautettu toiminto, jonka olemme lisänneet arvojen kartoittamiseksi tai skaalaamiseksi muihin arvoihin. Arduinon sisäänrakennettu karttatoiminto sallii vain kokonaislukukartoituksen, mutta kaikki BNO: n alkuarvot ovat -1 ja 1 välillä, joten meidän on skaalattava ne manuaalisesti arvoihin, joita todella haluamme. Ei kuitenkaan hätää - tässä on yksinkertainen toiminto, jolla voit tehdä sen:

Nyt päästään pääsilmukkaan (). Ensimmäinen asia, jonka huomaat, on toinen estotoiminto, kuten se, joka saa ohjelman odottamaan verkkoyhteyttä. Tämä pysähtyy, kunnes BNO: lta on tietoja. Kun alamme vastaanottaa kyseisiä tietoja, määritämme saapuvat kvaternioniarvot liukulukuisia muuttujia varten ja tulostamme tiedot sarjavalvontaan.

Nyt meidän on kartoitettava nämä arvot.

[Sana UDP-viestinnästä: tiedot siirretään UDP: n kautta 8-bittisissä paketeissa tai arvot 0-255. Kaikki yli 255 siirretään seuraavaan pakettiin, mikä lisää sen arvoa. Siksi meidän on varmistettava, että arvoja ei ole yli 255.]

Kuten aiemmin mainittiin, saapuvat arvot ovat välillä -1 -1. Tämä ei anna meille paljon työtä, koska kaikki alle 0: n katkaistaan (tai näytetään 0: na), emmekä voi tonni, jonka arvot ovat välillä 0 -1. Meidän on ensin ilmoitettava uusi muuttuja pitääksemme kartoitetun arvon, sitten otamme alkuperäisen muuttujan ja kartoitamme sen -1 -1 -0 -255, määrittämällä tuloksen uudelle muuttujallemme nimeltä Nx.

Nyt kun meillä on kartoitetut tiedot, voimme koota paketin yhteen. Tätä varten meidän on ilmoitettava puskuri pakettidatalle ja annettava sille koko [50] varmistaaksemme, että kaikki tiedot sopivat. Aloitamme paketin yllä mainitulla osoitteella ja portilla, kirjoitamme puskurimme ja 3 arvoa to packetiin ja lopetamme sitten paketin.

Lopuksi tulostamme kartoitetut koordinaatit sarjamonitoriin. Nyt Arduino -koodi on valmis! Flash -koodi anturikortille ja tarkista sarjamonitorista, että kaikki toimii odotetulla tavalla. Sinun pitäisi nähdä kvaternioniarvot sekä yhdistetyt arvot.

Vaihe 3: Yhdistäminen puhtaisiin tietoihin…

Yhdistäminen puhtaan datan kanssa…
Yhdistäminen puhtaan datan kanssa…

Nyt Pure Data! Avaa Pure Data ja aloita uusi korjaustiedosto (ctrl n). Luomamme korjaustiedosto on hyvin yksinkertainen, sillä siinä on vain seitsemän kohdetta. Ensimmäinen, jonka aiomme luoda, on [netrecept] -objekti. Tämä on laastarimme leipä ja voi, joka käsittelee kaiken UDP -viestinnän. Huomaa, että [netrecept] -objektille on kolme argumenttia; -u määrittää UDP: n, -b määrittää binäärin ja 7401 on tietysti portti, jota kuuntelemme. Voit myös lähettää "kuuntele 7401" -viestin osoitteeseen [netrecept] portin määrittämiseksi.

Kun olemme saaneet tietoja, meidän on purettava ne. Jos yhdistämme [print] -objektin [netrecieve] -palveluun, voimme nähdä, että tiedot tulevat alun perin meille numerovirrana, mutta haluamme jäsentää nämä numerot ja käyttää kutakin eri tarkoitukseen. Voit esimerkiksi käyttää X-akselin kiertoa oskillaattorin korkeuden säätämiseen ja Y-akselia äänenvoimakkuuden säätämiseen tai mitä tahansa muuta mahdollisuutta. Tätä varten tietovirta kulkee [purkaa] -objektin läpi, jossa on kolme kelluketta (f f f).

Nyt kun olet niin kaukana, maailma on osterisi! Sinulla on langaton ohjain, jonka avulla voit manipuloida mitä tahansa Pure Data -universumissa. Mutta pysähdy siihen! Kierrosvektorin lisäksi kokeile kiihtyvyys- tai magnetometriä. Kokeile käyttää BNO: n erikoisominaisuuksia, kuten”kaksoisnapautus” tai “ravista”. Tarvitset vain hiukan kaivaa käyttöoppaita (tai seuraavaa ohjetta …).

Vaihe 4:

Edellä tekemämme tiedonsiirtokortin ja Pure Datan välisen yhteyden luominen. Jos haluat aloittaa hauskanpidon, kytke datalähtösi joihinkin oskillaattoreihin! Pelaa äänenvoimakkuuden säätimellä! Ehkä hallita joitakin viiveaikoja tai kaiku! maailma on osterisi!

Suositeltava: