Inhaltsverzeichnis:

Peripherieradar für Sehbehinderte - Gunook
Peripherieradar für Sehbehinderte - Gunook

Video: Peripherieradar für Sehbehinderte - Gunook

Video: Peripherieradar für Sehbehinderte - Gunook
Video: Selbstbau: Master/Slave Steckdose mit Anlaufverzögerung 2024, November
Anonim
Peripherieradar für Sehbehinderte
Peripherieradar für Sehbehinderte

Durch einen schrecklichen Unfall verlor ein Freund von mir kürzlich das Augenlicht auf seinem rechten Auge. Er war lange arbeitslos und als er zurückkam, erzählte er mir, dass er nicht weiß, was auf seiner rechten Seite ist. Weniger peripheres Sehen bedeutet, auf Dinge und Menschen zu stoßen. Das hat mich gestört. Ich entschied, dass es etwas geben musste, was wir tun konnten.

Ich wollte ein Gerät bauen, das die Entfernung zu Objekten auf der rechten Seite meines Freundes messen kann. Mein Plan ist es, einen haptischen Motor zu verwenden, um das Gerät umgekehrt proportional zur Entfernung zu einem Objekt zu vibrieren. Wenn dann Objekte weit entfernt sind, vibriert der Motor nicht, und wenn ein Objekt näher ist, beginnt es auf einem niedrigen Niveau zu vibrieren. Wenn das Objekt in der Nähe wäre, würde es auf einem viel höheren Niveau vibrieren (oder was auch immer Sie wollen). Das Gerät müsste klein genug sein, um mit dem Sensor nach rechts an der Seite einer Brille zu hängen. Mein Freund würde das Gerät auf der rechten Seite seiner Brille platzieren, aber natürlich könnte es für jemand anderen auf der linken Seite sein.

Ich erinnerte mich, dass ich zu Hause einige akustische Distanzsensoren hatte. Sie sind jedoch etwas groß und sperrig, weniger präzise und wären wahrscheinlich zu schwer für den Einsatz auf Brillen. Ich fing an, nach etwas anderem zu suchen.

Was ich gefunden habe, war der Time-of-Flight-Sensor VL53L0X von ST Electronics. Dies ist ein Infrarot-Laser und ein Infrarot-Detektor in einem einzigen Paket. Es sendet einen Laserlichtpuls außerhalb des für den Menschen sichtbaren Bereichs (940 nm) aus und zeichnet die verstrichene Zeit auf, die benötigt wird, um den reflektierten Puls zu erkennen. Es teilt diese Zeit durch 2 und multipliziert mit der Lichtgeschwindigkeit, was eine sehr genaue Entfernung in Millimetern ergibt. Der Sensor kann Entfernungen bis zu 2 Metern erkennen, aber wie ich gesehen habe, ist 1 Meter optimaler.

Zufällig hat Adafruit ein VL53L0X Breakout-Board. Also brauchte ich einen Vibrationsmotor, den sie auch hatten, und einen Mikrocontroller, um alles zu betreiben. Ich hatte zufällig einen PJRC Teensy 3.2 zur Hand. Obwohl es größer war, als ich wollte, konnte es mit einer langsamen Geschwindigkeit getaktet werden. Ich wollte die Taktrate senken, um Strom zu sparen. Und was eine Stromquelle angeht, hatte ich einen Sparkfun-Boost-Regler in meiner Junk-Box zusammen mit einem AAA-Batteriehalter. Ich hatte so ziemlich alles, was ich brauchte.

Schritt 1: Erster Prototyp

Erster Prototyp
Erster Prototyp
Erster Prototyp
Erster Prototyp

Ich nahm die Teile, die ich zur Hand hatte, und fertigte einen Handheld-Prototyp des Geräts an, das ich mir vorstellte. Ich habe den Griff und die Montageplatte in 3D gedruckt und die gesamte Elektronik auf ein Adafruit-Protoboard gelötet. Ich habe den Vibrationsmotor über einen 2N3904 NPN-Transistor mit dem Teensy verbunden. Ich habe ein Potentiometer hinzugefügt, um die maximale Entfernung einzustellen, auf die das Gerät reagieren würde.

Ich hatte es am nächsten Wochenende laufen lassen (siehe Bild oben). Es war nicht schön, aber es zeigte das Prinzip. Mein Freund könnte das Gerät auf seiner rechten Seite halten und testen, ob das Gerät nützlich ist oder nicht, und seine gewünschten Funktionen verfeinern.

Schritt 2: Prototyp #2

Prototyp 2
Prototyp 2
Prototyp 2
Prototyp 2
Prototyp 2
Prototyp 2

Nach dem ersten Handheld-Prototyp habe ich angefangen, eine kleinere Version zu bauen. Ich wollte meinem Ziel näher kommen, etwas zu machen, das auf eine Brille passt. Das Teensy, das ich bei der Handheld-Version verwendet habe, ermöglichte es mir, die Uhr zu verlangsamen, um Strom zu sparen. Aber die Größe sollte ein Faktor sein und so wechselte ich zu einem Adafruit Trinket M0. Die Taktrate beträgt zwar 48 MHz, der zugrunde liegende ARM-Prozessor kann jedoch langsamer getaktet werden. Durch Verwendung des internen RC-Oszillators kann er mit 8, 4 2 und sogar 1 MHz betrieben werden.

Prototyp #2 kam ziemlich schnell zusammen, da ich alles am nächsten Wochenende zusammen hatte. Die Schaltung war die gleiche wie bei Prototyp Nr. 1 mit Ausnahme des ARM M0. Ich habe ein kleines Gehäuse in 3D gedruckt und auf der Rückseite Führungen angebracht, damit es auf die Brille geschoben werden kann. Siehe das Bild oben. Zunächst wird mit 48 MHz getaktet.

Schritt 3: Prototyp #3

Prototyp #3
Prototyp #3

Also, dieses Instructable beginnt hier wirklich. Ich beschloss, einen letzten Prototypen zu machen. Ich beschließe, es so klein wie möglich zu machen, ohne ein benutzerdefiniertes PWB zu verwenden (wo ich sicher bin, dass wir unterwegs sind). Der Rest dieses Instructable wird Ihnen zeigen, wie man einen macht. Genau wie Menschen, die 3D-gedruckte Hände für Kinder mit Behinderungen herstellen, hoffe ich, dass Menschen diese für jeden mit einem ähnlichen Sehverlust herstellen.

Ich habe die Teileliste wie bei Prototyp # 2 beibehalten, aber ich beschloss, das Potentiometer zu entfernen. Nachdem wir mit meinem Freund gesprochen hatten, entschieden wir uns, die maximale Entfernung mit einer Software einzustellen. Da ich mit dem Teensy die Möglichkeit habe, einen Berührungssensor zu verwenden, konnten wir die maximale Entfernung jederzeit durch Berühren einstellen. Eine Berührung stellt eine kurze Entfernung ein, oder mehr Berührung eine längere Entfernung, eine andere Berührung die längste Entfernung und dann für eine weitere Berührung zum Anfang zurückspringen. Aber zunächst verwenden wir eine feste Distanz, um loszulegen.

Schritt 4: Teile

Teile
Teile

Für diesen Prototyp brauchte ich ein kleineres Board. Ich habe mich für ein Sparkfun-Protoboard (PRT-12702) entschieden, da es aufgrund seiner geringen Abmessungen (ca. 1,8 "X 1,3") eine gute Größe zum Schießen wäre.

Ich musste auch etwas anderes als eine AAA-Batterie als Stromquelle verwenden. Ein LiPo schien die richtige Wahl zu sein, da er Speicherkapazität und geringes Gewicht hätte. Ich habe es mit einer Knopfzelle versucht, aber sie hatte nicht genug Leistung, um den Motor sehr lange zu handhaben. Ich habe mich für einen kleinen LiPo mit 150 mAh Kapazität entschieden.

Ich wollte beim Trinket M0 bleiben und natürlich beim VL53L0X Breakout Board.

Nun, da wir bei den Details sind, hier ist eine Liste der Teile für diesen Prototyp:

Adafruit VL53L0X Flugzeit-Entfernungssensor - PRODUKT-ID: 3317 Adafruit - Vibrierende Mini-Motorscheibe - PRODUKT-ID: 1201 Adafruit - Lithium-Ionen-Polymer-Akku - 3,7 V 150 mAh - PRODUKT-ID: 1317 SparkFun - Lötbares Steckbrett - Mini - PRT-12702 Sparkfun - JST Rechtwinkliger Stecker - Durchgangsloch 2-Pin - PRT-09749 10K Ohm Widerstand - Junkbox (schauen Sie auf Ihrem Boden) 2N3904 NPN Transistor - Junkbox (oder rufen Sie einen Freund an) Einige Anschlusskabel (ich habe 22 Gauge Litze verwendet)

Zum Aufladen des LiPo-Akkus habe ich noch geschöpft:

Adafruit - Micro Lipo - USB LiIon/LiPoly-Ladegerät - v1 - PRODUKT-ID: 1304

Schritt 5: Schaltplan

Schaltplan
Schaltplan

Das Schema für dieses Gerät ist oben gezeigt. Die Touch-Eingabe ist für eine zukünftige Version vorgesehen, wird aber trotzdem im Schaltplan dargestellt. Außerdem bietet der 10K-Widerstand zwischen dem Trinket M0 und der Basis des 2N3904 gerade genug Basis, um den Motor einzuschalten, ohne ihn zu stark zu schlagen.

Was folgt, ist eine Schritt-für-Schritt-Montagebeschreibung.

Schritt 6: Das Protoboard

Das Protoboard
Das Protoboard

Viele von Ihnen, die erfahren sind, wissen dies, aber dies ist für diejenigen, die neu im Löten von Protoboards sind:

Das oben gezeigte Sparkfun-Protoboard (PRT-12702) hat 17 Spalten (Gruppen) von 5 Pins auf jeder Seite einer Lücke von drei Zehntel Zoll. Jede vertikale Spalte von 5 Stiften auf beiden Seiten der Lücke ist gemeinsam. Damit meine ich, dass jede Verbindung zu einem Pin in der Gruppe eine Verbindung zu jedem anderen Pin in der Gruppe ist. Für dieses Board scheint das nicht offensichtlich zu sein, aber Sie können dies überprüfen, wenn Sie ein DVM (Digital Volt Meter) verwenden. Wenn Sie auf die Rückseite schauen, können Sie nur die Spuren erkennen, die die Gruppen verbinden.

Schritt 7: Komponentenplatzierung

Komponentenplatzierung
Komponentenplatzierung
Komponentenplatzierung
Komponentenplatzierung

Sie müssen wahrscheinlich Stiftleisten sowohl an das Trinket M0 als auch an das VL53L0X anlöten. Beide kommen mit den Streifen, aber sie müssen gelötet werden. Adafruit hat in seinem Lernzentrum Anweisungen für diese beiden Teile. Wenn Sie neu sind, gehen Sie bitte dorthin (hier und hier), bevor Sie die Streifen auf die Platinen löten. Die Stiftleisten bieten ein niedrigeres Profil als eine Steckdose.

Das erste, was beim Löten auf ein Protoboard mit begrenztem Platz zu beachten ist, ist die Platzierung der Komponenten. Ich habe das Trinket und das VL53L0X an den in der Abbildung oben gezeigten Positionen platziert. Das Trinket hat Pins an beiden Kanten der Platine, aber das VL53L0X hat 7 Pins alle an einer Kante der Platine. Die Seite des VL53L0X, die keine Pins hat, werden wir verwenden, um einige Komponenten anzuschließen … wie wir sehen werden.

Ich habe auch den Schiebeschalter in Position gelötet und den 2N3904 gelötet. Ich habe die Löcher verdunkelt, in denen diese Teile platziert sind, und beim 2N3904 habe ich notiert, welche Pins Kollektor, Basis und Emitter sind. Wenn Sie es zum ersten Mal löten, sollten Sie es senkrecht zur Platine lassen, damit Sie andere Verbindungen löten können. Später können Sie es (vorsichtig) umbiegen, damit es eher bündig mit dem Brett ist.

HINWEIS: Der JST Battery Breakout wird zu diesem Zeitpunkt NICHT an die Platine gelötet. Es wird auf die Rückseite der Platine gelötet, aber erst NACHDEM wir unsere anderen Anschlüsse gelötet haben. Es wird das letzte sein, was wir löten.

Schritt 8: Drähte

Drähte
Drähte

Das obige Diagramm zeigt das Protoboard wieder mit abgedunkelten Löchern, in denen sich die Komponenten befinden. Ich habe die Etiketten für sie entlang der Kanten hinzugefügt, um das Verdrahten zu erleichtern. Beachten Sie, dass der Vibrationsmotor angezeigt wird, sich jedoch auf der Rückseite der Platine befindet und fast zuletzt angeschlossen wird, also ignorieren Sie ihn vorerst. Ich zeige auch den JST Battery Breakout mit einer gestrichelten Linie. Wie im vorherigen Schritt identifiziert, verbinden Sie es nicht, aber lassen Sie die 4 Löcher oben auf der Platine offen (dh nicht anlöten).

Ich gehe an dieser Stelle davon aus, dass Sie wissen, wie man die Isolierung von einem Draht ablöst, die Enden mit Lötzinn verzinnt und auf eine Platine lötet. Wenn nicht, sehen Sie sich bitte eines der Instructables zum Löten an.

Löten Sie für diesen Schritt die Drähte wie in Gelb gezeigt. Die Endpunkte sind die Löcher, an die Sie sie löten sollten. Sie sollten auch den 10K-Ohm-Widerstand wie gezeigt an die Platine löten. Die hergestellten Verbindungen sind:

1. Eine Verbindung vom Pluspol der Batterie zum COMmon (Mitte)-Pol des Schiebeschalters. Eine Seite des Schiebeschalters kontaktiert den BAT-Eingang des Trinket. Der Bordregler des Trinkets erzeugt 3,3 V aus der BAT-Eingangsspannung.

2. Eine Verbindung vom Minuspol (Masse) der Batterie zur Masse des Trinkets.

3. Eine Verbindung vom Minuspol (Masse) der Batterie zum Emitter des 2N3904

4. Eine Verbindung vom 3,3 Volt (3V) Pin des Trinkets zur VIN des VL53L0X. Der VL53L0X wird dies für den Eigenbedarf weiter auf 2,8 Volt regeln. Es bringt diese Spannung auch an einen Pin, aber wir brauchen sie nicht, also bleibt sie unverbunden.

Schritt 9: Mehr Drähte

Mehr Drähte
Mehr Drähte

Jetzt fügen wir die nächste Gruppe von Drähten wie oben gezeigt hinzu. Hier ist eine Liste jeder Verbindung:

1. Eine Verbindung vom mit 2 gekennzeichneten Pin des Trinkets zum VL53L0X SCL-Pin. Dies ist das I2C-Taktsignal. Das serielle I2C-Protokoll wird vom Trinket verwendet, um mit dem VL53L0X zu kommunizieren.

2. Eine Verbindung vom Pin des Trinkets, der als 0 (Null) gekennzeichnet ist, zum VL53L0X SDA-Pin. Dies ist das I2C-Datensignal.

3. Eine Verbindung vom VL53L0X GND-Pin über die Lücke auf dem Protoboard zum Emitter des 2N3904. Dadurch wird der VL53L0X geerdet.

4. Eine Verbindung vom Pin des Trinkets mit der Bezeichnung 4 zum 10K-Widerstand. Dies ist der Antrieb für den Vibrationsmotor. Dieser Draht sollte auf jeden Fall auf die Rückseite der Platine gelötet werden, wenn Sie meinen Anschlusspunkt wählen.

Denken Sie daran, dass jede vertikale Gruppe von 5 Pins gemeinsam ist, sodass Sie überall in dieser Gruppe eine Verbindung herstellen können, die bequem ist. Sie werden auf den Fotos meines Boards feststellen, dass ich einige meiner Verbindungspunkte geändert habe. Solange es sich um die richtige Verbindung handelt, ist das von Ihnen gewählte Pad in Ordnung.

Schritt 10: Vibrationsmotor

Vibrationsmotor
Vibrationsmotor

Der Vibrationsmotor wird mit einem abziehbaren Aufkleber auf der Rückseite geliefert. Sie ziehen dies ab, um ein klebriges Material freizulegen, mit dem der Motor auf die Rückseite der Platine geklebt werden kann (siehe jedoch den Kommentar unten, bevor Sie ihn aufkleben). Ich habe es links (mit Blick auf die Rückseite des Boards) des JST Battery Breakout Boards platziert, das wir noch nicht befestigt haben. Lassen Sie also etwas Platz für das JST Battery Breakout Board. Ich wollte auch sicherstellen, dass das Metallgehäuse des Motors keine Stifte über die Lücke des Protoboards kurzgeschlossen hat. Also schneide ich ein kleines Stück doppelseitiges Klebeband und klebte es auf die Rückseite der klebrigen Seite des Vibrationsmotors. Dann habe ich das auf die Rückseite des Boards geschoben. Es hilft, das Metallgehäuse hoch und von Stiften fernzuhalten. Achten Sie jedoch darauf, dass Sie es so platzieren, dass KEINE Pins kurzgeschlossen werden.

Löten Sie das rote Kabel des Vibrationsmotors an den 3V-Pin des Trinkets. Das schwarze Kabel des Vibrationsmotors ist am Kollektor des 2N3904 angelötet. Wenn die Software den 2N3904 pulsiert (liefert eine logische 1 als 3,3 V), schaltet der Transistor ein und verbindet das schwarze Kabel des Vibrationsmotors mit Masse (oder in der Nähe davon). Dadurch vibriert der Motor.

Ich hätte etwas Kapazität am roten Kabelanschlusspunkt des Vibrationsmotors hinzufügen können. Aber es gibt eine Kapazität auf der 3,3-V-Leitung des Trinkets, also bin ich mir sicher, dass es in Ordnung ist, aber wenn Sie eine andere Kapazität hinzufügen möchten, können Sie … solange Sie sie eindrücken können direkt an die positive Seite des LiPo-Akkus. Ich habe die 3,3-V-Seite gewählt, um die Spannung konstant zu halten. Bisher scheint es gut zu funktionieren.

Schritt 11: Last but not least …

Zu guter Letzt…
Zu guter Letzt…
Zu guter Letzt…
Zu guter Letzt…

Zuletzt verbinden wir das JST Battery Breakout Board mit der Rückseite des Protoboards. Ich lötete Pins auf die Platine und platzierte die JST Battery Breakout-Platine mit der Oberseite zum Protoboard, wie oben gezeigt. Stellen Sie sicher, dass Sie die Drähte für die positive Batterie und Masse an die richtigen Pins gelötet haben, wenn Sie dieses Teil platzieren. Wenn Sie sich irren, verpolen Sie die Teile und zerstören wahrscheinlich alle. Also bitte vor dem Löten und Einstecken des Akkus prüfen und erneut prüfen.

Schritt 12: Software

Software
Software

Um die Software zu installieren und/oder zu modifizieren, benötigen Sie die Arduino IDE und die Board-Dateien für das Trinket M0 sowie die Bibliotheken für das VL53L0X. All das ist hier, hier und hier.

Befolgen Sie die Anweisungen zur Verwendung des Adafruit M0 auf ihrer Lernseite hier.

Sobald die Software geladen ist, sollte das Board starten und über die serielle USB-Verbindung laufen. Bewegen Sie die Seite des Boards mit dem VL53L0X nahe an eine Wand oder Ihre Hand und Sie sollten den Motor vibrieren spüren. Die Schwingung sollte in der Amplitude geringer werden, je weiter ein Objekt vom Gerät entfernt ist.

Ein Verhalten des Geräts wird in den Kommentaren im Quellcode etwas erklärt. Aber die beigefügte Grafik sollte diesen Punkt gut verdeutlichen. Das Gerät sollte erst ca. 863 mm von einem Objekt entfernt zu vibrieren beginnen. Es erreicht seinen maximalen Vibrationspegel bei 50 mm von einem Objekt entfernt. Wenn Sie sich einem Objekt näher als 50 mm nähern, erzeugt das Gerät nicht mehr Vibrationen als bei 50 mm.

Schritt 13: Gehäuse

Gehege
Gehege
Gehege
Gehege
Gehege
Gehege
Gehege
Gehege

Ich habe ein Gehäuse entworfen und in 3D aus ABS-Kunststoff gedruckt. Sie können es in PLA oder ABS oder einem beliebigen Material drucken. Ich verwende ABS, weil ich bei Bedarf Teile mit Aceton auf die Platine schweißen kann. Das von mir entworfene Board ist einfach und hat ein Loch für den USB-Anschluss am Trinket und ein Loch für den Netzschalter. Ich ließ die beiden Bretter mit kleinen Armen an den Seiten der Box zusammenschnappen. Ich mag es nicht so sehr, daher werde ich es wahrscheinlich ändern. Natürlich können Sie alle gewünschten Änderungen vornehmen.

Derzeit muss bei dieser Version die Box geöffnet werden, um den LiPo-Akku zum Aufladen zu trennen. Wenn ich eine Platine für dieses Projekt erstelle, füge ich einen weiteren Anschluss hinzu, um die Batterie zugänglich zu machen, ohne die Box zu öffnen. Dies kann bei diesem Protoboard-Design möglicherweise möglich sein und ein Loch für den Stecker zum Aufladen machen. Wenn Sie dies versuchen möchten, teilen Sie bitte Ihre Ergebnisse mit.

Ich habe es geschafft, eine Box zu entwerfen, die ich nicht ganz hasste. Wir werden diesen verwenden, um das System zu testen. Ich habe die Ober- und Unterseite der Box als STL-Dateien angehängt sowie die Halterung / Anleitung, die ich unten hinzugefügt habe. Ich fügte ein Paar Führungen mit Aceton hinzu, um die Teile chemisch zusammenzuschweißen. Wenn Sie dies tun, seien Sie vorsichtig. Sie können die Baugruppe oben sehen.

Schritt 14: Was nun?

Was jetzt?
Was jetzt?

Überprüfen Sie mich … Ich bin alt und habe vielleicht etwas vergessen oder vermasselt. Ich lese und überprüfe dies noch einmal, aber ich kann immer noch Dinge übersehen. Fühlen Sie sich frei, mir zu sagen, was ich falsch gemacht/gemacht habe.

Und jetzt, da Sie das Peripherieradar-Board konstruiert und geladen haben und sich der LiPo-Akku in einem schönen 3D-gedruckten Gehäuse befindet (wenn ich es fertig habe oder wenn Sie es selbst gemacht haben), was tun Sie als nächstes? Ich denke, Sie sollten Erfahrung mit der Funktionsweise sammeln und Änderungen an der Software vornehmen. Die Lizenzvereinbarung in der Software besagt, dass Sie sie verwenden können, aber wenn Sie Änderungen vornehmen, müssen Sie diese freigeben. Ich sage nicht, dass die Software für dieses Projekt in irgendeiner Weise kompliziert oder erstaunlich ist. Es erreicht seine Ziele, aber es gibt Raum für Verbesserungen. Helfen Sie mit, dieses Gerät zu verbessern und teilen Sie dies mit uns allen. Denken Sie daran, bei diesem Projekt geht es darum, Menschen zu helfen. Also, helfen Sie!

Empfohlen: