- Предуслови:
- Концепт који стоји иза пројекта:
- Кружни дијаграм:
- Програмирање вашег Ардуина:
- Програмирање вашег Питхона:
- Рачунаром контролисан покретом у акцији:
У последње време преносни рачунари или рачунари контролисани покретима постају веома познати. Ова техника се назива Леап мотион која нам омогућава да контролишемо одређене функције на нашем рачунару / преносном рачунару једноставним махањем руке испред ње. То је врло кул и забавно радити, али ови преносници имају заиста високу цену. Дакле, у овом пројекту покушајмо да направимо сопствени преносни рачунар / рачунар за контролу геста комбиновањем снаге Ардуина и Питхона.
Користићемо два ултразвучна сензора да одредимо положај руке и контролишемо медиа плејер (ВЛЦ) на основу положаја. Користио сам ово за демонстрацију, али када сте разумели пројекат, можете учинити било шта тако што ћете променити неколико редова кода и управљати својом омиљеном апликацијом на свој омиљени начин.
Предуслови:
Већ смо обрадили неколико пројеката који комбинују Ардуино са Питхоном. Дакле, претпостављам да сте већ инсталирали Питхон и његову серијску библиотеку и успешно сте испробали неколико основних пројеката попут трептања ЛЕД-а. Ако не, не брините, можете се вратити овом водичу за Ардуино-Питхон Лед Цонтроллинг и сложити се с њим. Дакле, проверите да ли сте инсталирали Питхон и писериал библиотеку пре него што наставите.
Концепт који стоји иза пројекта:
Концепт који стоји иза пројекта је врло једноставан. На врх монитора поставићемо два ултразвучна (америчка) сензора и очитаћемо растојање између монитора и руке користећи Ардуино, на основу ове вредности удаљености извршићемо одређене радње. Да бисмо извршавали радње на нашем рачунару, користимо Питхон пиаутогуи библиотеку. Команде из Ардуина шаљу се рачунару преко серијског порта (УСБ). Затим ће ове податке читати питхон који је покренут на рачунару и на основу прочитаних података извршиће се радња.
Кружни дијаграм:
Да бисте управљали рачунаром покретима рукама, само повежите два ултразвучна сензора са Ардуином. Знамо да амерички сензори раде са 5В и стога их напаја уграђени регулатор напона Ардуино. Ардуино се може повезати на ПЦ / Лаптоп за напајање модула, као и за серијску комуникацију. Када се везе заврше, поставите их на монитор, као што је приказано доле. Користио сам двоструку бочну траку да је залепим на свој монитор, али можете користити своју креативност. Након што га осигурамо на месту, можемо наставити са програмирањем.
Програмирање вашег Ардуина:
Ардуино треба програмирати да очитава удаљеност руке од америчког сензора. Комплетан програм је дат на крају ове странице; одмах испод дао сам објашњење за програм. Ако сте нови у ултразвучном сензору, само прођите кроз Ардуино и ултразвучни сензор на основу мерења удаљености.
Очитавањем вредности удаљености можемо доћи до одређених радњи којима ћемо управљати гестама, на пример, у овом програму сам програмирао 5 акција као демонстрацију.
Акција 1: Када су обе руке постављене пре сензора на одређеној удаљености, видео у ВЛЦ плејеру треба да репродукује / паузира.
2. акција: Када се десна рука постави испред сензора на одређеној удаљености, видео треба да премота унапред за један корак.
Акција 3: Када је лева рука постављена пре сензора на одређеној удаљености, видео би требало да премота један корак уназад.
Акција 4: Када се десна рука постави испред сензора на одређеној блиској удаљености, а затим ако се помери према сензору, видео треба да премота унапред, а ако се одмакне, видео треба да премота уназад.
Акција 5: Када се лева рука постави испред сензора на одређеној блиској удаљености, а затим ако се помери ка сензору, јачина видео записа треба да се повећа, а ако се одмакне, јачина звука треба да се смањи.
Погледајмо како је написан програм за извођење горе наведених радњи. Дакле, као и сви програми почињемо са дефинисањем И / О пинова као што је приказано доле. Два америчка сензора су повезана на дигиталне пинове 2,3,4 и 5 и напајају се са + 5В пином. Окидачки пинови су излазни пинови, а Ецхо пинови су улазни пинови.
Серијска комуникација између Ардуина и питхона одвија се брзином преноса од 9600.
цонст инт окидач1 = 2; // Окидач пин 1. Сеснор цонст инт ецхо1 = 3; // Ецхо пин од 1. Сеснор цонст инт триггер2 = 4; // Окидачки пин другог Сеснор цонст инт ецхо2 = 5; // Ецхо пин другог Сеснор воид сетуп () {Сериал.бегин (9600); пинМоде (окидач1, ИЗЛАЗ); пинМоде (ецхо1, ИНПУТ); пинМоде (окидач2, ИЗЛАЗ); пинМоде (ецхо2, ИНПУТ); }
Морамо израчунати растојање између сензора и руке сваки пут пре него што закључимо било коју акцију. Дакле, морамо то учинити много пута, што значи да би овај код требало користити као функцију. Написали смо функцију звану израчунај_даљину () која ће нам вратити удаљеност између сензора и руке.
/ * ### Функција за израчунавање удаљености ### * / воид израчунај_даљину (инт окидач, инт ехо) {дигиталВрите (окидач, ЛОВ); делаиМицросецондс (2); дигиталВрите (окидач, ВИСОКО); делаиМицросецондс (10); дигиталВрите (окидач, ЛОВ); тиме_такен = пулсеИн (ецхо, ХИГХ); дист = заузето време * 0,034 / 2; ако је (дист> 50) дист = 50; }
Унутар нашег главног петље да провери вредност растојања и обавља радње наведене изнад. Пре тога користимо две променљиве дистЛ и дистР које се ажурирају тренутном вредношћу удаљености.
израчунај_даљину (окидач1, одјек1); дистЛ = дист; // добијемо растојање левог сензора израчунај_даљину (окидач2, ехо2); дистР = дист; // добијемо растојање десног сензора
Пошто знамо растојање између оба сензора, сада га можемо упоредити са унапред дефинисаним вредностима и доћи до одређених радњи. На пример, ако су обе руке постављене на удаљеност од 40 мц, онда репродукујемо / паузирамо видео. Овде ће реч „Репродуковати / паузирати“ бити послата преко серијског порта
иф ((дистЛ> 40 && дистР> 40) && (дистЛ <50 && дистР <50)) // Откривање обе руке {Сериал.принтлн ("Репродукуј / Паузирај"); кашњење (500);}
Ако је десна рука постављена пре модула, видео премотавамо унапред за један корак, а ако је лева премотавамо уназад за један корак. На основу акције, овде ће се реч „Премотавање уназад“ или „Премотавање унапред“ послати путем серијског порта
иф ((дистЛ> 40 && дистЛ <50) && (дистР == 50)) // Откривање леве руке {Сериал.принтлн ("Премотавање уназад"); кашњење (500);} иф ((дистР> 40 && дистР <50) && (дистЛ == 50)) // Откривање десне руке {Сериал.принтлн ("Форвард"); кашњење (500);}
Противник детаљно контролише јачину звука и траг, а користимо другачију методологију како бисмо спречили лажне окидаче. Да бисмо контролисали јачину звука, леву руку морамо поставити приближно. На удаљености од 15 цм, можете је померити према сензору да бисте смањили јачину звука, одмакните од сензора да бисте повећали јачину звука. Код за исти приказан је испод. На основу акције, овде ће реч „Вуп“ или „Вдовн“ бити послата кроз серијски порт
// Закључај лево - режим управљања ако (дистЛ> = 13 && дистЛ <= 17) {делаи (100); // Време задржавања руке израчунати_даљину (окидач1, ехо1); дистЛ = дист; иф (дистЛ> = 13 && дистЛ <= 17) {Сериал.принтлн ("Лефт Лоцкед"); вхиле (дистЛ <= 40) {израчунај_даљину (окидач1, ехо1); дистЛ = дист; иф (дистЛ <10) // Рука гурнута у {Сериал.принтлн ("Вуп"); кашњење (300);} иф (дистЛ> 20) // Рука извучена {Сериал.принтлн ("Вдовн"); кашњење (300);}}}}
Исту методу можемо користити и за десни бочни сензор за контролу записа видео записа. То јест, ако десну руку померимо према сензору, филм ће премотати унапред, а ако га одмакнете од сензора, филм ће премотати уназад. На основу акције, овде ће се реч „Премотавање уназад“ или „Премотавање унапред“ послати путем серијског порта
Сада можете прочитати целокупан код за овај ПЦ који контролише геста дат на крају странице и покушати да га подстакнете у целину, а затим копирате у свој Ардуино ИДЕ.
Програмирање вашег Питхона:
Питхон програм за овај пројекат је врло једноставан. Морамо само успоставити серијску комуникацију са Ардуином путем тачне брзине преноса, а затим извршити неке основне радње на тастатури. Први корак са питхоном био би инсталирање модула п иаутогуи . Обавезно следите овај корак јер програм неће радити без модула пиаутогуи.
Инсталирање пиаутогуи модула за Виндовс:
Следите кораке у наставку да бисте инсталирали пиаутогуи за Виндовс. Ако користите друге платформе, кораци ће такође бити мање или више слични. Обавезно повежите рачунар / преносни рачунар са Интернетом и следите кораке у наставку
Корак 1: Отворите Виндовс Цомманд промпт и промените директоријум у директоријум у који сте инсталирали питхон. Подразумевано наредба треба да буде
цд Ц: \ Питхон27
Корак 2: Унутар вашег директорија питхон користите наредбу питхон –м пип инсталл –упграде пип за надоградњу пипа. Пип је алатка у питхону која нам помаже да лако инсталирамо питхон модуле. Када се овај модул надогради (као што је приказано на слици доле), пређите на следећи корак.
питхон –м пип инсталл –упграде пип
Корак 3: Користите наредбу „ питхон –м пип инсталл пиаутогуи “ да бисте инсталирали пиаутогуи модул. Једном када је процес успешан, требало би да видите екран сличан овом доле.
питхон –м пип инсталл –упграде пип
Сада када су модул пиаутогуи и писериал модул (инсталирани у претходном водичу ) успешно инсталирани са питхоном , можемо да наставимо са програмом питхон. Комплетан питон код је дат на крају туторијала, али објашњење за исти је као што следи.
Увезимо сва три потребна модула за овај пројекат. Они су пјаутоги, серијски питон и време.
увоз серијски # Серија увезена за време увоза серијске комуникације # Обавезно коришћење функција одлагања импорт пиаутогуи
Даље успостављамо везу са Ардуином преко ЦОМ порта. На мом рачунару Ардуино је повезан са ЦОМ 18. Помоћу управитеља уређаја пронађите на који ЦОМ порт је повезан ваш Ардуино и исправите следећи ред у складу с тим.
АрдуиноСериал = сериал.Сериал ('цом18', 9600) #Цреате Сериал порт објецт цаллед ардуиноСериалДата тиме.слееп (2) # сачекајте 2 секунде да се комуникација успостави
Унутар бесконачне вхиле петље опетовано слушамо ЦОМ порт и упоређујемо кључне речи са било којим унапред дефинисаним делима и у складу с тим вршимо притиске на тастатури.
док је 1: инцоминг = стр (АрдуиноСериал.реадлине ()) # прочитајте серијске податке и одштампајте их као лине принт долазни ако је 'Плаи / Паусе' у долазном: пиаутогуи.типеврите (, 0.2) ако је 'Ревинд' у долазном: пиаутогуи. пречица ('цтрл', 'лефт') ако је 'Проследи' у долазном: пиаутогуи.хоткеи ('цтрл', 'десно') ако је 'Вуп' у долазном: пиаутогуи.хоткеи ('цтрл', 'доле') иф ' Вдовн 'у долазном: пиаутогуи.хоткеи (' цтрл ',' уп ')
Као што видите, за притискање тастера једноставно морамо користити команду „пиаутогуи.типеврите (, 0,2)“ која ће притиснути размак тастера за 0,2 сек . Ако су вам потребни интервентни тастери попут цтрл + С, тада можете да користите команду интервентног тастера „пиаутогуи.хоткеи ('цтрл', 'с')“.
Користио сам ове комбинације јер раде на ВЛЦ медиа плаиер-у, можете их прилагодити на било који начин да бисте креирали сопствене апликације за контролу било чега на рачунару помоћу геста.
Рачунаром контролисан покретом у акцији:
Успоставите везе како је горе дефинисано и пренесите Ардуино код на своју Ардуино плочу. Затим користите доњу скрипту питхон и покрените програм на свом преносном рачунару.
Сада можете да репродукујете било који филм на рачунару помоћу ВЛЦ медиа плејера и да руком контролишете филм као што је приказано у видеу датом у наставку.
Надам се да сте разумели пројекат и уживали да се играте с њим. Ово је само демонстрација и можете да искористите своју креативност да бисте око тога изградили много више цоол покрета контролисаних гестама. Јавите ми да ли је ово било корисно и шта ћете створити користећи ово у одељку за коментаре и радо ћу то знати.