Мазмуну:

WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу: 4 кадам (сүрөттөр менен)
WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу: 4 кадам (сүрөттөр менен)

Video: WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу: 4 кадам (сүрөттөр менен)

Video: WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу: 4 кадам (сүрөттөр менен)
Video: Аял кантсе, эркекти тошокто кандырат? 2024, Ноябрь
Anonim
WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу
WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу
WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу
WiFi аркылуу таза маалыматтарды көзөмөлдөө үчүн комплекстүү көркөм сенсордук тактаны колдонуу

Сиз качандыр бир убакта жаңсоолук менен эксперимент кылгыңыз келди беле? Колуңуздун толкуну менен нерселерди кыймылга келтиресизби? Билегиңиз менен музыканы башкарасызбы? Бул көрсөтмө сизге кантип көрсөтөт!

Complex Arts Sensor Board (complexarts.net) - бул ESP32 WROOMго негизделген ар тараптуу микроконтроллер. Бул ESP32 платформасынын бардык мүмкүнчүлүктөрүнө ээ, анын ичинде орнотулган WiFi жана Bluetooth жана 23 конфигурацияланган GPIO казыктары. Сенсордук тактада BNO_085 IMU - 9 DOF кыймыл процессору бар, ал борттогу сенсордун синтезин жана төртүнчүлүк теңдемелерин аткарат, супер так багытты, тартылуу векторун жана сызыктуу ылдамдатуу маалыматын камсыз кылат. Сенсордук тактаны Arduino, MicroPython же ESP-IDF аркылуу программаласа болот, бирок бул сабак үчүн биз Arduino IDE менен тактаны программалайбыз. Белгилей кетүүчү нерсе, ESP32 модулдары Arduino IDEден жергиликтүү түрдө программалана албайт, бирок муну мүмкүн кылуу өтө жөнөкөй; бул жерде чоң окуу куралы бар: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/, аны бүтүрүү үчүн 2 мүнөт кетиши керек. Бизге керек болгон акыркы орнотуу бул жерде жайгашкан сенсор тактасындагы USB-to-UART чипинин драйвери, бул жерден табууга болот: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-драйверлери. Жөн гана ОС тандап, орнотуңуз, бул дагы 2 мүнөткө созулушу керек. Бул аяктагандан кийин, биз барууга даярбыз!

[Бул сабак Arduino же Pure Data менен тааныштыкты талап кылбайт, бирок бул алардын орнотулушун камтыбайт. Arduino табууга болот aduino.cc. Таза маалыматтарды puredata.info сайтынан тапса болот. Эки сайтта тең орнотуу жана жөндөө боюнча аткарууга оңой инструкциялар бар.]

Ошондой эле … бул үйрөткүчтө камтылган түшүнүктөр, мисалы UDP байланыштарын орнотуу, ESP32ди Arduino менен программалоо жана таза Patch маалыматтар имараты - бул сансыз долбоорлорго колдонууга боло турган курулуш материалы, андыктан бул жерден чөкпөңүз. бул түшүнүктөрдү түшүрдү!

Жабдуулар

1. Комплекстүү искусство сенсордук тактасы

2. Arduino IDE

3. Таза маалыматтар

1 -кадам: Кодексти изилдөө:

Кодексти карап чыгуу
Кодексти карап чыгуу
Кодексти карап чыгуу
Кодексти карап чыгуу

Биринчиден, биз Arduino кодун карайбыз. (Булак https://github.com/ComplexArts/SensorBoardArduino дарегинде жеткиликтүү. Биз бара жатканда код менен бирге жүрүү сунушталат.) Бизге кээ бир китепканалар керек, алардын бири негизги Arduino китепканасы эмес, андыктан сиз аны орнотуу керек болушу мүмкүн. Бул долбоор SparkFun_BNO080_Arduino_Library.h файлына таянат, андыктан сизде жок болсо, Sketch -> Китепкананы кошуу -> Китепканаларды башкаруу бөлүмүнө өтүңүз. "Bno080" териңиз жана жогоруда айтылган китепкана пайда болот. Орнотууну басыңыз.

Колдонулган башка үч китепкана демейки боюнча Arduino менен келиши керек. Биринчиден, биз BNO менен байланышуу үчүн SPI китепканасын колдонобуз. UARTти ESP32 менен BNOнун ортосунда колдонсо болот, бирок SparkFun SPIди колдонгон китепканага ээ болгондуктан, биз ошону карманабыз. (Рахмат, SparkFun!) SPI.h файлын кошуу бизге SPI байланышы үчүн колдонууну каалаган казыктарды жана портторду тандоого мүмкүндүк берет.

WiFi китепканасы зымсыз тармакка кирүүгө мүмкүндүк берген функцияларды камтыйт. WiFiUDP бизге ошол тармак боюнча маалыматтарды жөнөтүүгө жана алууга мүмкүнчүлүк берген функцияларды камтыйт. Кийинки эки сап бизди тармакка алып чыгат - тармагыңыздын атын жана сырсөзүңүздү киргизиңиз. Андан кийинки эки сапта биз маалыматыбызды жөнөтүп жаткан тармактын дареги жана порту көрсөтүлөт. Бул учурда, биз жөн эле эфирге чыгабыз, бул аны биздин тармактагы угуп жаткандардын баарына жөнөтүүнү билдирет. Порт номери кимдин угуп жатканын аныктайт, биз бир аздан кийин көрөбүз.

Бул кийинки эки сап өз класстарынын мүчөлөрүн түзөт, андыктан биз алардын функцияларына кийинчерээк оңой жете алабыз.

Андан кийин, биз ESPтин тиешелүү төөнөгүчтөрүн BNOдогу тиешелүү казыктарына дайындайбыз.

Азыр биз SPI класстын мүчөсүн орноттук, ошондой эле SPI порт ылдамдыгын орноттук.

Акыр -аягы, биз орнотуу функциясына киребиз. Бул жерде, биз кааласак, өндүрүмүбүздү ушинтип көзөмөлдөй алышыбыз үчүн, сериялык портту баштайбыз. Андан кийин биз WiFi баштайбыз. Байкаңыз, программа улантуудан мурун WiFi туташуусун күтөт. WiFi туташкандан кийин, UDP туташуусун баштайбыз, андан кийин биздин тармактын аталышын жана IP дарегибизди сериялык мониторго басып чыгарабыз. Андан кийин биз SPI портун баштайбыз жана ESP менен BNO ортосундагы байланышты текшеребиз. Акырында, биз функцияны "enableRotationVector (50);" деп атайбыз. анткени биз бул сабак үчүн айлануу векторун гана колдонобуз.

2 -кадам: Коддун калган бөлүгү …

Калган код…
Калган код…

Негизги циклге () барардан мурун, бизде "mapFloat" деген функция бар.

Бул биз баалуулуктарды башка баалуулуктарга картага салуу же масштабдоо үчүн кошкон колдонуучунун функциясы. Ардуинодогу камтылган карта функциясы бүтүн сандык картаны түзүүгө гана мүмкүндүк берет, бирок биздин BNO баштапкы баалуулуктарыбыз 1ден 1ге чейин болот, андыктан биз аларды чындап каалаган баалуулуктарга кол менен масштабдашыбыз керек болот. Эч кабатыр болбоңуз - муну аткаруунун жөнөкөй функциясы:

Эми биз негизги циклге () келебиз. Сиз байкай турган биринчи нерсе - бул программаны тармак туташуусун күтүп турган башка бөгөө функциясы. Бул BNO маалыматы келгенге чейин токтойт. Биз бул маалыматты ала баштаганда, келүүчү кватериондук маанилерди өзгөрмөлүү чекит өзгөрмөлөрүнө дайындайбыз жана ал маалыматтарды сериялык мониторго басып чыгарабыз.

Эми биз ошол баалуулуктарды картага түшүрүүбүз керек.

[UDP байланышы жөнүндө сөз: маалыматтар UDP аркылуу 8 биттик пакеттерде же 0-255ке чейинки баалуулуктарда өткөрүлөт. 255тен ашкан нерсе кийинки пакетке жылдырылып, анын баасына кошулат. Ошондуктан, биз 255тен жогору баалуулуктар жок экенине ынануубуз керек.]

Мурда да айтылгандай, бизде -1 -1 диапазонунда кирүүчү баалуулуктар бар. Бул бизге иштөө үчүн көп нерсе бербейт, анткени 0дөн төмөн болгон нерсе кесилет (же 0 катары көрүнөт) жана биз кыла албайбыз 0 -1 ортосундагы мааниге ээ болгон тонна. Биз адегенде картага алынган маанибизди кармап туруу үчүн жаңы өзгөрмөнү жарыялашыбыз керек, андан кийин ошол баштапкы өзгөрмөнү алып, аны -1 -1ден 0 -255ке чейин салыштырып, натыйжаны биздин жаңы өзгөрмөгө ыйгарабыз. Nx.

Эми бизде карта маалыматтар бар, биз пакетибизди бириктире алабыз. Муну аткаруу үчүн, биз бардык маалымат туура келерине ынануу үчүн [50] өлчөмүн берип, пакет маалыматтары үчүн буфер жарыялашыбыз керек. Андан кийин биз пакетти жогоруда көрсөтүлгөн даректен жана порттон баштайбыз, буферибизди жана 3 маанилерибизди to to packetке жазабыз, андан кийин пакетти бүтүрөбүз.

Акырында, биз картага түшүрүлгөн координаттарыбызды сериялык мониторго басып чыгарабыз. Эми Arduino коду бүттү! Кодду сенсордук тактага жаркылдатып, баары күтүлгөндөй иштеп жатканына ынануу үчүн сериялык мониторду текшериңиз. Сиз quaternion баалуулуктарын жана картага алынган баалуулуктарды көрүшүңүз керек.

3 -кадам: Таза маалыматтар менен туташуу…

Таза маалыматтар менен туташууда…
Таза маалыматтар менен туташууда…

Эми таза маалыматтар үчүн! Таза маалыматтарды ачып, жаңы жамаачы баштаңыз (ctrl n). Биз түзө турган жамаачы өтө жөнөкөй, болгону жети объект. Биз түзө турган биринчи нерсе [netreceive] объектиси. Бул UDP байланышын башкарган биздин жамандын наны жана майы. [Netreceive] объектиси үчүн үч аргумент бар экенин байкаңыз; -u UDP, -b экиликти көрсөтөт жана 7401, албетте, биз угуп жаткан порт. Сиз ошондой эле портуңузду көрсөтүү үчүн [netreceive] "7401 угуу" билдирүүсүн жөнөтө аласыз.

Бизге маалымат келип түшкөндөн кийин, биз аны ачышыбыз керек. Эгер [басып чыгаруу] объектисин [netrecieve] менен байланыштырсак, анда маалыматтар бизге алгач сандар агымы катары келгенин көрө алабыз, бирок биз бул сандарды талдап, ар бирин башка нерсе үчүн колдонууну каалайбыз. Мисалы, осциллятордун кадамын көзөмөлдөө үчүн X огунун айлануусун, ал эми Y огунун көлөмүн же башка мүмкүнчүлүктөрдүн санын колдонууну кааласаңыз болот. Муну аткаруу үчүн, маалымат агымы үч флоту бар [ачуу] объектиси аркылуу өтөт (f f f) анын аргументтери.

Эми сен ушунчалык алыссың, дүйнө сенин устрицаң! Сизде зымсыз контролер бар, аны сиз Таза маалыматтар ааламында каалаган нерсеңизди башкара аласыз. Бирок ошол жерде токто! Rotation Vectorдон башка акселерометрди же магнитометрди колдонуп көрүңүз. BNOнун "кош таптоо" же "чайкоо" сыяктуу атайын функцияларын колдонуп көрүңүз. Колдонуучунун көрсөтмөлөрүн бир аз казуу жетиштүү (же кийинки Нускамалык…)

4 -кадам:

Биз жогоруда эмне кылдык - бул сенсордук такта менен таза маалыматтын ортосундагы байланышты орнотуу. Эгерде сиз көбүрөөк көңүл ачууну кааласаңыз, маалыматыңыздын чыгышын кээ бир осцилляторлорго туташтырыңыз! Үндү көзөмөлдөө менен ойноңуз! Балким, кээ бир кечигүү убактысын көзөмөлдөп же реверб! дүйнө - бул сенин устрицаң!

Сунушталууда: