Inhaltsverzeichnis:

Stationäres Radar (LIDAR) Array mit Arduino - Gunook
Stationäres Radar (LIDAR) Array mit Arduino - Gunook

Video: Stationäres Radar (LIDAR) Array mit Arduino - Gunook

Video: Stationäres Radar (LIDAR) Array mit Arduino - Gunook
Video: Introduction to Radar Systems – Lecture 9 – Tracking and Parameter Estimation; Part 1 2024, Juli
Anonim
Stationäres Radar (LIDAR) Array mit Arduino
Stationäres Radar (LIDAR) Array mit Arduino
Stationäres Radar (LIDAR) Array mit Arduino
Stationäres Radar (LIDAR) Array mit Arduino
Stationäres Radar (LIDAR) Array mit Arduino
Stationäres Radar (LIDAR) Array mit Arduino

Wenn ich einen zweibeinigen Roboter baue, dachte ich immer daran, ein cooles Gerät zu haben, das meinen Gegner verfolgen und damit Angriffsbewegungen ausführen kann. Hier gibt es bereits zahlreiche Radar-/Lidar-Projekte. Für meinen Zweck gibt es jedoch einige Einschränkungen:

  • Ultraschallwellensensormodule sind ziemlich groß. Jeder Roboter würde aussehen wie WALL-E.
  • Aktuelle Radarprojekte beinhalten alle einen Sensor (entweder Ultraschallwellen, IR, Laser, …) und einen Servomotor in der Mitte. Um die Umgebung zu scannen, muss sich das Servo von einer Seite zur anderen bewegen. Das Hin- und Herbewegen von Gegenständen erzeugt Impulsänderungen, die für das Balancieren und Gehen des Zweibeiners schlecht sind.
  • Die Abtastfrequenz wird durch die Servogeschwindigkeit begrenzt. Wahrscheinlich können nur einige Hertz erreicht werden. Selbst wenn die Abtastfrequenz durch ein Superservo hochgefahren werden kann, würde dies zu starken Vibrationen führen.
  • Die Anordnung [Zentraler Servomotor - Sensor] begrenzt auch die Montageposition und das Design. Es ist schwierig, so etwas anders als einen Kopf zu montieren. Was meinen Zweibeiner jedes Mal wie ein kopfschüttelndes WALL-E aussehen lässt. Nicht cool!
  • Die [Servo-Sensor]-Anordnung kann auch als [Motor-Sensor]-Stil gebaut werden. Der Sensor (oder die Sensoren) dreht sich kontinuierlich entlang einer Motorachse. Dies kann die Probleme mit Impulsrucken und niedrigen Abtastfrequenzen beseitigen, jedoch nicht die Beschränkung des Rumpfdesigns. Auch die Verdrahtungsschwierigkeiten würden erheblich zunehmen.

Nach der Suche spritzte mir dieser winzige Sensor VL53L0X von ST in die Augen. Mit der Angabe "World Smallest" Time-of-Flight-Ranging-Sensor beträgt die Abmessung nur 4,4 x 2,4 x 1,0 mm. Mit

  • On-Chip-IR-Laser-Emitter und -Detektor
  • Bis zu 2 m Reichweite (1,2 m im schnellen Modus)
  • Programmierbare I2C-Adresse
  • Ein GPIO-Interrupt-Ausgangspin
  • Augensicher

All diese speziellen Funktionen zusammen ermöglichten es mir, die oben genannten Probleme zu überwinden, wenn eine Reihe von VL53L0X-Sensoren funktionieren könnte. Ursprünglich dachte ich, dieses Radar würde Festkörperradar heißen, fand aber heraus, dass dieser Begriff für etwas anderes verwendet wurde. Daher bedeutet das Wort "Stationär" im Titel, dass dieses Radargerät keine beweglichen Teile enthält. Während LIDAR (Light Detection and Ranging) der technisch korrekte Begriff für diesen Chip ist, wird RADAR hier als allgemeinerer Begriff bezeichnet.

Der Grund, warum die programmierbare I2C-Adresse und der GPIO-Ausgangspin für dieses Projekt entscheidend sind, wird später erläutert.

Schritt 1: Werkzeuge und Teile

Werkzeuge und Teile
Werkzeuge und Teile
Werkzeuge und Teile
Werkzeuge und Teile

Werkzeuge

Folgende Werkzeuge werden in diesem Projekt benötigt:

  • Lötkolben
  • Löten helfende Hände
  • Dupont Crimpzange
  • 1,5 mm Sechskantschlüssel
  • Werkzeug zum Entfernen der Drahtbeschichtung
  • Kabelschneider
  • Heißklebepistole
  • Pinzette
  • Lupe (physisch oder Apps auf Ihrem Telefon)
  • Flachzange

Teile

Die folgenden Teile werden in diesem Projekt verwendet:

  • 10x VL53L0X GY-530 Breakout-Boards
  • Ein Arduino (Uno, Nano, Mega, Zero, Mini usw.)
  • Ein Steckbrett und einige Steckbrettdrähte
  • AWG #26 Drähte mit verschiedenen Farben
  • AWG #30 einadriger Draht
  • 5x Dupont-Stecker
  • 5x Single Pin Dupont Gehäuse
  • 10x 3D-gedruckte Breakout-Board-Halter
  • 1x 3D gedruckter runder Rahmen
  • 10x M2x10 Flachkopfschrauben
  • 10x 0804 LED (Blau empfohlen)
  • 10x SOT-23 AO3400 N-Kanal MOSFET
  • Ein kleiner Kondensator (10~100uF)

Breakout-Board

Das von mir verwendete Breakout-Board VL53L0X ist GY-530. Es gibt auch eine Adafruit-Version und eine Pololu-Version. Wenn möglich, empfehle ich die Verwendung von Adafruit oder Pololus Produkt, da sie großartige Produkte, großartige Tutorials und großartige Softwarebibliotheken herstellen. Ich habe die VL53L0X-Bibliothek von Adafruit getestet und eine modifizierte Version der VL53L0X-Bibliothek von Pololu verwendet.

Dupont-Anschlüsse

Die Dupont-Anschlüsse werden für das Steckbrett verwendet. Sie können alle anderen Arten von Verbindungen verwenden, die Sie zur Verfügung haben.

Schrauben und 3D-gedruckte Teile

Die M2-Schrauben, Halter und der kreisförmige Rahmen dienen dazu, die Sensoren in einer kreisförmigen Anordnung zu platzieren. Sie können jede andere Methode verwenden, z. B. Karton, Modellhölzer, Ton verwenden oder sogar heiß auf eine Dose kleben.

Schritt 2: Hacken des Breadout Boards

Hacken des Breadout Boards
Hacken des Breadout Boards
Hacken des Breadout Boards
Hacken des Breadout Boards
Hacken des Breadout Boards
Hacken des Breadout Boards
Hacken des Breadout-Boards
Hacken des Breadout-Boards

Erkennungskegel

Ich habe ein einzelnes Modul verwendet, um den Erkennungskegel zu zeichnen. Mit einem meist 3D-gedruckten Roboter als Ziel. Die Entfernung wird auf dem LED-Display angezeigt und grob gemessen. Die gemessenen Daten werden in einer Microsoft Excel-Datei aufgezeichnet und die Kurvenanpassungsfunktion verwendet. Die beste Anpassung ist eine natürliche Logarithmuskurve mit einem effektiven Abstand von 3 cm bis etwa 100 cm.

Bei 60 cm beträgt die Erkennungskurve für einen einzelnen Sensor etwa 22 cm. Bei einem 20 cm breiten Ziel sollte ein kreisförmiger Abstand von 10~15 Grad für das Radararray eine akzeptable Scanauflösung ergeben.

I2C-Adresse

Während die I2C-Geräteadresse des VL53L0X programmierbar ist, ist die vollständige Kontrolle des XSHUT-Pins durch den Mikrocontroller erforderlich. Die Reihenfolge dazu ist:

  1. AVDD wird mit Strom versorgt.
  2. Alle VL53L0X-Chips werden in den Hw-Standby-(Reset)-Zustand gebracht, indem ALLE ihre XSHUT-Pins auf LOW gesetzt werden.
  3. Jeder Chip wird nacheinander aus dem Reset-Zustand genommen. Die Standard-I2C-Adresse nach dem Booten ist 0x52.
  4. Die Chipadresse wird durch einen I2C-Befehl auf eine neue Adresse geändert. Beispielsweise wurde 0x52 in 0x53 geändert.
  5. Wiederholen Sie Schritt 3 und 4 für alle Chips.

Theoretisch können für den 7-Bit-Adressbereich maximal 126 Einheiten am selben Bus angesteuert werden. In der Praxis können/sollten jedoch die Buskapazität und die Stromaufnahmebegrenzung des Mikrocontrollers die maximale Geräteanzahl begrenzen.

Die neue I2C-Adresse wird nicht im VL53L0X-Chip gegen Ausschalten oder Zurücksetzen gespeichert. Daher muss dieser Vorgang bei jedem Einschalten einmal durchgeführt werden. Dies bedeutet, dass für jede Einheit im Radarfeld ein wertvoller Pin benötigt wird. Dies ist für einen Radargurt mit 10+ oder 20+ Einheiten viel zu unfreundlich für Verkabelung und Pin-Verbrauch.

Wie in SCHRITT1 erwähnt, ist es ein Glück, dass es einen GPIO1-Pin auf dem VL53L0X-Chip gibt, der ursprünglich für Interrupts verwendet wurde, die Arbeit erledigen kann.

GPIO-XSHUTN-Daisy-Chain

Der GPIO-Ausgang befindet sich beim Booten in einem hochohmigen Zustand und im aktiven Zustand ist der Open-Drain auf Low. Die GPIO- und XSHUT-Pins werden auf dem GY-530-Breakout-Board hoch auf AVDD gezogen, wie im Datenblatt empfohlen. Um alle VL53L0X-Chips zuverlässig in den Hw-Standby-Zustand zu versetzen (das XSHUT niedrig treibt), benötigen wir für jeden XSHUT-Pin ein logisches NOT-Gatter (Inverter). Dann verbinden wir den GPIO-Ausgang eines Chips (des N-ten Chips) mit dem XSHUTN (XSHUT-NOT) des Downstream-Chips (dem N + 1-Chip).

Beim Einschalten werden alle GPIO-Pins (inaktiv) hochgezogen, alle nachfolgenden XSHUT-Pins werden vom NOT-Gate auf Low gefahren (außer dem ersten Chip, bei dem sein XSHUTN-Pin mit dem Mikrocontroller verbunden ist). Die Änderung der I2C-Adresse und die XSHUT-Freigabe des Downstream-Chips erfolgt nacheinander in der Software.

Wenn Sie verschiedene Breakout-Boards verwenden, müssen Sie sicherstellen, dass die Pullup-Widerstände vorhanden sind oder nicht, und entsprechende Einstellungen vornehmen.

Hinzufügen einer LED

Im nächsten Schritt wird der Breakout-Platine eine kleine 0805-SMD-LED hinzugefügt, die vom XSHUT-Pad mit dem GND-Anschluss eines benachbarten Kondensators verbunden ist. Obwohl die LED selbst den Betrieb des Moduls nicht beeinflusst, gibt sie uns eine gute visuelle Anzeige auf der XSHUT-Logikebene.

Das Anschließen der LED in Reihe mit dem Pull-up-Widerstand (10k in meinem Fall) am XSHUT-Pin führt zu einem Spannungsabfall. Anstelle des hohen Logikpegels von 3,3 V wird der Durchlassspannungsabfall für eine rote 0805-LED mit 1,6 V gemessen. Obwohl diese Spannung höher ist als der hohe Logikpegel (1,12 V) im Datenblatt, ist die blaue LED für diesen Hack besser. Der Durchlassspannungsabfall für die blaue LED beträgt ungefähr 2,4 V, was sicher über dem Logikpegel des Chips liegt.

Hinzufügen des N-MOS-Inverters (Logic NOT Gate)

Auf der von uns hinzugefügten LED ist ein kleiner SOT-23-N-Kanal-MOSFET gestapelt. Zwei Anschlüsse (D, S) müssen auf die Breakout-Platine gelötet werden, und die verbleibende Klemme (G) wird mit dem GPIO-Pin der Upstream-Platine mit #26-Draht verbunden.

Hinweise zum Hinzufügen von SMD-Komponenten

Das Löten von SMD-Komponenten auf einer Breakout-Platine, die nicht dafür ausgelegt ist, ist keine leichte Aufgabe. Wenn Sie noch nicht von 0805, SMD, SOT-23 gehört haben, haben Sie diese winzigen Bauteile wahrscheinlich noch nie gelötet. Bei der Handhabung dieser winzigen Komponenten von Hand ist es sehr üblich, dass:

  • Das kleine Ding ist einfach abgefallen und verschwunden, für immer,
  • Die winzigen Pads an dem kleinen Ding sind einfach abgeblättert.
  • Die winzigen Beine an dem kleinen Ding sind einfach gebrochen.
  • Das Lötzinn sammelte sich gerade zu einem Klecks und konnte nicht getrennt werden.
  • Und mehr…

Wenn Sie dieses Radar dennoch erstellen möchten, können Sie:

  • Ändern Sie die Komponenten in ein größeres Paket, z. B. im DIP-Stil.
  • Holen Sie sich mehr Komponenten als das erforderliche Minimum zum Üben und zum Verbrauch.

Schritt 3: Löten der 0805 LED

Löten der 0805 LED
Löten der 0805 LED
Löten der 0805 LED
Löten der 0805 LED
Löten der 0805 LED
Löten der 0805 LED
Löten der 0805 LED
Löten der 0805 LED

Löten der 0805 SMD LED

Eine 0805-LED von Hand auf eine nicht für SMD ausgelegte Breakout-Platine zu löten, ist überhaupt keine leichte Aufgabe. Die folgenden Schritte sind meine Empfehlung zum Löten der LED.

  1. Verwenden Sie die Hilfshand, um Ihr Breakout-Board zu halten.
  2. Geben Sie etwas Lötpaste auf den Rand des SMD-Kondensators und das "XSHUT"-Pad.
  3. Verwenden Sie den Lötkolben, um etwas zusätzliches Lötmittel auf den Kondensatorrand zu geben.
  4. Geben Sie etwas Lötpaste auf beide Enden der 0805-LED.
  5. Verwenden Sie den Lötkolben, um etwas Zinn auf beide Enden der 0805-LED zu geben.
  6. Verwenden Sie die Pinzette, um die LED wie auf dem Foto gezeigt zu platzieren. Das Kathodenende hat normalerweise eine markierte Linie. In meinem Beispiel befindet sich am Kathodenende eine grüne Linie. Legen Sie das Kathodenende auf das Kondensatorende.
  7. Verwenden Sie die Pinzette, um leichten Druck auf die LED in Richtung des Kondensators auszuüben, und löten Sie die LED an das Kondensatorende, indem Sie gleichzeitig dem Kondensatorende Wärme hinzufügen. Drücken Sie nicht zu fest auf die LED. Die Abdeckung kann bei Hitze und übermäßigem Druck brechen. Üben Sie nach dem Löten leichten Druck seitlich auf die LED aus, um zu testen, ob die LED fest verlötet ist.
  8. Löten Sie nun die LED am XSHUT Dip Pad. Dieser Schritt sollte einfacher sein.

Hinweis: Das im Bild gezeigte Kondensatorende ist der Erdungsanschluss dieser Breakout-Platine. Und das Dip-Pad XSHUT wird von einem Widerstand hochgezogen.

Testen der LED

Die LED sollte aufleuchten, wenn Sie Strom (z. B. 5 V) und Masse an die Breakout-Platine anlegen.

Schritt 4: Löten des N-Kanal-MOSFET

Löten des N-Kanal-MOSFET
Löten des N-Kanal-MOSFET
Löten des N-Kanal-MOSFET
Löten des N-Kanal-MOSFET
Löten des N-Kanal-MOSFET
Löten des N-Kanal-MOSFET
Löten des N-Kanal-MOSFET
Löten des N-Kanal-MOSFET

Löten des AO3400 N-Kanal MOSFET

Dieser MOSFET befindet sich im SOT-23-Gehäuse. Wir müssen es auf der LED "stapeln" und auch einen Draht hinzufügen:

  1. Geben Sie etwas Lötpaste auf und verzinnen Sie alle drei Anschlüsse.
  2. Verwenden Sie eine Pinzette, um den MOSFET auf die 0805-LED zu platzieren. Der S-Anschluss sollte die Oberseite des Kondensators berühren
  3. Löten Sie die S-Klemme mit dem Kondensatorende, wie auf dem Foto gezeigt.
  4. Schneiden Sie einen kleinen AWG #30 Einzeladerdraht ab und entfernen Sie die Beschichtung ca. 1 cm.
  5. Verwenden Sie den Lötkolben, um das Lot von unten in das XSHUT-Loch zu schmelzen und führen Sie den #30-Draht von oben ein, wie auf dem Foto gezeigt.
  6. Löten Sie das obere Ende des Drahtes an die MOSFET-D-Klemme.
  7. Schneiden Sie zusätzlichen Draht ab.

Hinweis: Der MOSFET-S-Anschluss ist wie in der Abbildung gezeigt mit dem Kondensatorende verbunden. Dieses Ende ist die Erdungsklemme. Der MOSFET D-Anschluss ist mit dem ursprünglichen XSHUT-Pin verbunden.

Terminal G ist in diesem Moment nicht verbunden. Seine Position befindet sich direkt über einigen Pull-up-Widerständen. Stellen Sie sicher, dass zwischen ihnen (N-MOS und Widerstand) eine Lücke vorhanden ist und sich nicht gegenseitig berührt.

Schritt 5: Verdrahten des Sensorarrays

Verdrahten des Sensor-Arrays
Verdrahten des Sensor-Arrays
Verkabelung des Sensor-Arrays
Verkabelung des Sensor-Arrays
Verkabelung des Sensor-Arrays
Verkabelung des Sensor-Arrays

Gemeinsame Busverkabelung

Der gemeinsame Bus beinhaltet:

  • Vcc-Leistung. Rot im Foto. Ich verwende Arduino Nano mit 5V-Logik. Das Breakout-Board verfügt über LDO und Level-Shifter. Es ist also sicher, 5v als Vin zu verwenden.
  • Boden. Schwarz auf dem Foto.
  • SDA. Grün im Foto.
  • SCL. Gelb auf dem Foto.

Diese vier Linien sind gemeinsame Linien. Schneiden Sie die entsprechenden Kabellängen ab und löten Sie sie parallel zu allen Sensormodulen. Ich habe 20 cm von Arduino bis zum ersten Sensor verwendet und danach jeweils 5 cm.

XSHUTN- und GPIO-Verkabelung

Das 20 cm lange weiße Kabel geht vom Arduino-Steuerstift zum XSHUTN-Pin des ersten Sensors. Dies ist die Steuerleitung, die erforderlich ist, um den ersten VL53L0X-Chip aus dem Reset zu bringen und die I2C-Adresse zu ändern.

Das 5 cm lange weiße Kabel zwischen jedem Modul ist die Daisy-Chain-Steuerleitung. Der Upstream-Chip (zum Beispiel Chip Nr. 3) GPIO-Pad ist mit dem Downstream-(zum Beispiel Chip Nr. 4) XSHUTN-Bein (N-Kanal-MOSFET-G-Anschluss) verbunden.

Achten Sie darauf, dass der G-Klemmenkontakt nicht mit dem darunter liegenden Widerstand verbunden ist. Sie können in der Lücke ein Isolierband anbringen. Hier kann der üblicherweise mit dem VL53L0X-Chip mitgelieferte Protection Liner verwendet werden.

Verwenden Sie die Heißluftpistole, um das Steuerkabel zu kleben.

Heißkleber

Wie Sie auf dem Foto sehen können, befindet sich auf dem weißen Steuerkabel in der Nähe des N-MOS G-Anschlusses ein Klecks Heißkleber. Dieser Schritt ist sehr wichtig und unbedingt notwendig. Eine schwimmende Lötung direkt am Bein des SMD-Bauteils ist sehr schwach. Schon ein kleiner Druck auf den Draht kann das Bein brechen. Führen Sie diesen Schritt vorsichtig aus.

Testen der LED

Wenn Sie das Sensorarray mit Strom (z. B. 3,3 V-5 V) und Masse versorgen, sollte die LED am ersten Modul mit dem XSHUTN-Drahtlogikpegel reagieren. Wenn Sie den XSHUTN an logisch hoch anschließen (z. B. 3,3 V-5 V), sollte die LED aus sein. Wenn Sie das XSHUTN-Kabel mit Low (Masse) verbinden, sollte die LED am ersten Modul leuchten.

Bei allen nachfolgenden Modulen sollte die LED aus sein.

Dieser Test wird durchgeführt, bevor eine Verbindung zum Arduino hergestellt wird.

Schritt 6: Vervollständigen des Sensor-Arrays

Image
Image
Vervollständigung des Sensor-Arrays
Vervollständigung des Sensor-Arrays
Vervollständigung des Sensor-Arrays
Vervollständigung des Sensor-Arrays
Vervollständigung des Sensor-Arrays
Vervollständigung des Sensor-Arrays

Daisy-Chain-Tests

Jetzt wollen wir testen, ob die I2C-Adressänderung für alle Sensoren im Array funktioniert. Wie bereits erwähnt, wird der erste Chip vom Arduino gesteuert. Der zweite Chip wird vom ersten Chip gesteuert und so weiter.

  1. Stellen Sie das Brotbrett auf. 5V und Masseschiene sind direkt von Adriano 5V und Masse verbunden. Die Stromaufnahme für jeden Sensor ist im Datenblatt mit 19 mA angegeben.
  2. Fügen Sie einen Kondensator auf der Stromschiene hinzu, um den Vin zu stabilisieren.
  3. Verbinden Sie Vin und Ground vom Sensor-Array mit der Stromschiene.
  4. Verbinden Sie SDA mit Arduino Nano Pin A4 (kann für andere Mikrocontroller unterschiedlich sein).
  5. Verbinden Sie SCL mit Arduino Nano Pin A5 (kann für andere Mikrocontroller unterschiedlich sein).
  6. Verbinden Sie das XSHUTN-Kabel mit dem Arduino Nano Pin D2. (Dies kann in der Skizze geändert werden).
  7. Gehen Sie zu github https://github.com/FuzzyNoodle/Fuzzy-Radar und laden Sie die Bibliothek herunter.
  8. Öffnen Sie das Beispiel "Daisy_Chain_Testing" und laden Sie die Skizze hoch.

Wenn alles funktioniert, sollten Sie sehen, wie die Status-LEDs nacheinander aufleuchten, ähnlich wie im obigen Videoclip.

Sie können auch das serielle Fenster öffnen und den Initialisierungsfortschritt sehen. Die Ausgabe würde so aussehen:

PortPort öffnen öffnen Startskizze. Setzen Sie Chip 0 in den Reset-Modus. Alle Status-LEDs sollten aus sein. Konfigurieren Sie nun die Sensoren. Die LED sollte nacheinander aufleuchten. Chip 0 konfigurieren - I2C-Adresse auf 83 zurücksetzen - Sensor initialisieren. Chip 1 konfigurieren - I2C-Adresse auf 84 zurücksetzen - Sensor initialisieren. Chip 2 konfigurieren - I2C-Adresse auf 85 zurücksetzen - Sensor initialisieren. Konfiguration des Radar-Arrays abgeschlossen.

Montieren Sie den Halter und den Rahmen

  1. Setzen Sie jedes GY-530-Modul vorsichtig mit der M2x10-Schraube auf die Halterung. Drücken Sie nicht auf den MOSFET und ziehen Sie nicht an den XSHUTN-Drähten.
  2. Legen Sie jeden Halter in den runden Rahmen. Verwenden Sie etwas Heißkleber, um die Teile zu verbinden.

Auch hier werden die M2-Schrauben, Halter und der kreisförmige Rahmen verwendet, um die Sensoren in einer kreisförmigen Anordnung zu platzieren. Sie können jede andere Methode verwenden, z. B. Karton, Modellhölzer, Ton verwenden oder sogar heiß auf eine Dose kleben.

Die von mir verwendeten 3D-gedruckten Dateien sind unten aufgeführt. Der runde Rahmen besteht aus 9 Modulen, die jeweils um 10 Grad voneinander getrennt sind. Wenn Sie ein scharfes Auge haben, gab es auf den vorherigen Fotos 10 Module. Der Grund? Unten erklärt…

Entfernen Sie die Schutzfolie

Wenn Sie die Schritte von Anfang an befolgt haben, ist es jetzt ein guter Zeitpunkt, die Schutzfolie auf dem VL53L0X-Chip zu entfernen. Auf meinen vorherigen Fotos sind sie bereits entfernt, weil ich die Module testen und sicherstellen muss, dass das Konzept funktioniert, bevor ich diese Anleitungen poste.

Über die Schutzfolie heißt es im Datenblatt: "Sie muss vom Kunden kurz vor der Montage des Deckglases entfernt werden". Die beiden winzigen Löcher (Sender und Empfänger) auf dem VL53L0X-Chip sind anfällig für Verschmutzungen wie Staub, Fett, Heißkleber usw.

Bei einer Verschmutzung kann die Reichweite verringert werden und die Messwerte können um einen offensichtlichen Betrag abweichen. Eines meiner Testmodule ist versehentlich mit Leim verunreinigt, die Reichweite ist auf 40cm reduziert und die Entfernungsanzeige ist fälschlicherweise um 50% vergrößert. Also sei vorsichtig!

Schritt 7: Daten abrufen

Image
Image
Lasertracer (Demonstration)
Lasertracer (Demonstration)

Verwenden des Raw_Data_Serial_Output-Beispiels

Jetzt sehen wir die Daten unseres Sensorarrays sehr gerne. In der Arduino-Bibliothek auf GitHub:

https://github.com/FuzzyNoodle/Fuzzy-Radar

Es gibt ein Beispiel namens Raw_Data_Serial_Output. Dieses Beispiel demonstriert die Rohdatenausgabe des Sensorarrays. Die Ausgabewerte sind in Millimetern angegeben.

Nachdem die Sensoren initialisiert wurden, sollte im seriellen Fenster etwa Folgendes angezeigt werden, wenn Sie mit der Hand durch die Sensoren streichen:

Eine Live-Demonstration finden Sie im Videoclip.

Verwenden des Fuzzy_Radar_Serial_Output-Beispiels

Der nächste Schritt besteht darin, aus diesen Entfernungsmessungen nützliche Daten zu gewinnen. Was wir von einem RADAR wollten, sind die Entfernung und der Winkel des Zielobjekts.

  • Der Abstand wird in Millimetern bezogen auf die Sensorfläche angegeben. Die Rückgabe von 0 bedeutet, dass sich das Ziel außerhalb der Reichweite befindet.
  • Der Winkel ist in Grad auf der horizontalen Ebene angegeben. Im aktuell erwarteten Code sind die Sensoren gleichmäßig beabstandet. Die Rückgabe von 0 Grad bedeutet, dass sich das Ziel in der Mittelposition des Arrays befindet.

Einige Filteralgorithmen werden in der Bibliothek angewendet:

  • Geräuschreduzierung:

    • Kurze (in Bezug auf die Probenanzahl) Messwerte werden als Rauschen betrachtet und entfernt.
    • Messwerte, die weit vom Mittelwert entfernt sind, werden entfernt.
  • Berechnung des Gewichtswinkels (siehe Abbildung oben)

    • Es wird angenommen, dass das Zielobjekt eine ebene Fläche ist
    • Haben mehrere Sensoren das Objekt gleichzeitig erkannt, wird für jeden Sensor ein Gewicht berechnet.
    • Das Gewicht jedes Sensors ist umgekehrt proportional zu seiner Entfernung.
    • Der Ergebniswinkel wird aus dem gewichteten Winkel jedes Sensors berechnet.
  • Primäre Zielauswahl:

    • Wenn mehr als eine Gruppe von Messwerten vorhanden ist, bleibt die breiteste Gruppe (mit mehr Sensormesswerten) übrig.
    • Wenn Sie beispielsweise zwei Hände vor das Sensor-Array legen, bleibt die von mehreren Sensoren erkannte Hand übrig.
  • Nächste Zielauswahl:

    • Wenn mehr als eine erkannte Gruppe mit derselben Breite vorhanden ist, bleibt die Gruppe mit der nächsten Entfernung bestehen.
    • Wenn Sie beispielsweise zwei Hände vor das Sensor-Array halten und zwei erkannte Gruppen dieselbe Sensoranzahl haben, bleibt die Gruppe, die näher am Sensor liegt.

Ausgangsabstand und -winkel werden durch Tiefpassfilter geglättet

Im Raw_Data_Serial_Output werden die rohen Distanzmesswerte in Distanz- und Winkelwerte umgewandelt. Nachdem Sie die Skizze hochgeladen haben, können Sie das serielle Fenster öffnen, um das Ergebnis ähnlich wie folgt zu sehen:

Kein Objekt erkannt. Kein Objekt erkannt. Kein Objekt erkannt. Abstand = 0056 Winkel = 017 Abstand = 0066 Winkel = 014 Abstand = 0077 Winkel = 011 Abstand = 0083 Winkel = 010 Abstand = 0081 Winkel = 004 Abstand = 0082 Winkel = 000 Abstand = 0092 Winkel = 002 Abstand = 0097 Winkel = 001 Abstand = 0096 Winkel = 001 Abstand = 0099 Winkel = 000 Abstand = 0101 Winkel = -002 Abstand = 0092 Winkel = -004 Abstand = 0095 Winkel = -007 Abstand = 0101 Winkel = -008 Abstand = 0112 Winkel = -014 Abstand = 0118 Winkel = -017 Abstand = 0122 Winkel = -019 Abstand = 0125 Winkel = -019 Abstand = 0126 Winkel = -020 Abstand = 0125 Winkel = -022 Abstand = 0124 Winkel = -024 Abstand = 0133 Winkel = -027 Abstand = 0138 Winkel = - 031 Abstand = 0140 Winkel = -033 Abstand = 0136 Winkel = -033 Abstand = 0125 Winkel = -037 Abstand = 0120 Winkel = -038 Abstand = 0141 Winkel = -039 Kein Objekt erkannt. Kein Objekt erkannt. Kein Objekt erkannt.

Jetzt haben Sie also ein RADAR (LIDAR):

  • Kleiner als Ultraschallsensormodule
  • Keine beweglichen Teile
  • Scannt mit 40 Hz.
  • Form eines Gürtels, kann auf einem runden Rahmen montiert werden
  • Verwenden Sie nur drei Steuerkabel plus Strom und Masse.
  • Hat einen Bereich von 30 Millimeter bis etwa 1000 Millimeter.

In den folgenden Schritten zeigen wir Ihnen einige coole Demonstrationen!

Schritt 8: Lasertracer (Demonstration)

Image
Image
Lasertracer (Demonstration)
Lasertracer (Demonstration)

Dies ist ein Beispiel für die Verwendung des stationären Radars, das wir aus den vorherigen Schritten erstellt haben. Dieser Schritt wird nicht im Detail beschrieben, da dies ein Demonstrator des Radars ist. Im Allgemeinen benötigen Sie diese zusätzlichen Elemente, um dieses Demonstrationsprojekt zu erstellen:

  • Zwei Servos
  • Ein Laser-Stift-Emittierkopf
  • Ein MOSFET- oder NPN-Transistor zur Steuerung des Laserkopfausgangs
  • Eine Stromquelle für die Servos. Es sollte vom Mikrocontroller getrennt sein.

Der Code kann hier heruntergeladen werden.

Bitte sehen Sie sich das bereitgestellte Video an.

Schritt 9: Starren Poopeyes (Demonstration)

Image
Image

Demonstration der Verwendung von Radar zur Verfolgung von Objektstandort und -entfernung.

Empfohlen: