Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Ultraschall-VS-Infrarotsensor
- Schritt 2: Schema
- Schritt 3: Sensorcharakteristik
- Schritt 4: Serielle Kommunikation
- Schritt 5: Qt-Anwendung
- Schritt 6: Arduino-Quellcode
Video: Infrarot-Radar mit Arduino - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
In diesem kleinen Projekt möchte ich Ihnen zeigen, wie Sie mit Arduino ein einfaches Radar zu Hause erstellen können. Es gibt viele ähnliche Projekte im Internet, aber alle verwenden einen Ultraschallsensor, um die Entfernung zu messen. In diesem Projekt verwende ich einen Infrarotsensor zur Entfernungsmessung.
Mein Ziel ist es, damit ein sehr einfaches und günstiges LIDAR-System zu erstellen und ein Mapping-Gerät zu implementieren.
Lieferungen
- Arduino (ich habe einen Maple Mini verwendet)
- Sharp Distanzsensor (ich habe Sharp GP2Y0A02YK0F verwendet)
- Mikro-Servo (9g)
- Steckbrett, Drähte
- Optional: 4,7k Widerstand, 100nF Kondensator
Schritt 1: Ultraschall-VS-Infrarotsensor
Der Hauptunterschied zwischen Ultraschall- und Infrarot-Distanzsensoren besteht darin, dass der Ultraschallsensor die Distanz in einem größeren Bereich misst. Daher ist es nicht in der Lage, die Position eines Hindernisses genau zu lokalisieren. Dies bedeutet, dass es die Entfernung des nächsten Objekts misst, das sich innerhalb eines Winkelbereichs von ~ +-30° befindet.
Das heißt natürlich nicht, dass der Sharp-Sensor besser ist. Manchmal kann diese Eigenschaft sehr nützlich sein (z. B. von Drohnen verwendet, um die Höhe vom Boden zu messen). Die richtige Wahl hängt ganz von den Anforderungen Ihres Projekts ab.
Schritt 2: Schema
Es ist sehr einfach, die Verbindung zwischen den Teilen herzustellen. Wählen Sie einen PWM-Ausgang und einen analogen Eingang auf Ihrem Arduino-Board und verbinden Sie die Servo- und Sharp-Abstandssensoren mit diesen Pins. Dazu habe ich folgende Pins verwendet:
- PA0: Analogeingang für Sharp Distanzsensor
- PA9: PWM-Ausgang für Servo
Manchmal kann der Sharp IR-Sensor eine verrauschte Ausgabe haben, daher müssen Sie einen einfachen Tiefpassfilter darauf setzen. Ich habe einen 4,7k-Widerstand und einen 100nF-Kondensator verwendet, um das Rauschen am analogen Pin zu reduzieren. Außerdem habe ich den Messwert auch im Code gefiltert, indem ich ihn mehrmals gelesen und den Durchschnitt berechnet habe.
Schritt 3: Sensorcharakteristik
Leider hat der verwendete Infrarot-Distanzsensor eine nichtlineare Kennlinie. Das bedeutet, dass es nicht ausreicht, den gemessenen ADC-Wert mit einem konstanten Wert zu multiplizieren und einen weiteren konstanten Wert hinzuzufügen, um den Abstand zu erhalten.
Obwohl das Datenblatt des Sensors die Kennlinie liefert, ziehe ich es vor, diese im spezifischen Projekt selbst zu messen (es könnte von der verwendeten Spannung abhängen). Dazu habe ich alle 10 cm Paare aus dem gemessenen ADC-Wert und der Entfernung gebildet. (Mein Sensor konnte ab 12 cm den richtigen Abstand messen).
Ich habe diese Paare im Code verwendet, um mit Linearer Interpolation den richtigen Abstand zu erhalten.
Am Ende des Dokuments finden Sie einen einfachen Arduino-Code, um den ADC-Wert während der Kennlinienmessung zu messen.
Schritt 4: Serielle Kommunikation
Die gemessenen Winkel-Abstandswerte habe ich über eine serielle Kommunikation an den PC gesendet. Da ich mehrere Bytes und verschiedene Arten von Nachrichten senden muss, habe ich ein einfaches Kommunikationsprotokoll entworfen.
Dieses Protokoll ermöglicht es, verschiedene Nachrichtentypen auf generische Weise zu definieren. In diesem Projekt habe ich 2 Nachrichtentypen verwendet:
- Parameter: Wird verwendet, um Parameter an die PC-Anwendung zu senden, die auf Arduino definiert sind, wie die maximale Entfernung und die Anzahl der Hindernisse in einer Runde.
- Hindernis: Wird verwendet, um ein erkanntes Hindernis zu senden. Er wird durch den Winkel des Servos und den gemessenen Abstand identifiziert. Die x-y-Position wird per PC-Anwendung berechnet.
Schritt 5: Qt-Anwendung
Um mit Arduino zu kommunizieren und die gemessenen Punkte wie ein Radar zu zeichnen, habe ich eine PC-Anwendung in Qt (C++) erstellt. Es empfängt einige Parameter (definiert auf Arduino) und die gemessenen Distanzpunkte.
Sie können die Anwendung und ihren Quellcode auch herunterladen.
Schritt 6: Arduino-Quellcode
Sie können einige Parameter oben im Code mit Makros anpassen.
Beachten Sie, dass Sie, wenn Sie die Charakteristik des Sharp-Distanzsensors ändern, die Werte des Arrays distAdcMap ändern müssen!
- InfraRadar.c: Radarcode. Kopieren Sie es und fügen Sie es in Ihr Arduino-Projekt ein.
- InfraRadarMeasurement.c: Code zur Kennlinienmessung. Kopieren Sie es und fügen Sie es in Ihr Arduino-Projekt ein. Verwenden Sie die serielle Konsole, um die ADC-Werte zu überprüfen.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Wie erstelle ich ein Infrarot-Thermometer?: 9 Schritte
Wie erstelle ich ein Infrarot-Thermometer?: Das Infrarot-Thermometer kann die Oberflächentemperatur eines Objekts messen. Sein Vorteil ist die berührungslose Temperaturmessung, mit der die Temperatur eines weit verbreiteten entfernten Objekts bequem und genau gemessen werden kann.Hier stellen wir
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern)
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: Hallo, und willkommen zu meinem ersten instructable! :) In diesem instructables möchte ich eine fantastische Bibliothek für die Schnittstelle der Tastatur mit Arduino teilen - 'Password Library' einschließlich 'Keypad Library'. Diese Bibliothek enthält die besten Funktionen, die wir wi
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Erfahren Sie, wie Sie mit PROCESSING eine Echtzeitschnittstelle in ARDUINO erstellen !!!!): 5 Schritte (mit Bildern)
SCARA-Roboter: Lernen über Vorwärts- und inverse Kinematik !!! (Plot Twist Learn How to Make a Real Time Interface in ARDUINO Using PROCESSING !!!!): Ein SCARA-Roboter ist eine sehr beliebte Maschine in der Industriewelt. Der Name steht sowohl für Selective Compliant Assembly Robot Arm als auch für Selective Compliant Articulated Robot Arm. Es ist im Grunde ein Roboter mit drei Freiheitsgraden, da er die ersten beiden Displ
Wir stellen vor: 'Deodorino' - das Infrarot-gesteuerte Arduino in einem leeren Deodorant-Stick. Klicken Sie auf das 1. Foto: 7 Schritte
Wir stellen vor: 'Deodorino' - das Infrarot-gesteuerte Arduino in einem leeren Deodorant-Stick. Klicken Sie auf das 1. Foto: Jetzt zum Detail