INHOUDSOPGAWE:

Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD): 4 stappe
Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD): 4 stappe

Video: Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD): 4 stappe

Video: Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD): 4 stappe
Video: Vibrotactile Stimulation Treatment for Parkinson's Disease at Stanford 2024, November
Anonim
Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD)
Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD)
Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD)
Vibrotaktiele sensoriese vervangings- en vergrotingstoestel (SSAD)

Hierdie projek het ten doel om navorsing op die gebied van sensoriese vervanging en vergroting te vergemaklik. Ek het die moontlikheid gehad om verskillende maniere van die bou van vibrotaktiele SSAD -prototipes in my MSc -verhandeling te ondersoek. Aangesien sensoriese vervanging en aanvulling 'n onderwerp is wat nie net rekenaarwetenskaplikes betref nie, maar ook navorsers uit ander velde, soos kognitiewe wetenskap, moet 'n stapsgewyse onderrig nie-kundiges in elektronika en rekenaarwetenskap in staat stel om hierdie prototipe self saam te stel navorsingsdoeleindes.

Ek is nie van plan om advertensies te maak vir presies een soort handelsmerk/produk nie. Hierdie projek is nie deur enige onderneming geborg nie. Die materiaal wat ek gebruik het, is gekies as gevolg van tegniese spesifikasies en gemak (spoed/afleweringskoste, beskikbaarheid, ens.). Vir alle produkte wat in hierdie instruksie genoem word, is ewe geskikte alternatiewe beskikbaar.

Die huidige Instructable bevat stap-vir-stap instruksies oor hoe om 'n basiese SSAD-prototipe met tot 4 motors en analoog sensors te bou.

