Мазмұны:
- Жабдықтар
- 1 -қадам: Кодты зерттеу:
- 2 -қадам: Кодтың қалған бөлігі …
- 3 -қадам: таза деректермен байланыс…
- 4 -қадам:
Бейне: WiFi арқылы таза деректерді бақылау үшін өнердің сенсорлық тақтасын қолдану: 4 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Қимылмен басқаруды тәжірибе жасағыңыз келді ме? Қолдарыңызбен нәрселерді қозғауға мәжбүр етесіз бе? Музыканы білегіңізбен басқарасыз ба? Бұл нұсқаулық сізге қалай болатынын көрсетеді!
Кешенді өнер сенсорлық тақтасы (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-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 -мен бағдарламалау және таза деректерді түзету - сансыз жобаларға қолдануға болатын құрылыс блоктары, сондықтан сіз бұл жерде еңкеймеңіз. бұл түсініктер жойылды!
Жабдықтар
1. Кешенді өнер сенсорлық тақтасы
2. Arduino IDE
3. Таза деректер
1 -қадам: Кодты зерттеу:
Алдымен біз Arduino кодын қарастырамыз. (Дереккөз https://github.com/ComplexArts/SensorBoardArduino сайтында бар. Бізге кодпен бірге жүру ұсынылады.) Бізге кейбір кітапханалар қажет, олардың бірі Arduino негізгі кітапханасы емес, сондықтан сіз оны орнату қажет болуы мүмкін. Бұл жоба SparkFun_BNO080_Arduino_Library.h файлына сүйенеді, сондықтан егер ол жоқ болса, Sketch -> Кітапхананы қосу -> Кітапханаларды басқару бөліміне өту керек. «Bno080» теріңіз, сонда жоғарыда аталған кітапхана пайда болады. Орнату түймесін басыңыз.
Қалған үш кітапхана әдепкі бойынша Arduino -мен бірге келуі керек. Біріншіден, біз BNO -мен байланысу үшін SPI кітапханасын қолданамыз. ESP32 мен BNO арасында UART қолдануға болады, бірақ SparkFun -да SPI қолданатын кітапхана бар болғандықтан, біз оны ұстанамыз. (Рахмет, SparkFun!) SPI.h файлының қосылуы бізге SPI байланысы үшін қандай түйреуіштер мен порттарды қолданғымыз келетінін таңдауға мүмкіндік береді.
WiFi кітапханасында сымсыз желіге қосылуға мүмкіндік беретін функциялар бар. WiFiUDP құрамында сол желі бойынша деректерді жіберуге және алуға мүмкіндік беретін функциялар бар. Келесі екі жол бізді желіге шығарады - желі аты мен құпия сөзді енгізіңіз. Осыдан кейін екі жолда біз деректерді жіберетін желі мекенжайы мен порт көрсетіледі. Бұл жағдайда біз жай ғана таратамыз, яғни оны біздің желіде тыңдайтын кез келген адамға жіберіңіз. Порт нөмірі кімді тыңдайтынын анықтайды, біз біраздан кейін көреміз.
Бұл келесі екі жол сәйкес сыныптарға мүшелер жасайды, сондықтан біз олардың функциясына кейін оңай қол жеткізе аламыз.
Әрі қарай, біз ESP тиісті түйреуіштерін BNO -дағы тиісті түйреуіштерге тағайындаймыз.
Енді біз SPI сынып мүшесін орнатамыз, сонымен қатар SPI портының жылдамдығын орнатамыз.
Соңында біз орнату функциясына көшеміз. Мұнда біз сериялық портты бастаймыз, егер біз қаласақ, шығысымызды осылай бақылай аламыз. Содан кейін біз WiFi қосамыз. Бағдарлама жалғастырмас бұрын WiFi қосылымын күтетінін ескеріңіз. WiFi қосылғаннан кейін біз UDP қосылымын бастаймыз, содан кейін желі атауын және IP мекенжайын сериялық мониторға басып шығарамыз. Осыдан кейін біз SPI портын іске қосамыз және ESP пен BNO арасындағы байланысты тексереміз. Ақырында, біз функцияны «enableRotationVector (50);» деп атаймыз. өйткені біз бұл сабақта тек айналу векторын қолданамыз.
2 -қадам: Кодтың қалған бөлігі …
Негізгі циклге () өтпес бұрын бізде «mapFloat» деп аталатын функция бар.
Бұл мәндерді басқа мәндерге салыстыру немесе масштабтау үшін қосқан реттелетін функция. Arduino -да кірістірілген карта функциясы тек бүтін санды салыстыруға мүмкіндік береді, бірақ біздің 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 пакетке жазамыз, содан кейін пакетті аяқтаймыз.
Ақырында, біз картаның координаттарын сериялық мониторға басып шығарамыз. Енді Arduino коды дайын! Сенсорлық тақтаға кодты жіберіңіз және бәрі күткендей жұмыс істейтініне көз жеткізу үшін сериялық мониторды тексеріңіз. Кватернион мәндерін, сондай -ақ салыстырылған мәндерді көру керек.
3 -қадам: таза деректермен байланыс…
Енді таза деректер үшін! Таза деректерді ашып, жаңа түзетуді бастаңыз (ctrl n). Біз жасайтын түзету өте қарапайым, тек жеті объектіден тұрады. Біз жасайтын бірінші нәрсе - [netreceive] объектісі. Бұл UDP байланысын басқаратын біздің патчтың наны мен майы. Назар аударыңыз, [netreceive] объектісінің үш аргументі бар; -u UDP көрсетеді, -b екілік көрсетеді, ал 7401, әрине, біз тыңдайтын порт. Сондай -ақ, портыңызды көрсету үшін [netreceive] -ге «тыңдау 7401» хабарын жіберуге болады.
Деректер кіргеннен кейін оларды ашу керек. Егер біз [басып шығару] нысанын [netrecieve] -ге қосатын болсақ, онда біз бастапқыда бізге сандар ағыны ретінде келетінін көре аламыз, бірақ біз бұл сандарды талдап, әрқайсысын басқа нәрсе үшін қолданғымыз келеді. Мысалы, осциллятордың қадамын басқару үшін X осінің айналуын, ал дыбыс деңгейінің Y осін немесе басқа мүмкіндіктердің кез келген санын қолдану қажет болуы мүмкін. Мұны істеу үшін, деректер ағыны үш флоты (f f f) бар [орау] объектісі арқылы өтеді, оның аргументтері.
Енді сіз алыс, әлем - сіздің устрица! Сізде таза деректер әлемінде қалаған нәрсені басқаруға болатын сымсыз контроллер бар. Бірақ сонда тоқта! Айналу векторынан басқа акселерометрді немесе магнитометрді қолданып көріңіз. BNO -ның «екі рет түрту» немесе «шайқау» сияқты арнайы функцияларын қолданып көріңіз. Қолдану нұсқаулығын (немесе келесі нұсқаулықта) аздап қазып алу жеткілікті.
4 -қадам:
Жоғарыда біз сенсорлық тақта мен таза деректер арасындағы байланысты орнаттық. Егер сіз көбірек көңілді болғыңыз келсе, деректер шығысын кейбір осцилляторларға қосыңыз! Дыбыс деңгейін басқарумен ойнаңыз! Мүмкін, кешіктіру уақыттарын немесе реверсті бақылаңыз! әлем - сіздің устрицаңыз!
Ұсынылған:
Қадамдық моторды басқару үшін ескі ноутбуктің сенсорлық тақтасын қайта қолданыңыз: 11 қадам (суреттермен)
Қадамдық моторды басқару үшін ескі ноутбуктің сенсорлық тақтасын қайта қолданыңыз: Мен бұл жобаны бірнеше ай бұрын жасадым. Бірнеше күн бұрын мен Reddit -те r/Arduino -да жобаның бейнесін жарияладым. Жобаға қызығушылық танытқан адамдарды көріп, мен осы нұсқаулықты жасауға шешім қабылдадым, онда мен Arduino кодына кейбір өзгерістер енгіздім
Ескі ноутбуктің сенсорлық тақтасын компьютерді басқару үшін қайта қолданыңыз!: 11 қадам (суреттермен)
Ескі ноутбуктің сенсорлық тақтасын компьютерді басқару үшін қайта қолданыңыз !: PS/2 ноутбук сенсорлық тақталары микроконтроллермен бірге қолданылатын ең жақсы интерфейс құрылғыларының бірі. Саусақтардың сырғитын және түрту қимылдары бақылауды қарапайым және қызықты етіп жасауға мүмкіндік береді. Бұл нұсқаулықта біреуін біріктірейік
Бөлшек фотонды қолдану арқылы ауа сапасын бақылау: 11 қадам (суреттермен)
Бөлшек фотоны қолданатын ауа сапасының мониторингі: Бұл жобада PPD42NJ бөлшектер сенсоры бөлшектер фотоны бар ауадағы ауа сапасын (PM 2.5) өлшеу үшін қолданылады. Ол бөлшектер консолінде және dweet.io -да деректерді көрсетіп қана қоймайды, сонымен қатар оны өзгерту арқылы RGB жарықдиодты көмегімен ауа сапасын көрсетеді
Сынған қосқыш тақтасын уақытты бақылау арқылы ақылды сенсорлық қосқышқа бекітіңіз: 4 қадам
Сынған коммутатор тақтасын уақытты бақылау арқылы ақылды сенсорлық қосқышқа бекітіңіз: мен білемін, сіздің өміріңізде кем дегенде бір рет коммутатор тақтасы үздіксіз пайдалану арқылы бұзылған. көп жағдайда коммутатор ішіндегі серіппе жылжиды немесе
Xbox Controller арқылы бетті бақылау және бақылау арқылы қайырымдылық робот - Arduino: 9 қадам (суреттермен)
Xbox Controller арқылы бетті бақылау және бақылау арқылы қайыршы робот - Arduino: Біз қайыршы робот жасамақпыз. Бұл робот тітіркендіруге немесе өтіп бара жатқан адамдардың назарын аударуға тырысады. Бұл олардың беттерін анықтап, оларға лазермен оқ атуға тырысады. Егер сіз роботқа тиын берсеңіз, ол ән айтып, би билейді. Роботқа қажет болады