Мазмуну:

Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD): 4 кадам
Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD): 4 кадам

Video: Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD): 4 кадам

Video: Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD): 4 кадам
Video: Vibrotactile Stimulation Treatment for Parkinson's Disease at Stanford 2024, Июль
Anonim
Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD)
Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD)
Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD)
Vibrotactile сезүү алмаштыруу жана көбөйтүү түзмөгү (SSAD)

Бул долбоор сезүү алмаштыруу жана көбөйтүү чөйрөсүндөгү изилдөөлөрдү жеңилдетүүгө багытталган. Мен магистрдик диссертациямдын ичинде SSAD прототиптерин түзүүнүн ар кандай жолдорун изилдөө мүмкүнчүлүгүнө ээ болдум. Сезимди алмаштыруу жана көбөйтүү компьютер илимпоздорун эле эмес, башка тармактардын изилдөөчүлөрүн да кызыктырган тема болгондуктан, когнитивдик илим сыяктуу, этап-этабы менен көрсөтмө берүү электроника жана информатика боюнча адис эмес адамдарга бул прототипти чогултууга мүмкүнчүлүк бериши керек. изилдөө максаттары.

Мен бренддин/товардын так бир түрүнө жарнама кылууну көздөбөйм. Бул долбоор эч бир компания тарабынан каржыланган эмес. Мен колдонгон материал техникалык мүнөздөмөлөргө жана ыңгайлуулукка (ылдамдык/жеткирүүнүн баасы, жеткиликтүүлүк ж.б.) байланыштуу тандалды. Бул Нускамада айтылган бардык продукциялар үчүн бирдей ылайыктуу альтернативалар бар.

Учурдагы Instructable 4 мотор жана аналогдук сенсорлорго чейин негизги SSAD прототибин кантип куруу боюнча этап-этабы менен көрсөтмөлөрдү камтыйт.

Бул Нускамага кошумча мен үч кеңейтүүнү түздүм: Биринчиден, мен бул SSAD прототипи менен төрт моторду кантип колдонуу керектиги боюнча нускамаларды жарыяладым (https://www.instructables.com/id/Using-More-Than-4…). Экинчиден, мен бул прототипти кантип кийүүгө болот (https://www.instructables.com/id/Making-the-SSAD-W…) жана ERM моторлорун капсулаланган айлануучу массасыз кантип жабуу керектигин жана мисалын түздүм (https:/ /www.instructables.com/id/Covering-Rotating…). Андан тышкары, аналогдук сенсорлордон (бул учурда жакындык сенсорлорунан) башкасын кантип прототипке интеграциялоонун мисалы да жарыяланган (https://www.instructables.com/id/Including-a-Proxi…).

"Сезүү алмаштыруу жана көбөйтүү" деген эмне?

Сенсордук алмаштыруу менен бир сезүү модалы (мисалы, көрүү) тарабынан чогултулган маалыматты башка сезим (мисалы, үн) аркылуу кабыл алууга болот. Бул адамдарга сезүү жоготуусун же бузулушун жеңүүгө жардам берген келечектүү инвазивдүү эмес техника.

Эгерде которулган сезүү стимулу, адатта, адамдар тарабынан кабыл алынбаса (мисалы, ультрафиолет нуру), бул ыкма сенсордук күчөө деп аталат.

Бул прототипти куруу үчүн кандай көндүмдөр керек?

Негизинен, төмөндө келтирилген көрсөтмөлөрдү аткаруу үчүн эч кандай өнүккөн программалоо көндүмдөрүнүн кереги жок. Бирок, эгер сиз ширетүүдө башталгыч болсоңуз, бул техника менен таанышуу үчүн кошумча убакыт бөлүңүз. Эгер сиз мурда эч качан программалабаган болсоңуз, программалоодо тажрыйбалуу бирөөнүн жардамы талап кылынышы мүмкүн.

Кымбат же оңой жеткиликтүү болбогон машиналар же шаймандар барбы?

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

Жабдуулар

Негизги компоненттер (4 мотор үчүн 65 фунт стерлинг жабдууларын эске албаганда)

  • Arduino Uno (мис. Https://store.arduino.cc/arduino-uno-rev3, 20 £)
  • Adafruit Motorshield v2.3 (мис. Https://www.adafruit.com/product/1438, 20 £) жана эркектердин үстөл баштары (адатта мотор калканы сатып алууда камтылган)
  • Цилиндрдик ERM моторлору (мис. Https://www.adafruit.com/product/1438, 5, 50 £/мотор)
  • Лампочка жана ширетүүчү зым
  • Зымдар

Кошумча (Кеңейтүүлөрдү караңыз)

Эгерде жабык айлануучу массасы бар ERM мотору сатып алынса:

  • Винил түтүк
  • Жука такта
  • 3D принтер (Arduino корпусу үчүн)

Эгер сиз дагы 4 моторду колдонууну кааласаңыз (дагы 8 жолу).

  • Adafruit Motorshield v2.3 жана эркектердин башын бириктирүү
  • Аялдардын стеклинг баштары (мис.
  • 6дан ашык мотор үчүн Arduino Mega (мис.

1 -кадам: ширетүү

Soldering
Soldering

Мотор калканчына казыктарды ээрчиңиз

Adafruit баш моторду калканга кантип ширетүү боюнча абдан кеңири окуу куралын сунуштайт (https://learn.adafruit.com/adafruit-motor-shield-v…):

  1. Биринчиден, Arduino Uno казыктарына казыктардын баштарын коюңуз,
  2. Андан кийин, калканычтын үстүнө коюп, казыктардын кыска жагы чыгып турушу үчүн.
  3. Андан кийин, бардык казыктарды калканга туташтырыңыз жана ширеткичтин айланасында агып, вулкандын формасын түзөөрүн текшериңиз (https://cdn.sparkfun.com/assets/c/d/ сайтынан алынган сүрөттү караңыз) a/a/9/523b1189…).

Эгерде сиз ширетүүнү жаңы үйрөнүп жатсаңыз, https://learn.sparkfun.com/tutorials/how-to-solder… сыяктуу көбүрөөк үйрөткүчтөргө жардам бериңиз.

Моторго узунураак зымдарды ээрчиңиз

Кыймылдаткычтардын көбү зымдары жок же өтө кыска жана ичке келгендиктен, аларды узунураак жана бекем зымдарга ширетүү менен узартуунун мааниси бар. Бул жерде сиз муну кантип кыла аласыз:

  1. Пластмассаны зымдардын учуна алып чыгып, сүрөттөгүдөй ачык линиялар боюнча бири -бири менен байланышта болгула.
  2. Эки зымдын жиптерине тийип, алардын үстүнөн өтүшүнө уруксат берүү менен аларды бир -бирине кошуңуз.

2 -кадам: Кабелдөө

Электр өткөргүчтөрү
Электр өткөргүчтөрү
  1. Ардуинонун үстүндө мотор калчагы.
  2. Кыймылдаткычтарды мотор калканчына сайыңыз.
  3. Ардуиного аналогдук сенсорлорду өткөрүңүз (сүрөттө бул жарык сенсорлору менен жасалат, бирок ошол эле схема башка аналогдук сенсорлор үчүн бирдей көрүнөт).

3 -кадам: Коддоо

Coding
Coding
Coding
Coding
Coding
Coding
Coding
Coding

1. Жүктөө

Төмөндө тиркелген zip папкасын (SSAD_analogueInputs.zip) түшүрүңүз. Аны ачуу.

Arduino IDEди жүктөп алыңыз (https://www.arduino.cc/en/main/software).

Arduino IDE менен ачылбаган папканын ичиндеги Arduino файлын (SSAD_analogueInputs.ino) ачыңыз.

2. Китепканаларды орнотуу

Берилген кодду иштетүү үчүн, сиз кээ бир китепканаларды орнотушуңуз керек. Демек, ушул макаланын аягында тиркелген Arduino файлы Arduino IDE ичинде ачык болсо, төмөнкүлөрдү аткарыңыз:

  1. Чыкылдатыңыз: Куралдар → Китепканаларды башкаруу…
  2. Издөө талаасынан "Adafruit Motor Shield V2 китепканасын" издеңиз
  3. Орнотуу баскычын басып, аны орнотуңуз

Ошол китепканаларды жүктөп алгандан кийин, азыр берилген коддорго #include операторлору иштеши керек. "Текшерүү" баскычын чыкылдатуу менен текшериңиз (сол жактын жогору жагындагы белги). Билесизби, бардык китепканалар иштейт, эгер сиз программанын ылдый жагында "Бүттү компиляциясы" деген билдирүүнү алсаңыз. Болбосо, кызыл тилке пайда болуп, ката кеткени тууралуу билдирүү аласыз.

3. Кодексти өзгөртүү

Төмөнкү нускамаларды аткаруу менен кодуңузду колдонууңузга жараша өзгөртүңүз:

Моторлорду жана алардын SensoryOutputs демилгелөө

Биринчиден, моторлор кайсы казыктарды колдоноорун, ошондой эле моторлор кайсы диапазондо иштээрин билдириңиз. Мисалы, M4кө тиркелген жана 25 жана 175 диапазондорунда иштеген мотор мындай деп жарыяланган (БАШКЫ комментарийдин астында):

Мотор мотор1 = Мотор (4, 25, 175);

3В чейин диапазондо иштөөчү кичинекей термелүү кыймылдаткычтары менен иштөөдө, мотор калканчын этияттык менен колдонуу керек, анткени ал кыймылдаткычтарды 4.5VDCден 13.5VDCге чейин иштетүү үчүн жасалган. 3V моторлоруна зыян келтирбөө үчүн, мен калканчтын вольттун чыгышын 3В максималдуу (так 2,95V) чектедим. Мен муну 255 максималдуу ылдамдыгы Вольтто канча экенин өлчөө менен кылдым жана бул 4.3V экенин мультиметр менен өлчөдүм. Ошондуктан, мен моторлорго болжол менен 3В болгон 175тен жогору ылдамдыкка жол берген эмесмин.

Ар бир мотор бир SensoryOutput менен туташат.

Бир SensoryOutput бир же көп сезүү стимулдарынан турат. Мисалы, мотор же бир сенсорго ылайык, же бир нече, башкача жайгашкан сенсорлордун орточо көрсөткүчү боюнча дирилдей алат.

Ошондуктан, биринчиден, ар бир мотор үчүн бир SensoryOutput жарыяланууга тийиш. Кашаанын ичиндеги сандар сенсор (топ) кабыл ала турган нерсенин минималдуу жана максималдуу мааниси. Аналогдук сенсорлор үчүн бул негизинен 0 жана 1023:

SensoryOutput output1 = SensoryOutput (0, 1023);

Цикл () функциясында ар бир мотор андан кийин бир чыгуу маанисине дайындалат. Бул жерде сиз ар бир мотор үчүн төмөнкү билдирүүнү жазасыз жана "output1" ордуна, SensoryOutput мааниси ага туташышы керек. Бул саптагы бардык "output1" аталыштарын өзгөртүүнү унутпаңыз, эгер сиз башка ат колдонсоңуз.

motor1.drive (output1.getValue (), output1.getMin (), output1.getMax ());

Кааласаңыз, бир эле моторду бере аласыз (мис. Мотор1 жана мотор2) ошол эле SensoryOutput (мис. Output1).

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

Сенсорлорду аныктоо

Setup () функциясында кайсы сенсорлор мотор титирөөсүнүн бир бөлүгү болорун жарыялоо керек (SensoryOutput). Бул жерде сиз Arduino Pin A0 менен туташкан сенсор мотор1 менен термелүүгө жана натыйжада output1ге которулушу керектигин кантип аныктоонун мисалы:

output1.include (A0);

Эгерде бир мотор титирөөнүн ичинде бир нече сезүү жыйынтыктары бириктирилсе, анда башка аналогдук кирүү пинин output1ге кошсоңуз болот:

output1.include (A1);

Болбосо, кийинки чыгарууну улантыңыз:

output2.include (A1);

Бир нече сенсорлорду бириктирүү

Жогоруда айтылгандай, бир нече сенсордук кириштерди (мис. A0, A1 жана A2ден) бир моторго алып барууга болот. Мен берген код, киргизилген бардык сенсорлор окуган маанилердин орточо өлчөмүн эсептеп жатат. Демек, эгерде бул сиздин колдонууңуз үчүн жетиштүү болсо жана сиз жөн эле карта түзүүнү кааласаңыз, мисалы, төмөн вибрацияга сезгичтиктин төмөндүгү, сиз бүттүңүз жана төмөнкүлөр жөнүндө ойлонуунун кажети жок:

Эгерде сизде бир же бир нече чийки сезүү киргизүү менен эмне кылгыңыз келгени жөнүндө башка идеялар болсо, анда SensoryOutput классындагы int getValue () функциясынын өзгөрүшүнө жараша жасай аласыз:

int getValue () {

finalOutput = 0; // TODO сенсордук баалуулуктар менен каалаган нерсеңизди кылыңыз // бул жерде орточо курулган, эгерде бир нече баалуулуктар бириктирилсе (int i = 0; i <curArrayLength; i ++) {finalOutput+= analogRead (valueArray ); } finalOutput / curArrayLength кайтаруу; }

4. Кодду Arduino прототипине жүктөңүз

Arduino прототипин (2 -кадамдан баштап) компьютериңизге сайыңыз.

Куралдар → Порт → Ардуино/Генуино Юно кашаанын ичинде жазылган Портту тандаңыз

Tools → Board → Arduino/Genuino Uno чыкылдатыңыз

Эми моторлор аналогдук сенсорлордун киришине ылайык иштеши керек. Кааласаңыз, Arduino компьютериңизден ажыратып, 9В батарейкасы сыяктуу башка кубат булагына туташтырсаңыз болот.

4 -кадам: Мүмкүн болгон кеңейтүүлөр

Мүмкүн болгон кеңейтүүлөр
Мүмкүн болгон кеңейтүүлөр
Мүмкүн болгон кеңейтүүлөр
Мүмкүн болгон кеңейтүүлөр
Мүмкүн болгон кеңейтүүлөр
Мүмкүн болгон кеңейтүүлөр

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

  • ERM Motorsтун айлануучу массаларын камтыйт:
  • SSADди кийилүүчү кылуу:
  • 4төн ашык моторду колдонуу-бир нече мотор калканчтарын коюу:
  • SSAD киргизүү катары УЗИ жакындык сенсорун колдонуу:

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