Benewens hierdie Instructable het ek drie uitbreidings gemaak: Eerstens het ek instruksies gepubliseer oor hoe om meer as vier motors met hierdie SSAD-prototipe te gebruik (https://www.instructables.com/id/Using-More-Than-4…). Tweedens het ek 'n voorbeeld en voorbeeld geskep van hoe om hierdie prototipe drabaar te maak (https://www.instructables.com/id/Making-the-SSAD-W…) en hoe om ERM-motors te bedek sonder ingekapselde roterende massa (https:/ /www.instructables.com/id/Covering-Rotating …). Verder word ook 'n voorbeeld gepubliseer van hoe om ander as analoog sensors (in hierdie geval 'n nabyheidsensor) te integreer met die prototipe (https://www.instructables.com/id/Including-a-Proxi…).

Wat is 'Sensoriese vervanging en vergroting'?

Met sensoriese vervanging kan die inligting wat deur een sensoriese modaliteit (bv. Sig) versamel word, deur 'n ander sin (bv. Klank) waargeneem word. Dit is 'n belowende nie-indringende tegniek wat mense help om sensoriese verlies of gestremdheid te oorkom.

As die sensoriese stimulus, wat vertaal word, normaalweg nie deur mense waargeneem kan word nie (bv. UV -lig), word hierdie benadering Sensory Augmentation genoem.

Watter vaardighede is nodig om hierdie prototipe te bou?

In werklikheid is geen gevorderde programmeringsvaardighede nodig om die instruksies hieronder te volg nie. As u egter 'n beginner is met soldeer, beplan 'n bietjie ekstra tyd om hierdie tegniek te leer ken. As u nog nooit voorheen geprogrammeer het nie, is hulp van iemand wat meer ondervinding het in programmering nodig.

Is daar masjiene of gereedskap nodig wat duur is of nie maklik beskikbaar is nie?

Behalwe 'n soldeerbout, is geen masjiene of gereedskap nodig om hierdie prototipe te bou wat u nie maklik aanlyn of in die volgende huishoudelike winkel kan koop nie. Hierdie SSAD is ontwerp om vinnige prototipering moontlik te maak, wat beteken dat dit vinnig herhaalbaar moet wees en 'n goedkoop ondersoek van idees moet moontlik maak.

Voorrade

Hoofkomponente (ongeveer 65 £ vir 4 motors, sonder soldeertoerusting)

  • Arduino Uno (bv. Https://store.arduino.cc/arduino-uno-rev3, 20 £)
  • Adafruit Motorshield v2.3 (bv. Https://www.adafruit.com/product/1438, 20 £) en manlike stapelkoppe (gewoonlik ingesluit by die aankoop van die motorskerm)
  • Silindriese ERM -motors (bv. Https://www.adafruit.com/product/1438, 5, 50 £/motor)
  • Soldeerbout en soldeerdraad
  • Drade

Opsioneel (sien uitbreidings)

As ERM -motor met onbedekte roterende massa gekoop word:

  • Vinyl buis
  • Dun sagte bord
  • 3D -drukker (vir Arduino -omhulsel)

As u meer as 4 motors wil gebruik (vir meer as 8 dieselfde keer):

  • Adafruit Motorshield v2.3 en manlike stapelkop
  • Stapelkoppe vir vroue (bv.
  • Arduino Mega vir meer as 6 motors (bv.

Stap 1: soldeer

Soldeer
Soldeer

Soldeer die penne aan die motorskerm

Adafruit bied 'n baie uitgebreide handleiding oor hoe om koppe aan 'n motorskerm te soldeer (https://learn.adafruit.com/adafruit-motor-shield-v…):

  1. Plaas eerstens die stapelkoppe in die penne op die Arduino Uno,
  2. Plaas dan die skild bo -op, sodat die kort kant van die penne uitsteek.
  3. Soldeer daarna al die penne aan die skild en sorg dat die soldeer om die pen vloei en 'n vulkaanvorm vorm (sien foto hierbo, wat verkry word vanaf https://cdn.sparkfun.com/assets/c/d/ a/a/9/523b1189 …).

As u 'n beginner is in soldeer, help uself met meer tutoriale, soos

Soldeer langer drade na die motor

Aangesien die meeste motors sonder of baie kort en dun drade kom, is dit sinvol om dit uit te brei deur dit aan langer en meer robuuste drade te soldeer. Hier is hoe u dit kon doen:

  1. Verwyder die plastiek om die einde van die drade en plaas dit sodat hulle langs die blootgestelde drade met mekaar in aanraking kom, soos op die foto.
  2. Soldeer hulle saam deur aan beide drade se drade te raak en laat die soldeer daaroor vloei.

Stap 2: Bedrading

Bedrading
Bedrading
  1. Stapel motorskerm bo -op die Arduino.
  2. Skroef motors in die motorskerm vas.
  3. Dra analoog sensors na Arduino (in die beeld word dit gedoen met ligsensors, maar dieselfde stroombaan lyk dieselfde vir ander analoog sensors).

Stap 3: Kodering

Kodering
Kodering
Kodering
Kodering
Kodering
Kodering
Kodering
Kodering

1. Aflaai

Laai die zip -gids af (SSAD_analogueInputs.zip), hieronder aangeheg. Pak dit uit.

Laai die Arduino IDE af (https://www.arduino.cc/en/main/software).

Maak die Arduino -lêer (SSAD_analogueInputs.ino) oop wat in die uitgepakte gids met die Arduino IDE is.

2. Installeer biblioteke

Om die verskafde kode uit te voer, moet u 'n paar biblioteke installeer. Dus, as die Arduino -lêer, wat aan die einde van hierdie artikel aangeheg is, binne die Arduino IDE oop is, doen die volgende:

  1. Klik: Gereedskap → Bestuur biblioteke …
  2. Soek "Adafruit Motor Shield V2 Library" in die filter u soekveld
  3. Installeer dit deur op die installeringsknoppie te klik

Nadat u die biblioteke afgelaai het, behoort die #include -stellings in die verskafde kodes te werk. Kontroleer dit deur op die "Verifieer" -knoppie te klik (bo -aan links). U weet dat al die biblioteke werk, as u die boodskap kry "Klaar opstel" onderaan die program. Anders verskyn 'n rooi balk en u sal 'n boodskap kry van wat verkeerd gegaan het.

3. Verander die kode

Verander die kode volgens u gebruiksvoorval deur die onderstaande instruksies te volg:

Motors en hul sensoriese uitsette begin

Gee eerstens aan watter penne die motors gebruik, asook in watter omvang die motors werk. Byvoorbeeld, 'n motor wat aan M4 gekoppel is en in 'n (spoed) reeks van 25 en 175 werk, word so verklaar (onder die HOOF -opmerking):

Motormotor1 = Motor (4, 25, 175);

As u met klein trillingsmotors werk wat in 'n bereik tot 3V aangedryf word, moet die motorskild met omsigtigheid gebruik word, aangesien dit geskik is vir die gebruik van motors op 4.5VDC tot 13.5VDC. Om die 3V -motors nie te beskadig nie, het ek die volt -uitset van die skerm programmaties beperk tot 'n maksimum van 3V (presies 2.95V). Ek het dit gedoen deur te meet hoeveel die maksimum snelheid van 255 in Volt is en gemeet met 'n multimeter dat dit 4.3V is. Daarom het ek nooit 'n hoër snelheid as 175, wat ongeveer 3V is, op die motors toegelaat nie.

Elke motor sal met een SensoryOutput verbind word.

Een SensoryOutput bestaan uit een of baie sensoriese stimuli. 'N Motor kan byvoorbeeld óf volgens een enkele sensor vibreer, óf volgens die gemiddelde van veelvuldige, anders geplaasde sensors.

Daarom moet een SensoryOutput eerstens vir elke motor verklaar word. Die getalle binne die hakies is die minimum en maksimum waarde van wat die sensor (groep) kan waarneem. Vir analoog sensors is dit meestal 0 en 1023:

SensoryOutput output1 = SensoryOutput (0, 1023);

In die lus () -funksie word elke motor dan aan een uitsetwaarde toegeken. Hier skryf u vir elke motor die volgende stelling en in plaas van "output1", wat ook al die SensoryOutput -waarde daaraan gekoppel moet word. Moenie vergeet om ook alle "output1" -name in hierdie reël te verander as u 'n ander naam daarvoor gebruik nie.

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

As u wil, kan u aan verskeie motors (bv. Motor1 en motor2) dieselfde SensoryOutput (bv. Output1) gee.

Verder kan u die waardes van veelvuldige sensors aan een motor gee (sien volgende afdeling).

Die definisie van die sensors

In die setup () -funksie moet verklaar word watter sensors deel uitmaak van watter motorvibrasie (SensoryOutput). Hier is 'n voorbeeld van hoe u definieer dat die sensor wat aan die Arduino Pin A0 gekoppel is, vertaal moet word in trillings met motor1 en gevolglik output1:

uitset1.insluit (A0);

As verskeie sensoriese uitsette binne een motortrilling gekombineer moet word, kan u net 'n ander analoog invoerpen by output1 voeg:

output1.include (A1);

Gaan andersins voort met die volgende uitset:

output2.include (A1);

Kombineer veelvuldige sensors

Soos hierbo genoem, kan verskeie sensor -insette (bv. Vanaf A0, A1 en A2) na een motor gelei word. Die kode wat ek verskaf, bereken die gemiddelde van die waardes wat deur alle ingesluit sensors gelees word. As dit dus genoeg is vir u gebruik, en u eenvoudig 'n lae sensoriese invoer na 'n lae vibrasie wil toewys, is u klaar en hoef u nie aan die volgende te dink nie:

As u egter ander idees het oor wat u met een of meer rou sensoriese insette wil doen, kan u dit doen volgens veranderinge in die funksie int getValue () in die SensoryOutput -klas:

int getValue () {

finalOutput = 0; // TODO doen wat jy wil met sensoriese waardes // hier word die gemiddelde opgebou, as verskeie waardes gekombineer word vir (int i = 0; i <curArrayLength; i ++) {finalOutput+= analogRead (valueArray ); } gee finalOutput / curArrayLength terug; }

4. Laai die kode op na u Arduino -prototipe

Koppel die Arduino -prototipe (vanaf stap 2) aan op u rekenaar.

Klik op Tools → Poort → Kies die poort, waar Arduino/Genuino Uno tussen hakies geskryf is

Klik op Tools → Board → Arduino/Genuino Uno

Die motors moet nou werk volgens die insette van die analoog sensors. As u wil, kan u die Arduino van u rekenaar ontkoppel en aan 'n ander kragbron koppel, soos 'n 9V -battery.

Stap 4: Moontlike uitbreidings

Moontlike uitbreidings
Moontlike uitbreidings
Moontlike uitbreidings
Moontlike uitbreidings
Moontlike uitbreidings
Moontlike uitbreidings

Die prototipe wat u pas gebou het, laat uitsluitlik analoog insette toe en kan tot vier motors aandryf. Verder is dit nog nie drabaar nie. Kyk na die volgende instruksies as u hierdie funksies wil uitbrei:

  • Dekende roterende massas ERM-motors:
  • Maak die SSAD draagbaar:
  • Gebruik meer as 4 motors-stapel verskeie motorskerms:
  • Gebruik 'n ultrasoniese nabyheidssensor as SSAD-invoer:

Aanbeveel: