Përmbajtje:

Përdorimi i bordit të sensorëve të arteve komplekse për të kontrolluar të dhënat e pastra përmes WiFi: 4 hapa (me fotografi)
Përdorimi i bordit të sensorëve të arteve komplekse për të kontrolluar të dhënat e pastra përmes WiFi: 4 hapa (me fotografi)

Video: Përdorimi i bordit të sensorëve të arteve komplekse për të kontrolluar të dhënat e pastra përmes WiFi: 4 hapa (me fotografi)

Video: Përdorimi i bordit të sensorëve të arteve komplekse për të kontrolluar të dhënat e pastra përmes WiFi: 4 hapa (me fotografi)
Video: LIGHT CONTROL SENSOR 2024, Nëntor
Anonim
Përdorimi i Bordit të Sensorit të Arteve Komplekse për të kontrolluar të dhënat e pastra mbi WiFi
Përdorimi i Bordit të Sensorit të Arteve Komplekse për të kontrolluar të dhënat e pastra mbi WiFi
Përdorimi i Bordit të Sensorit të Arteve Komplekse për të kontrolluar të dhënat e pastra mbi WiFi
Përdorimi i Bordit të Sensorit të Arteve Komplekse për të kontrolluar të dhënat e pastra mbi WiFi

A keni dashur ndonjëherë të eksperimentoni me kontrollin e gjesteve? I bëni gjërat të lëvizin me një lëvizje të dorës? Kontrolloni muzikën me një kthesë të dorës? Ky udhëzues do t'ju tregojë se si!

Bordi i sensorëve të arteve komplekse (complexarts.net) është një mikrokontrollues i gjithanshëm i bazuar në ERO32 WROOM. Ka të gjitha tiparet e platformës ESP32, përfshirë WiFi të integruar dhe Bluetooth, dhe 23 kunja GPIO të konfigurueshme. Bordi i Sensorëve gjithashtu përmban BNO_085 IMU - një procesor lëvizjeje 9 DOF që kryen shkrirjen e sensorëve në bord dhe ekuacionet kuaternion, duke siguruar orientim super të saktë, vektor graviteti dhe të dhëna lineare të përshpejtimit. Bordi Sensor mund të programohet duke përdorur Arduino, MicroPython ose ESP-IDF, por për këtë mësim ne do të programojmë bordin me Arduino IDE. Isshtë e rëndësishme të theksohet se modulet ESP32 nuk janë të programueshëm nga Arduino IDE, por ta bësh atë të mundur është shumë e thjeshtë; ekziston një mësim i shkëlqyeshëm këtu: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ që duhet të marrë rreth 2 minuta për të përfunduar. Pjesa e fundit e konfigurimit që na nevojitet është drejtuesi i çipit USB-to-UART në Sensor Board, i cili mund të gjendet këtu: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivers. Thjesht zgjidhni OS -in tuaj dhe instaloni, i cili duhet të zgjasë rreth 2 minuta të tjera. Pasi të bëhet kjo, ne jemi mirë të shkojmë!

[Ky mësim nuk supozon ndonjë njohje me Arduino ose Pure Data, megjithatë nuk do të mbulojë instalimin e tyre. Arduino mund të gjendet në aduino.cc. Të dhënat e pastra mund të gjenden në puredata.info. Të dy faqet kanë udhëzime të lehta për t'u ndjekur për instalim dhe konfigurim.]

Gjithashtu… konceptet e përfshira në këtë tutorial, të tilla si krijimi i lidhjeve UDP, programimi i ESP32 me Arduino dhe ndërtimi i patch -it bazë Pure Data - janë blloqe ndërtimi që mund të aplikohen për projekte të panumërta, kështu që mos u përkulni këtu pasi të keni përfunduar i hodhi poshtë këto koncepte!

Furnizimet

1. Bordi i Sensorëve të Arteve Komplekse

2. Arduino IDE

3. Të dhëna të pastra

Hapi 1: Shqyrtimi i Kodit:

Shqyrtimi i Kodit
Shqyrtimi i Kodit
Shqyrtimi i Kodit
Shqyrtimi i Kodit

Së pari, ne do të shikojmë kodin Arduino. (Burimi është i disponueshëm në https://github.com/ComplexArts/SensorBoardArduino. Rekomandohet që të ndiqni së bashku me kodin ndërsa shkojmë.) Ne kemi nevojë për disa biblioteka, njëra prej të cilave nuk është një bibliotekë bazë Arduino, kështu që ju mund të ketë nevojë ta instaloni. Ky projekt mbështetet në skedarin SparkFun_BNO080_Arduino_Library.h, kështu që nëse nuk e keni atë, do t'ju duhet të shkoni te Sketch -> Include Library -> Manage Bibliotekat. Shkruani "bno080" dhe biblioteka e lartpërmendur do të shfaqet. Shtypni instalo.

Tre bibliotekat e tjera që përdoren duhet të vijnë me Arduino si parazgjedhje. Së pari, ne do të përdorim bibliotekën SPI për të komunikuar me BNO. Alsoshtë gjithashtu e mundur të përdoret UART midis ESP32 dhe BNO, por meqenëse SparkFun tashmë ka një bibliotekë që përdor SPI, ne do të qëndrojmë me këtë. (Faleminderit, SparkFun!) Përfshirja e skedarit SPI.h do të na lejojë të zgjedhim cilat kunja dhe porte duam të përdorim për komunikimin SPI.

Biblioteka WiFi përmban funksionet që na lejojnë të kalojmë në një rrjet pa tel. WiFiUDP përmban funksionet që na lejojnë të dërgojmë dhe marrim të dhëna në atë rrjet. Dy rreshtat e ardhshëm na futin në rrjet - shkruani emrin dhe fjalëkalimin e rrjetit tuaj. Dy rreshtat pas kësaj specifikojnë adresën e rrjetit dhe portën në të cilën po dërgojmë të dhënat tona. Në këtë rast, ne thjesht do të transmetojmë, që do të thotë t'ia dërgojmë kujtdo në rrjetin tonë që po dëgjon. Numri i portës përcakton se kush po dëgjon, siç do ta shohim në pak.

Këto dy rreshta të ardhshëm krijojnë anëtarë për klasat e tyre përkatëse, në mënyrë që të kemi qasje të lehtë në funksionet e tyre më vonë.

Tjetra, ne caktojmë kunjat e duhura të ESP për kunjat e tyre përkatëse në BNO.

Tani ne vendosëm anëtarin e klasës SPI, duke vendosur gjithashtu shpejtësinë e portit SPI.

Më në fund arrijmë te funksioni i konfigurimit. Këtu, ne do të fillojmë një port serik në mënyrë që të mund të monitorojmë daljen tonë në atë mënyrë nëse duam. Pastaj fillojmë WiFi. Vini re se programi pret një lidhje WiFi para se të vazhdoni. Pasi të jetë lidhur WiFi, ne fillojmë lidhjen UDP, pastaj printojmë emrin e rrjetit tonë dhe adresën tonë IP në monitorin serik. Pas kësaj ne fillojmë portin SPI dhe kontrollojmë për komunikim midis ESP dhe BNO. Së fundmi, ne e quajmë funksionin "enableRotationVector (50);" pasi ne do të përdorim vetëm vektorin e rrotullimit për këtë mësim.

Hapi 2: Pjesa tjetër e Kodit…

Pjesa tjetër e Kodit…
Pjesa tjetër e Kodit…

Para se të shkojmë në lakin kryesor (), ne kemi një funksion të quajtur "mapFloat".

Ky është një funksion me porosi që ne kemi shtuar në mënyrë që të përcaktojmë ose shkallëzojmë vlerat në vlerat e tjera. Funksioni i integruar i hartës në Arduino lejon vetëm hartimin e numrave të plotë, por të gjitha vlerat tona fillestare nga BNO do të jenë midis -1 dhe 1, kështu që do të na duhet t'i shkallëzojmë me dorë në vlerat që duam vërtet. Sidoqoftë, mos u shqetësoni - këtu është funksioni i thjeshtë për ta bërë atë:

Tani vijmë në lakin kryesor (). Gjëja e parë që do të vini re është një funksion tjetër bllokues, si ai që e bën programin të presë për një lidhje rrjeti. Kjo ndalet derisa të ketë të dhëna nga BNO. Kur fillojmë të marrim ato të dhëna, ne i caktojmë vlerat e kuaternionit në hyrje variablave të pikës lundruese dhe i printojmë ato të dhëna në monitorin serik.

Tani ne duhet t'i hartojmë ato vlera.

[Një fjalë për komunikimin UDP: të dhënat transferohen mbi UDP në pako 8-bit, ose vlera nga 0-255. Çdo gjë mbi 255 do të shtyhet në paketën tjetër, duke shtuar vlerën e saj. Prandaj, ne duhet të sigurohemi që nuk ka vlera mbi 255.]

Siç u përmend më parë, ne kemi vlera hyrëse në rangun -1 -1. Kjo nuk na jep shumë për të punuar, pasi çdo gjë nën 0 do të ndërpritet (ose do të shfaqet si 0) dhe ne nuk mund ta bëjmë një ton me vlera midis 0 -1. Ne së pari duhet të deklarojmë një ndryshore të re për të mbajtur vlerën tonë të hartuar, pastaj marrim atë ndryshore fillestare dhe e hartojmë nga -1 -1 në 0 -255, duke i caktuar rezultatin ndryshores sonë të re të quajtur Nx

Tani që kemi të dhënat tona të hartuara, mund t'i bashkojmë paketat tona. Për ta bërë këtë, ne duhet të deklarojmë një tampon për të dhënat e paketave, duke i dhënë një madhësi prej [50] për t'u siguruar që të gjitha të dhënat do të përshtaten. Ne pastaj fillojmë paketën me adresën dhe portin që specifikuam më sipër, shkruajmë tampon tonë dhe 3 vlera në paketën to, pastaj përfundojmë paketën.

Së fundi, ne shtypim koordinatat tona të hartuara në monitorin serik. Tani kodi Arduino është bërë! Ndizni kodin në Bordin e Sensorëve dhe kontrolloni monitorin serik për t'u siguruar që gjithçka po funksionon siç pritej. Ju duhet të shihni vlerat e kuaternionit, si dhe vlerat e hartuara.

Hapi 3: Lidhja me të Dhëna të Pastra…

Lidhja me të dhënat e pastra…
Lidhja me të dhënat e pastra…

Tani për të dhënat e pastra! Hapni të dhënat e pastra dhe filloni një arna të re (ctrl n). Furça që do të krijojmë është shumë e thjeshtë, ka vetëm shtatë objekte. E para që do të krijojmë është objekti [netreceive]. Kjo është buka dhe gjalpi i copës sonë, që trajton të gjithë komunikimin UDP. Vini re se ka tre argumente për objektin [netreceive]; -u specifikon UDP, -b specifikon binarin, dhe 7401 është sigurisht porti në të cilin po dëgjojmë. Ju gjithashtu mund të dërgoni mesazhin "dëgjoni 7401" tek [netreceive] për të specifikuar portin tuaj.

Pasi të kemi të dhëna që vijnë, duhet t'i shpaketojmë. Nëse lidhim një objekt [print] me [netrecieve], ne mund të shohim që të dhënat fillimisht na vijnë si një rrjedhë numrash, por ne duam t’i analizojmë ata numra dhe t’i përdorim secilin për diçka të ndryshme. Për shembull, ju mund të dëshironi të përdorni rrotullimin e boshtit X për të kontrolluar lartësinë e një oshilatori, dhe boshtin Y për vëllimin, ose ndonjë numër mundësish të tjera. Për ta bërë këtë, rryma e të dhënave kalon nëpër një objekt [shpaketoj] që ka tre nota (f f f) janë argumentet e tij.

Tani që jeni kaq larg, bota është goca juaj! Ju keni një kontrollues pa tel që mund ta përdorni për të manipuluar gjithçka që dëshironi në universin e të Dhënave të Pastra. Por ndalo atje! Përveç Vektorit të Rrotullimit, provoni përshpejtuesin ose magnetometrin. Provoni të përdorni funksione të veçanta të BNO, të tilla si "prekje e dyfishtë" ose "shkundje". Mjafton të gërmosh pak në manualet e përdoruesit (ose udhëzuesin tjetër…).

Hapi 4:

Ajo që kemi bërë më lart është krijimi i komunikimit midis Bordit të Sensorëve dhe të Dhënave të Pastra. Nëse doni të filloni të argëtoheni më shumë, lidhni rezultatet e të dhënave tuaja me disa oshilatorë! Luaj me kontrollin e volumit! Ndoshta kontrolloni disa kohë vonesash ose jehoni! bota eshte goca jote!

Recommended: