Inhoudsopgave:

Vibrotactief sensorisch substitutie- en vergrotingsapparaat (SSAD) - Ajarnpa
Vibrotactief sensorisch substitutie- en vergrotingsapparaat (SSAD) - Ajarnpa

Video: Vibrotactief sensorisch substitutie- en vergrotingsapparaat (SSAD) - Ajarnpa

Video: Vibrotactief sensorisch substitutie- en vergrotingsapparaat (SSAD) - Ajarnpa
Video: Vier nieuwe methoden voor de behandeling van blinden en slechtzienden 2024, November
Anonim
Vibrotactile Sensorische Substitutie en Augmentation Device (SSAD)
Vibrotactile Sensorische Substitutie en Augmentation Device (SSAD)
Vibrotactile Sensorische Substitutie en Augmentation Device (SSAD)
Vibrotactile Sensorische Substitutie en Augmentation Device (SSAD)

Dit project heeft tot doel onderzoek op het gebied van Sensorische Substitutie en Augmentatie te faciliteren. Ik had de mogelijkheid om verschillende manieren te onderzoeken om vibrotactiele SSAD-prototypes te bouwen binnen mijn MSc-proefschrift. Aangezien sensorische vervanging en vergroting een onderwerp is dat niet alleen computerwetenschappers aangaat, maar ook onderzoekers uit andere gebieden, zoals cognitieve wetenschappen, moet een stapsgewijze instructie niet-experts in elektronica en informatica in staat stellen dit prototype voor hun eigen onderzoeksdoeleinden.

Ik ben niet van plan om reclame te maken voor precies één soort merk/product. Dit project werd door geen enkel bedrijf gesponsord. Het materiaal dat ik heb gebruikt, is gekozen vanwege technische specificaties en gemak (snelheid/leveringskosten, beschikbaarheid, etc.). Voor alle producten die in deze Instructable worden genoemd, zijn even geschikte alternatieven beschikbaar.

De huidige Instructable bevat stapsgewijze instructies voor het bouwen van een eenvoudig SSAD-prototype met maximaal 4 motoren en analoge sensoren.

Naast deze Instructable heb ik drie extensies gemaakt: ten eerste heb ik instructies gepubliceerd over het gebruik van meer dan vier motoren met dit SSAD-prototype (https://www.instructables.com/id/Using-More-Than-4…). Ten tweede heb ik een voorbeeld gemaakt van hoe dit prototype draagbaar kan worden gemaakt (https://www.instructables.com/id/Making-the-SSAD-W…) en hoe ERM-motoren kunnen worden afgedekt zonder ingekapselde roterende massa (https:/ /www.instructables.com/id/Covering-Rotating…). Verder wordt ook een voorbeeld gepubliceerd van hoe andere dan analoge sensoren (in dit geval nabijheidssensoren) in het prototype kunnen worden geïntegreerd (https://www.instructables.com/id/Inclusive-a-Proxi…).

Wat is "sensorische substitutie en augmentatie"?

Met Sensory Substitution kan de informatie die door de ene zintuiglijke modaliteit (bijv. zicht) wordt verzameld, worden waargenomen door een ander zintuig (bijv. geluid). Het is een veelbelovende niet-invasieve techniek die mensen helpt bij het overwinnen van sensorisch verlies of stoornis.

Als de zintuiglijke prikkel, dat wil zeggen vertaald, normaal gesproken niet waarneembaar is voor mensen (bijvoorbeeld UV-licht), wordt deze benadering Sensory Augmentation genoemd.

Welke vaardigheden zijn nodig om dit prototype te bouwen?

In principe zijn er geen geavanceerde programmeervaardigheden nodig om de onderstaande instructies te volgen. Als je echter een beginner bent in solderen, plan dan wat extra tijd in om deze techniek te leren kennen. Als je nog nooit eerder hebt geprogrammeerd, is misschien wat hulp nodig van iemand die meer ervaring heeft met programmeren.

Zijn er machines of gereedschappen nodig die duur of niet makkelijk verkrijgbaar zijn?

Behalve een soldeerbout zijn er geen machines of gereedschappen nodig om dit prototype te bouwen dat je niet zomaar online of in de volgende huishoudwinkel kunt kopen. Deze SSAD is ontworpen om rapid-prototyping mogelijk te maken, wat betekent dat het snel reproduceerbaar moet zijn en een goedkope verkenning van ideeën mogelijk moet maken.

Benodigdheden

Hoofdcomponenten (ongeveer 65 £ voor 4 motoren, excl. soldeerapparatuur)

  • Arduino Uno (bijv. https://store.arduino.cc/arduino-uno-rev3, 20 £)
  • Adafruit Motorshield v2.3 (bijv. https://www.adafruit.com/product/1438, 20 £) en mannelijke stapelkoppen (normaal inbegrepen bij aankoop van de motorshield)
  • Cilindrische ERM-motoren (bijv. https://www.adafruit.com/product/1438, 5, 50£ / motor)
  • Soldeerbout en soldeerdraad
  • Draden

Optioneel (zie Extensies)

Als ERM-motor met onbedekte roterende massa wordt gekocht:

  • vinyl buis
  • Dun zacht karton
  • 3D-printer (voor Arduino-behuizing)

Als u meer dan 4 motoren wilt gebruiken (voor meer dan 8 dezelfde andere keer):

  • Adafruit Motorshield v2.3 en mannelijke stapelkoppen
  • Vrouwelijke stapelkoppen (bijv.
  • Arduino Mega voor meer dan 6 motoren (bijv.

Stap 1: Solderen

Solderen
Solderen

Soldeer de pinnen op het motorschild

Adafruit biedt een zeer uitgebreide tutorial over het solderen van headers aan een motorshield (https://learn.adafruit.com/adafruit-motor-shield-v…):

  1. Plaats eerst de stapelkoppen in de pinnen op de Arduino Uno,
  2. Plaats vervolgens het schild erop, zodat de korte zijde van de pinnen naar buiten steekt.
  3. Soldeer daarna alle pinnen aan het schild en zorg ervoor dat het soldeer rond de pin stroomt en een vulkaanvorm vormt (zie foto hierboven, die is overgenomen van https://cdn.sparkfun.com/assets/c/d/ a/a/9/523b1189…).

Als je een beginner bent in solderen, help jezelf dan met meer tutorials, zoals

Soldeer langere draden aan de motor

Aangezien de meeste motoren geen of zeer korte en dunne draden hebben, is het logisch om ze uit te breiden door ze te solderen aan langere en robuustere draden. Hier is hoe je dat zou kunnen doen:

  1. Verwijder het plastic rond het uiteinde van de draden en plaats ze zodat ze contact met elkaar maken langs hun blootliggende draden, zoals op de afbeelding.
  2. Soldeer ze aan elkaar door de draden van beide draden aan te raken en het soldeer erover te laten vloeien.

Stap 2: Bedrading

Bedrading
Bedrading
  1. Stapel motorshield bovenop de Arduino.
  2. Motoren in het motorschild schroeven.
  3. Sluit analoge sensoren aan op Arduino (in afbeelding gebeurt dit met lichtsensoren, maar hetzelfde circuit ziet er hetzelfde uit voor andere analoge sensoren).

Stap 3: Coderen

codering
codering
codering
codering
codering
codering
codering
codering

1. Downloaden

Download zip-map (SSAD_analogueInputs.zip), hieronder bijgevoegd. Pak het uit.

Download de Arduino IDE (https://www.arduino.cc/en/main/software).

Open het Arduino-bestand (SSAD_analogueInputs.ino) dat zich in de uitgepakte map met de Arduino IDE bevindt.

2. Bibliotheken installeren

Om de verstrekte code uit te voeren, moet u enkele bibliotheken installeren. Dus, als het Arduino-bestand, dat aan het einde van dit artikel is bijgevoegd, open is in de Arduino IDE, doe dan het volgende:

  1. Klik op: Extra → Bibliotheken beheren…
  2. Zoek naar "Adafruit Motor Shield V2 Library" in het filter je zoekveld
  3. Installeer het door op de knop Installeren te klikken

Na het downloaden van die bibliotheken zouden de #include-instructies in de verstrekte codes nu moeten werken. Controleer dat door op de knop "Verifiëren" te klikken (vink linksboven aan). U weet dat alle bibliotheken werken, als u de melding "Klaar met compileren" onderaan het programma krijgt. Anders verschijnt er een rode balk en krijgt u een melding wat er is misgegaan.

3. Wijzig de code

Wijzig de code volgens uw gebruiksscenario door de onderstaande instructies te volgen:

Initiëren van motoren en hun sensorische output

Geef allereerst aan welke pinnen de motoren gebruiken en in welk bereik de motoren werken. Een motor die bijvoorbeeld aan M4 is bevestigd en in een (snelheids)bereik van 25 en 175 werkt, wordt zo verklaard (onder de HOOFDcommentaar):

Motormotor1 = Motor (4, 25, 175);

Bij het werken met kleine vibratiemotoren die worden aangedreven in een bereik tot 3V, moet de motorkap met voorzichtigheid worden gebruikt, aangezien deze is gemaakt voor het laten draaien van motoren op 4,5VDC tot 13,5VDC. Om de 3V-motoren niet te beschadigen, heb ik de Volt-uitgang van het schild programmatisch beperkt tot maximaal 3V (precies 2,95V). Dat heb ik gedaan door te meten hoeveel de maximale snelheid van 255 is in Volt en gemeten met een multimeter dat dit 4,3V is. Daarom heb ik nooit een hogere snelheid dan 175, dat is ongeveer 3V, aan de motoren toegestaan.

Elke motor wordt verbonden met één SensoryOutput.

Eén SensoryOutput is samengesteld uit één of meerdere zintuiglijke prikkels. Een motor kan bijvoorbeeld trillen volgens één enkele sensor, of volgens het gemiddelde van meerdere, verschillend geplaatste sensoren.

Daarom moet voor elke motor eerst één SensoryOutput worden gedeclareerd. De getallen tussen de haakjes zijn de minimale en maximale waarde van wat de sensor (groep) kan waarnemen. Voor analoge sensoren is dit meestal 0 en 1023:

SensoryOutput output1 = SensoryOutput(0, 1023);

In de loop()-functie wordt dan aan elke motor één uitgangswaarde toegewezen. Hier schrijf je voor elke motor de volgende verklaring en in plaats van "output1", welke SensoryOutput-waarde er ook op moet worden aangesloten. Vergeet niet om ook alle "output1"-namen in deze regel te wijzigen, als u er een andere naam voor gebruikt.

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

Als je wilt, kun je meerdere motoren (bijvoorbeeld motor1 en motor2) dezelfde SensoryOutput (bijvoorbeeld output1) geven.

Verder zou je de waarden van meerdere sensoren aan één motor kunnen geven (zie volgende paragraaf).

De sensoren definiëren

In de setup()-functie moet worden aangegeven welke sensoren deel gaan uitmaken van welke motortrillingen (SensoryOutput). Hier is een voorbeeld van hoe je definieert dat de sensor die is aangesloten op de Arduino Pin A0 moet worden vertaald in trillingen met motor1 en dus output1:

output1.omvatten (A0);

Als meerdere sensorische uitgangen moeten worden gecombineerd binnen één motortrilling, kunt u gewoon een andere analoge ingangspen toevoegen aan uitgang1:

output1.omvatten (A1);

Ga anders gewoon door met de volgende uitvoer:

output2.omvatten (A1);

Meerdere sensoren combineren

Zoals hierboven vermeld, kunnen meerdere sensoringangen (bijvoorbeeld van A0, A1 en A2) naar één motor worden geleid. De code die ik geef, berekent het gemiddelde van de waarden die worden gelezen door alle meegeleverde sensoren. Dus, als dit genoeg is voor jouw gebruiksgeval en je wilt bijvoorbeeld een lage sensorische input direct in kaart brengen op een lage vibratie, dan ben je klaar en hoef je niet meer na te denken over het volgende:

Als u echter andere ideeën heeft over wat u wilt doen met een of meerdere onbewerkte sensorische inputs, kunt u wijzigingen aanbrengen in de functie int getValue() in de SensoryOutput-klasse:

int getValue(){

uiteindelijke uitvoer = 0; // TODO doe wat je wilt met sensorische waarden // hier wordt het gemiddelde gebouwd, als meerdere waarden worden gecombineerd voor (int i = 0; i < curArrayLength; i++) { finalOutput += analogRead (valueArray ); } return finalOutput / curArrayLength; }

4. Upload de code naar uw Arduino-prototype

Sluit het Arduino-prototype (vanaf stap 2) aan op uw pc.

Klik op Extra → Poort → Selecteer de poort, waar Arduino/Genuino Uno tussen haakjes staat

Klik op Extra → Bord → Arduino/Genuino Uno

Nu moeten de motoren draaien volgens de ingangen van de analoge sensoren. Als je wilt, kun je de Arduino loskoppelen van je pc en hem aansluiten op een andere voedingsbron, zoals een 9V-batterij.

Stap 4: Mogelijke uitbreidingen

Mogelijke uitbreidingen
Mogelijke uitbreidingen
Mogelijke uitbreidingen
Mogelijke uitbreidingen
Mogelijke uitbreidingen
Mogelijke uitbreidingen

Het prototype dat u zojuist hebt gebouwd, maakt uitsluitend analoge ingangen mogelijk en kan maximaal vier motoren aandrijven. Bovendien is het nog niet draagbaar. Als je die functies wilt uitbreiden, bekijk dan de volgende instructies:

  • Roterende massa's van ERM-motoren afdekken:
  • De SSAD draagbaar maken:
  • Meer dan 4 motoren gebruiken - Meerdere motorschilden stapelen:
  • Een ultrasone naderingssensor gebruiken als SSAD-ingang:

Aanbevolen: