INHOUDSOPGAWE:

Gebruik die Complex Arts Sensor Board om suiwer data via WiFi te beheer: 4 stappe (met foto's)
Gebruik die Complex Arts Sensor Board om suiwer data via WiFi te beheer: 4 stappe (met foto's)

Video: Gebruik die Complex Arts Sensor Board om suiwer data via WiFi te beheer: 4 stappe (met foto's)

Video: Gebruik die Complex Arts Sensor Board om suiwer data via WiFi te beheer: 4 stappe (met foto's)
Video: Шокирующая правда о нечеловеческих НЛО: Джон Гриневальд раскрывает все 2024, November
Anonim
Gebruik die Complex Arts Sensor Board om suiwer data oor WiFi te beheer
Gebruik die Complex Arts Sensor Board om suiwer data oor WiFi te beheer
Gebruik die Complex Arts Sensor Board om suiwer data oor WiFi te beheer
Gebruik die Complex Arts Sensor Board om suiwer data oor WiFi te beheer

Wou u al ooit eksperimenteer met gebaarbeheer? Laat dinge met 'n handbeweging beweeg? Beheer u musiek met 'n draai van u pols? Hierdie instruksies sal jou wys hoe!

Die Complex Arts Sensor Board (complexarts.net) is 'n veelsydige mikrobeheerder gebaseer op die ESP32 WROOM. Dit het al die funksies van die ESP32-platform, insluitend ingeboude WiFi en Bluetooth, en 23 konfigureerbare GPIO-penne. Die Sensor Board bevat ook die BNO_085 IMU - 'n 9 DOF -bewegingsverwerker wat sensorfusie- en quaternion -vergelykings aan boord uitvoer, wat super presiese oriëntasie, gravitasievektor en lineêre versnellingsdata bied. Die sensorbord kan met Arduino, MicroPython of die ESP-IDF geprogrammeer word, maar vir hierdie les sal ons die bord met die Arduino IDE programmeer. Dit is belangrik om daarop te let dat die ESP32 -modules nie oorspronklik uit die Arduino IDE programmeerbaar is nie, maar dit is baie eenvoudig; daar is 'n wonderlike handleiding hier: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ wat ongeveer 2 minute moet neem om te voltooi. Die laaste opset wat ons benodig, is die bestuurder van die USB-na-UART-chip op die sensorbord, wat u hier kan vind: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-bestuurders. Kies net u bedryfstelsel en installeer, wat nog ongeveer 2 minute moet duur. Sodra dit klaar is, is ons gereed om te gaan!

[Hierdie les neem geen kennis van Arduino of Pure Data nie, maar dit dek nie die installasie daarvan nie. Arduino kan gevind word op aduino.cc. Pure Data kan gevind word op puredata.info. Beide webwerwe het maklik om te volg instruksies vir installasie en opstelling.]

Ook … die konsepte wat in hierdie tutoriaal behandel word, soos die oprigting van UDP -verbindings, die programmering van die ESP32 met Arduino en die basiese Pure Data -pleisterbou - is boublokke wat vir talle projekte toegepas kan word, dus moenie hier buk as u eers het hierdie konsepte onder die knie gekry!

Voorrade

1. Komplekse Kunssensorraad

2. Arduino IDE

3. Suiwer data

Stap 1: Ondersoek die kode:

Ondersoek die kode
Ondersoek die kode
Ondersoek die kode
Ondersoek die kode

Eerstens kyk ons na die Arduino -kode. (Die bron is beskikbaar op https://github.com/ComplexArts/SensorBoardArduino. Dit word aanbeveel dat u die kode volg terwyl ons gaan.) Ons benodig 'n paar biblioteke, waarvan een nie 'n kern -Arduino -biblioteek is nie, sodat u moet dit dalk installeer. Hierdie projek maak staat op die SparkFun_BNO080_Arduino_Library.h -lêer, so as u dit nie het nie, moet u na Sketch -> Biblioteek insluit -> Biblioteke bestuur. Tik "bno080" in en die bogenoemde biblioteek verskyn. Druk installeer.

Die ander drie biblioteke wat gebruik word, moet standaard saam met Arduino kom. Eerstens gebruik ons die SPI -biblioteek om met die BNO te kommunikeer. Dit is ook moontlik om UART te gebruik tussen die ESP32 en die BNO, maar aangesien SparkFun reeds 'n biblioteek het wat SPI gebruik, sal ons daarby bly. (Dankie, SparkFun!) Deur die SPI.h -lêer in te sluit, kan ons kies watter penne en poorte ons vir die SPI -kommunikasie wil gebruik.

Die WiFi -biblioteek bevat die funksies waarmee ons toegang tot 'n draadlose netwerk kan kry. WiFiUDP bevat die funksies waarmee ons data oor die netwerk kan stuur en ontvang. Die volgende twee reëls bring ons op die netwerk - voer u netwerknaam en wagwoord in. Die twee reëls daarna spesifiseer die netwerkadres en poort waarna ons ons data stuur. In hierdie geval sal ons net uitsaai, wat beteken dat ons dit aan almal op ons netwerk stuur wat luister. Die poortnommer bepaal wie luister, soos ons eers sal sien.

Hierdie volgende twee reëls skep lede vir hul onderskeie klasse, sodat ons later maklik toegang tot hul funksies kan kry.

Vervolgens ken ons die regte penne van die ESP toe aan hul onderskeie penne op die BNO.

Nou stel ons die SPI -klaslid op, en stel ook die SPI -poortspoed in.

Uiteindelik kom ons by die opstelfunksie. Hier begin ons 'n seriële poort sodat ons ons uitset so kan monitor as ons wil. Dan begin ons met WiFi. Let op dat die program wag vir 'n WiFi -verbinding voordat dit aangaan. Sodra WiFi gekoppel is, begin ons met die UDP -verbinding en druk ons ons netwerknaam en ons IP -adres af op die seriële monitor. Daarna begin ons die SPI -poort en kyk of daar kommunikasie tussen die ESP en die BNO is. Laastens noem ons die funksie 'enableRotationVector (50);' aangesien ons slegs die rotasievektor vir hierdie les sal gebruik.

Stap 2: Die res van die kode …

Die res van die kode …
Die res van die kode …

Voordat ons na die hooflus () gaan, het ons 'n funksie genaamd 'mapFloat'.

Dit is 'n pasgemaakte funksie wat ons bygevoeg het om waardes aan ander waardes toe te lig of te skaal. Die ingeboude kaartfunksie in Arduino laat slegs heelgetal kartering toe, maar al ons aanvanklike waardes van die BNO sal tussen -1 en 1 wees, so ons sal dit handmatig moet skaal na die waardes wat ons regtig wil hê. Maar moenie bekommerd wees nie - hier is die eenvoudige funksie om dit te doen:

Nou kom ons by die hooflus (). Die eerste ding wat u sal opmerk, is nog 'n blokkeringsfunksie, soos die een wat die program laat wag op 'n netwerkverbinding. Hierdie een stop totdat daar data van die BNO is. As ons die data begin ontvang, ken ons die inkomende kwaterniewaardes toe aan veranderlikes met drywende punte en druk ons die data op die seriële monitor.

Nou moet ons die waardes in kaart bring.

['N Woord oor UDP-kommunikasie: data word oorgedra oor UDP in 8-bis-pakkies, of waardes van 0-255. Enigiets bo 255 word na die volgende pakkie gestoot, wat die waarde daarvan toevoeg. Daarom moet ons seker maak dat daar geen waardes bo 255 is nie.]

Soos voorheen genoem, het ons inkomende waardes in die reeks van -1 -1. Dit gee ons nie veel om mee te werk nie, aangesien enigiets onder 0 afgesny word (of as 0 verskyn) en ons nie kan nie 'n ton met waardes tussen 0 -1. Ons moet eers 'n nuwe veranderlike verklaar om ons gekeurde waarde te hou, dan neem ons die aanvanklike veranderlike en karteer dit van -1 -1 tot 0 -255, en gee die resultaat aan ons nuwe veranderlike genaamd Nx.

Noudat ons ons gekarteerde data het, kan ons ons pakkie saamstel. Om dit te kan doen, moet ons 'n buffer vir die pakkiedata verklaar en dit 'n grootte van [50] gee om seker te maak dat al die data pas. Ons begin dan die pakkie met die adres en poort wat ons hierbo gespesifiseer het, skryf ons buffer en 3 waardes na die pakkie, en eindig dan die pakkie.

Laastens druk ons ons gekarteerde koördinate op die seriële monitor. Nou is die Arduino -kode klaar! Knip die kode na die sensorbord en kyk na die seriële monitor om seker te maak dat alles werk soos verwag. U moet die kwarterniewaardes sowel as die gekarteerde waardes sien.

Stap 3: Koppel aan suiwer data …

Koppel aan suiwer data …
Koppel aan suiwer data …

Nou vir Pure Data! Maak Pure Data oop en begin 'n nuwe pleister (ctrl n). Die pleister wat ons gaan skep, is baie eenvoudig en bevat slegs sewe voorwerpe. Die eerste wat ons gaan skep, is die [netreceive] -voorwerp. Dit is die brood en botter van ons pleister wat al die UDP -kommunikasie hanteer. Let op dat daar drie argumente vir die [netreceive] -voorwerp is; die -u spesifiseer UDP, die -b spesifiseer binêre, en 7401 is natuurlik die poort waarop ons luister. U kan ook die "luister 7401" -boodskap na [netreceive] stuur om u poort te spesifiseer.

Sodra ons data binnekom, moet ons dit uitpak. As ons 'n [druk] -voorwerp met [netrecieve] verbind, kan ons sien dat die data aanvanklik na ons toe kom as 'n stroom getalle, maar ons wil die getalle ontleed en elkeen vir iets anders gebruik. U kan byvoorbeeld die X-as-rotasie gebruik om die toonhoogte van 'n ossillator en die Y-as vir volume of 'n aantal ander moontlikhede te beheer. Om dit te kan doen, gaan die datastroom deur 'n [uitpak] voorwerp met drie vlotte (f f f).

Noudat jy so ver is, is die wêreld jou oester! U het 'n draadlose beheerder wat u kan gebruik om alles wat u wil in die Pure Data -heelal te manipuleer. Maar stop daar! Behalwe Rotation Vector, probeer die versnellingsmeter of die magnetometer. Probeer spesiale funksies van die BNO, soos 'dubbel tik' of 'skud'. Al wat u nodig het, is 'n bietjie in die gebruikershandleidings (of die volgende instruksies …).

Stap 4:

Wat ons hierbo gedoen het, is die opstel van kommunikasie tussen die Sensor Board en Pure Data. As u meer pret wil hê, moet u u data -uitsette aansluit by 'n paar ossillators! Speel met volumebeheer! Beheer miskien 'n paar vertragingstye of galm! die wêreld is jou oester!

Aanbeveel: