Inhaltsverzeichnis:

Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD) - Gunook
Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD) - Gunook

Video: Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD) - Gunook

Video: Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD) - Gunook
Video: Sensory substitution and blindness. Posthesis substituting vision by audition. 2024, November
Anonim
Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD)
Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD)
Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD)
Vibrotaktiles sensorisches Substitutions- und Augmentationsgerät (SSAD)

Dieses Projekt zielt darauf ab, die Forschung im Bereich der sensorischen Substitution und Augmentation zu erleichtern. Im Rahmen meiner MSc-Dissertation hatte ich die Möglichkeit, verschiedene Möglichkeiten zum Bau von vibrotaktilen SSAD-Prototypen zu erkunden. Da Sensory Substitution and Augmentation ein Thema ist, das nicht nur Informatiker, sondern auch Forscher aus anderen Bereichen, wie den Kognitionswissenschaften, beschäftigt, sollte eine Schritt-für-Schritt-Anleitung es Nicht-Experten der Elektronik und Informatik ermöglichen, diesen Prototypen selbst zusammenzubauen Forschungszwecken.

Ich beabsichtige nicht, Werbung für genau eine Art von Marke/Produkt zu machen. Dieses Projekt wurde von keinem Unternehmen gesponsert. Das von mir verwendete Material wurde aufgrund technischer Spezifikationen und Bequemlichkeit (Schnelligkeit/Kosten der Lieferung, Verfügbarkeit usw.) ausgewählt. Für alle Produkte, die in diesem Instructable erwähnt werden, stehen gleichermaßen geeignete Alternativen zur Verfügung.

Das aktuelle Instructable enthält Schritt-für-Schritt-Anleitungen zum Bau eines grundlegenden SSAD-Prototyps mit bis zu 4 Motoren und analogen Sensoren.

Zusätzlich zu diesem Instructable habe ich drei Erweiterungen erstellt: Erstens habe ich Anweisungen zur Verwendung von mehr als vier Motoren mit diesem SSAD-Prototyp veröffentlicht (https://www.instructables.com/id/Using-More-Than-4…). Zweitens habe ich ein Beispiel erstellt, wie man diesen Prototyp tragbar macht (https://www.instructables.com/id/Making-the-SSAD-W…) und wie man ERM-Motoren ohne gekapselte rotierende Masse abdeckt (https:/ /www.instructables.com/id/Covering-Rotating…). Außerdem wird ein Beispiel für die Integration anderer als analoger Sensoren (in diesem Fall eines Näherungssensors) in den Prototyp veröffentlicht (https://www.instructables.com/id/Including-a-Proxi…).

Was ist "sensorische Substitution und Augmentation"?

Bei der sensorischen Substitution können die von einer Sinnesmodalität (z. B. Sehen) gesammelten Informationen durch einen anderen Sinn (z. B. Ton) wahrgenommen werden. Es ist eine vielversprechende nicht-invasive Technik, die Menschen hilft, sensorische Verluste oder Beeinträchtigungen zu überwinden.

Ist der übersetzte Sinnesreiz für den Menschen normalerweise nicht wahrnehmbar (z. B. UV-Licht), nennt man diesen Ansatz sensorische Augmentation.

Welche Fähigkeiten sind erforderlich, um diesen Prototyp zu bauen?

Grundsätzlich sind keine fortgeschrittenen Programmierkenntnisse erforderlich, um die folgenden Anweisungen zu befolgen. Wenn Sie jedoch Anfänger im Löten sind, planen Sie etwas mehr Zeit ein, um diese Technik kennenzulernen. Falls Sie noch nie zuvor programmiert haben, benötigen Sie möglicherweise Unterstützung von jemandem mit mehr Erfahrung in der Programmierung.

Sind Maschinen oder Werkzeuge erforderlich, die teuer oder nicht ohne Weiteres verfügbar sind?

Außer einem Lötkolben werden für den Bau dieses Prototyps keine Maschinen oder Werkzeuge benötigt, die man nicht einfach online oder im nächsten Haushaltsladen kaufen kann. Dieses SSAD ist auf Rapid-Prototyping ausgelegt, das heißt, es soll schnell reproduzierbar sein und eine kostengünstige Erforschung von Ideen ermöglichen.

Lieferungen

Hauptkomponenten (ca. 65 £ für 4 Motoren, exkl. Lötzubehör)

  • Arduino Uno (z. B. https://store.arduino.cc/arduino-uno-rev3, 20€)
  • Adafruit Motorshield v2.3 (z. B. https://www.adafruit.com/product/1438, 20£) und männliche Stacking Header (normalerweise beim Kauf des Motorshields enthalten)
  • Zylindrische ERM-Motoren (z. B. https://www.adafruit.com/product/1438, 5, 50£ / Motor)
  • Lötkolben und Lötdraht
  • Drähte

Optional (siehe Erweiterungen)

Beim Kauf eines ERM-Motors mit unbedeckter rotierender Masse:

  • Vinylrohr
  • Dünnes weiches Brett
  • 3D-Drucker (für Arduino-Gehäuse)

Wenn Sie mehr als 4 Motoren verwenden möchten (für mehr als 8 gleiche ein anderes Mal):

  • Adafruit Motorshield v2.3 und männliche Stacking Header
  • Weibliche Stapelleisten (z. B.
  • Arduino Mega für mehr als 6 Motoren (z. B.

Schritt 1: Löten

Löten
Löten

Löten Sie die Stifte an das Motorschild

Adafruit bietet ein sehr umfassendes Tutorial zum Löten von Headern an ein Motorschild (https://learn.adafruit.com/adafruit-motor-shield-v…):

  1. Stecken Sie zuerst die Stacking-Header in die Pins des Arduino Uno,
  2. Legen Sie dann die Abschirmung so auf, dass die kurze Seite der Stifte herausragt.
  3. Löten Sie danach alle Pins an die Abschirmung und stellen Sie sicher, dass das Lot um den Pin herum fließt und eine Vulkanform bildet (siehe Bild oben, das von https://cdn.sparkfun.com/assets/c/d/ übernommen wurde) a/a/9/523b1189…).

Wenn Sie ein Anfänger im Löten sind, helfen Sie sich mit weiteren Tutorials, wie zum Beispiel

Längere Drähte an den Motor anlöten

Da die meisten Motoren ohne oder sehr kurze und dünne Drähte geliefert werden, ist es sinnvoll, diese durch Anlöten an längere und robustere Drähte zu verlängern. So könnten Sie das tun:

  1. Entfernen Sie den Kunststoff um das Ende der Drähte und positionieren Sie sie so, dass sie entlang ihrer freiliegenden Drähte miteinander in Kontakt sind, wie im Bild.
  2. Löten Sie sie zusammen, indem Sie die Fäden der beiden Drähte berühren und das Lot über sie fließen lassen.

Schritt 2: Verkabelung

Verdrahtung
Verdrahtung
  1. Stack Motorshield auf dem Arduino.
  2. Motoren in das Motorschild einschrauben.
  3. Verdrahten Sie analoge Sensoren mit Arduino (im Bild geschieht dies mit Lichtsensoren, aber die gleiche Schaltung sieht für andere analoge Sensoren gleich aus).

Schritt 3: Codierung

Codierung
Codierung
Codierung
Codierung
Codierung
Codierung
Codierung
Codierung

1. Herunterladen

Laden Sie den unten angehängten Zip-Ordner (SSAD_analogeInputs.zip) herunter. Entpacken Sie es.

Laden Sie die Arduino-IDE herunter (https://www.arduino.cc/en/main/software).

Öffnen Sie die Arduino-Datei (SSAD_analogeInputs.ino), die sich im entpackten Ordner mit der Arduino-IDE befindet.

2. Bibliotheken installieren

Um den bereitgestellten Code auszuführen, müssen Sie einige Bibliotheken installieren. Wenn also die Arduino-Datei, die am Ende dieses Artikels angehängt ist, in der Arduino-IDE geöffnet ist, gehen Sie wie folgt vor:

  1. Klicken Sie auf: Extras → Bibliotheken verwalten…
  2. Suchen Sie im Suchfeld nach "Adafruit Motor Shield V2 Library"
  3. Installieren Sie es, indem Sie auf die Schaltfläche Installieren klicken

Nach dem Herunterladen dieser Bibliotheken sollten nun die #include-Anweisungen in den bereitgestellten Codes funktionieren. Überprüfen Sie dies, indem Sie auf die Schaltfläche "Verify" klicken (Häkchen oben links). Sie wissen, dass alle Bibliotheken funktionieren, wenn Sie unten im Programm die Meldung "Kompilierung fertig" erhalten. Andernfalls erscheint ein roter Balken und Sie erhalten eine Meldung, was schief gelaufen ist.

3. Ändern Sie den Code

Ändern Sie den Code entsprechend Ihrem Anwendungsfall, indem Sie die folgenden Anweisungen befolgen:

Initiieren von Motoren und ihren sensorischen Ausgängen

Deklarieren Sie zunächst, welche Pins die Motoren verwenden und in welchem Bereich die Motoren arbeiten. Zum Beispiel wird ein Motor, der an M4 angeschlossen ist und in einem (Drehzahl-)Bereich von 25 und 175 arbeitet, so deklariert (unter dem Kommentar MAIN):

Motor motor1 = Motor(4, 25, 175);

Bei der Arbeit mit kleinen Vibrationsmotoren, die in einem Bereich von bis zu 3 V betrieben werden, muss der Motorschutz mit Vorsicht verwendet werden, da er für den Betrieb von Motoren mit 4,5 VDC bis 13,5 VDC ausgelegt ist. Um die 3V-Motoren nicht zu beschädigen, habe ich den Volt-Ausgang des Schildes programmgesteuert auf maximal 3V (genau 2,95V) beschränkt. Ich habe das gemacht, indem ich gemessen habe, wie viel die maximale Geschwindigkeit von 255 in Volt ist, und mit einem Multimeter gemessen, dass dies 4,3 V beträgt. Daher habe ich den Motoren nie eine höhere Drehzahl als 175, was etwa 3 V entspricht, erlaubt.

Jeder Motor wird mit einem SensoryOutput verbunden.

Ein SensoryOutput besteht aus einem oder mehreren Sinnesreizen. Beispielsweise könnte ein Motor entweder nach einem einzigen Sensor oder nach dem Durchschnitt mehrerer unterschiedlich positionierter Sensoren vibrieren.

Daher muss zunächst für jeden Motor ein SensoryOutput deklariert werden. Die Zahlen in den Klammern sind der minimale und maximale Wert dessen, was der Sensor (die Gruppe) wahrnehmen kann. Bei analogen Sensoren sind dies meist 0 und 1023:

Sensorischer Ausgang Ausgang1 = Sensorischer Ausgang(0, 1023);

In der Funktion loop() wird dann jedem Motor ein Ausgangswert zugewiesen. Hier schreiben Sie für jeden Motor die folgende Anweisung und anstelle von "output1", welcher SensoryOutput-Wert damit verbunden werden soll. Vergessen Sie nicht, auch alle "output1"-Namen in dieser Zeile zu ändern, wenn Sie einen anderen Namen dafür verwenden.

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

Wenn Sie möchten, können Sie mehreren Motoren (z. B. motor1 und motor2) denselben SensoryOutput (z. B. Ausgang1) zuweisen.

Außerdem können Sie einem Motor die Werte mehrerer Sensoren zuweisen (siehe nächster Abschnitt).

Definieren der Sensoren

In der Funktion setup() muss angegeben werden, welche Sensoren an welcher Motorschwingung (SensoryOutput) beteiligt sein sollen. Hier ist ein Beispiel, wie Sie definieren, dass der Sensor, der an den Arduino Pin A0 angeschlossen ist, mit motor1 in Schwingungen übersetzt und folglich ausgegeben wird1:

Ausgabe1.include (A0);

Wenn mehrere sensorische Ausgänge in einer Motorvibration kombiniert werden sollen, können Sie einfach einen weiteren analogen Eingangspin zu Ausgang1 hinzufügen:

Ausgabe1.include (A1);

Andernfalls fahren Sie einfach mit der nächsten Ausgabe fort:

Ausgabe2.include (A1);

Kombinieren mehrerer Sensoren

Wie oben erwähnt, können mehrere Sensoreingänge (z. B. von A0, A1 und A2) auf einen Motor geführt werden. Der von mir bereitgestellte Code berechnet den Durchschnitt der Werte, die von allen enthaltenen Sensoren gelesen werden. Wenn dies also für Ihren Anwendungsfall ausreicht und Sie beispielsweise einen geringen sensorischen Input einfach direkt auf eine geringe Vibration abbilden möchten, sind Sie fertig und müssen sich keine Gedanken über Folgendes machen:

Wenn Sie jedoch andere Vorstellungen davon haben, was Sie mit einem oder mehreren rohen sensorischen Eingaben machen möchten, können Sie entsprechende Änderungen in der Funktion int getValue() in der SensoryOutput-Klasse vornehmen:

int getValue(){

finalOutput = 0; // TODO mit sensorischen Werten machen was man will // hier wird der Durchschnitt gebildet, wenn mehrere Werte kombiniert werden für (int i = 0; i < curArrayLength; i++) { finalOutput += analogRead(valueArray); } return finalOutput / curArrayLength; }

4. Laden Sie den Code in Ihren Arduino-Prototyp hoch

Schließen Sie den Arduino-Prototyp (aus Schritt 2) an Ihren PC an.

Klicken Sie auf Extras → Port → Wählen Sie den Port, wobei Arduino/Genuino Uno in Klammern steht

Klicken Sie auf Extras → Board → Arduino/Genuino Uno

Nun sollten die Motoren entsprechend den Eingängen der analogen Sensoren laufen. Wenn Sie möchten, können Sie das Arduino von Ihrem PC trennen und an eine andere Stromquelle, z. B. eine 9V-Batterie, anschließen.

Schritt 4: Mögliche Erweiterungen

Mögliche Erweiterungen
Mögliche Erweiterungen
Mögliche Erweiterungen
Mögliche Erweiterungen
Mögliche Erweiterungen
Mögliche Erweiterungen

Der von Ihnen soeben gebaute Prototyp erlaubt ausschließlich analoge Eingänge und kann bis zu vier Motoren ansteuern. Außerdem ist es noch nicht tragbar. Wenn Sie diese Funktionen erweitern möchten, sehen Sie sich die folgenden Anweisungen an:

  • Abdeckung rotierender Massen von ERM-Motoren:
  • Das SSAD tragbar machen:
  • Mit mehr als 4 Motoren - Stapeln mehrerer Motorschilde:
  • Verwendung eines Ultraschall-Näherungssensors als SSAD-Eingang: