[Mikrocontroller]

Radar Geschwindigkeitsmesser mit Arduino oder ESP32

/radar-geschwindigkeitsmesser-mit-arduino-oder-esp32
Radar Geschwindigkeitsmesser mit Arduino oder ESP32

Der Bau eines eigenen Radarsystems zur Geschwindigkeitsmessung ist ein faszinierendes Projekt, das Einblicke in die Welt der Hochfrequenztechnik und des Doppler-Effekts bietet. In diesem Tutorial erklären wir Schritt für Schritt die Konstruktion eines Radars und Geschwindigkeitsmessers mithilfe eines 10,525 GHz Senders und eines Arduino- oder ESP32-Mikrocontrollers.


Grundlage: Der Doppler-Effekt

Der Doppler-Effekt, bei dem die Frequenz eines Signals durch die Bewegung einer Quelle oder eines Beobachters verändert wird, bildet die Grundlage für die Geschwindigkeitsmessung in diesem Projekt. Durch die Nutzung dieses Prinzips lässt sich die relative Geschwindigkeit eines bewegten Objekts präzise bestimmen.


Zielgruppe

Dieses Projekt richtet sich an Elektronik-Enthusiasten, Maker und Hobbyisten, die ihre Fähigkeiten erweitern und praktische Erfahrungen mit Radartechnologie sammeln möchten. Alle notwendigen Komponenten und Schritte werden detailliert beschrieben, sodass auch Anfänger erfolgreich ein eigenes Radar bauen können.


Interessante Erkenntnis

Eine beängstigende Erkenntnis ist, dass in der Theorie nahezu jedes moderne Handy oder jeder Router die grundlegende Technik besitzt, um als Radar bewegte Objekte in der Umgebung erfassen zu können.

Sowohl Mobiltelefone als auch Router senden und empfangen hochfrequente Signale, ähnlich wie ein Radarsystem. Diese Signale könnten theoretisch zur Messung der Doppler-Verschiebung genutzt werden, um die Geschwindigkeit bewegter Objekte zu bestimmen.

Moderne Smartphones verfügen zudem über leistungsfähige Prozessoren und Sensoren, die die notwendigen Berechnungen durchführen könnten. Mit entsprechender Software und Anpassungen ließen sich Funkmodule und Signalverarbeitungstechniken prinzipiell für Radarmessungen einsetzen.


Notwendige Hardware

  • CQRobot Mikrowellen-Bewegungssensor (10,525 GHz)
  • ESP32 oder Arduino Mikrocontroller
  • Breadboard
  • Jumper-Kabel

(Produkte siehe Sidebar)


Verkabelung

Verbinde den 10,525 GHz Sensor mit deinem Arduino oder ESP32.
Das Datenkabel wird an GPIO16 angeschlossen, da der bereitgestellte Code diesen Pin verwendet.
Wenn ein anderer Pin genutzt werden soll, muss der Code entsprechend angepasst werden.

Zusätzlich wird die Arduino IDE benötigt. Es kommen keine externen Bibliotheken zum Einsatz.


Code

```
const int sensorPin = 16; // GPIO-Pin, an dem der Sensor angeschlossen ist
const float frequency = 10.525e9; // Frequenz des Mikrowellen-Sensors in Hz
const float c = 3e8; // Lichtgeschwindigkeit in m/s
const int measureDuration = 100; // Messdauer in Millisekunden
const int numMeasurements = 10; // Anzahl der Messungen zur Mittelung

volatile unsigned long pulseCount = 0;

void IRAM_ATTR handlePulse() {
pulseCount++;
}

void setup() {
Serial.begin(115200); // Serielle Kommunikation mit 115200 Baudrate
pinMode(sensorPin, INPUT); // Sensor-Pin als Eingang festlegen
attachInterrupt(digitalPinToInterrupt(sensorPin), handlePulse, RISING);
}

void loop() {
float totalSpeed = 0.0;
unsigned long startTime = millis(); // Startzeit für die Schleife

for (int i = 0; i < numMeasurements; i++) {
unsigned long measurementStartTime = millis();
pulseCount = 0;

// 100 ms messen
delay(measureDuration);

unsigned long duration = millis() - measurementStartTime;
unsigned long pulses = pulseCount;

float pulseFrequency = (float)pulses / duration * 1000;  // Pulsfrequenz in Hz
float speed_m_s = pulseFrequency * c / (2 * frequency);  // Geschwindigkeit in m/s
float speed_km_h = speed_m_s * 3.6;  // Geschwindigkeit in km/h

totalSpeed += speed_km_h;

}

float averageSpeed = totalSpeed / numMeasurements;

Serial.print("Average Speed: ");
Serial.print(averageSpeed);
Serial.println(" km/h");

// Ausgabe jede Sekunde
unsigned long endTime = millis();
unsigned long loopDuration = endTime - startTime;
if (loopDuration < 1000) {
delay(1000 - loopDuration);
}
}
````


Code-Erklärung

  • sensorPin: GPIO-Pin, an dem der Sensor angeschlossen ist
  • frequency: Frequenz des Mikrowellen-Sensors (10,525 GHz)
  • c: Lichtgeschwindigkeit
  • measureDuration: Messdauer pro Messung (100 ms)
  • numMeasurements: Anzahl der Messungen zur Mittelwertbildung

Die Variable pulseCount zählt die empfangenen Pulse.
Die Interrupt-Funktion handlePulse() wird bei jedem steigenden Signal aufgerufen und erhöht den Zähler.

Im setup():

  • Initialisierung der seriellen Schnittstelle (115200 Baud)
  • Definition des Sensor-Pins als Eingang
  • Einrichtung eines Interrupts auf steigende Flanken

Im loop():

  • Durchführung von zehn Messungen à 100 ms
  • Berechnung der Pulsfrequenz
  • Umrechnung in Geschwindigkeit (m/s → km/h)
  • Ausgabe der gemittelten Geschwindigkeit
  • Zeitliche Synchronisierung auf eine Ausgabe pro Sekunde

Geschwindigkeit messen

Nach dem Hochladen des Skripts auf den Arduino oder ESP32:

  1. Mikrocontroller mit Strom versorgen
  2. Serielle Konsole in der Arduino IDE öffnen
  3. Baudrate auf 115200 einstellen

Das Radar misst automatisch die Geschwindigkeit von Objekten im Erfassungsbereich des Sensors.
Die durchschnittliche Geschwindigkeit wird jede Sekunde in der Konsole ausgegeben.
Bewege Objekte vor dem Sensor, um die Funktion zu testen.


Weitere Tipps

  • Viele 10,525 GHz Sensoren besitzen ein Potentiometer zur Einstellung der Empfindlichkeit
  • Eine Feinjustierung kann die Messgenauigkeit deutlich verbessern
  • Die Metallplatte auf einer Seite des Sensors dient als Abschirmung
  • Messungen sind nur auf der offenen Seite des Sensors möglich

Fazit

Falls etwas unklar ist, hinterlasse gerne einen Kommentar.
Geplant ist, das System zukünftig an Home Assistant anzubinden.

Anzeige

/comments0 Einträge

Kommentare

> NO_COMMENTS_FOUND

> INITIATE_COMMENT_PROTOCOL

MARKDOWN_SUPPORT: ENABLED
CHARS: 0