Tiefe Integration des HLK-LD2450: Millimeterwellen-Radarsteuerung über ESPHome und Home Assistant
Obwohl das HLK-LD2450 Millimeterwellen-Radar erschwinglich ist, handelt es sich um einen leistungsstarken Präsenzsensor, der nicht nur Bewegungen, sondern auch die präzisen Koordinaten, die Geschwindigkeit und den Winkel von bis zu drei Zielen gleichzeitig erfassen kann. Sein volles Potenzial bleibt jedoch aufgrund der Einschränkungen von Standardlösungen oft ungenutzt. Dieser Artikel beschreibt einen Ansatz zur vollständigen Integration des LD2450 in ein Smart-Home-Ökosystem mittels ESPHome und Home Assistant, der eine tiefgehende Kontrolle über alle Hardware-Parameter des Radars über sein Binärprotokoll ermöglicht und dabei jegliche Zwischenschichten umgeht.
Fähigkeiten und Einschränkungen des HLK-LD2450 in Standardszenarien
Der LD2450-Sensor arbeitet bei 24 GHz und bietet einen Erfassungsbereich von 0,5 bis 8 Metern sowie ein weites horizontales Sichtfeld von ±60°. Die Kommunikation erfolgt über UART mit 256000 Baud unter Verwendung eines Binärprotokolls, was ihn von Geräten unterscheidet, die über AT-Befehle gesteuert werden. Ein wesentliches Hardware-Merkmal sind seine drei konfigurierbaren Zonen, die als Rechtecke in Millimetern definiert werden können. Das Radar kann Ziele autonom filtern und liefert Daten nur für jene, die sich innerhalb dieser Zonen befinden.
Die größte Herausforderung für Benutzer, die mit dem LD2450 „out of the box“ arbeiten, ist der eingeschränkte Zugriff auf seine erweiterten Funktionen. Die meisten Standardlösungen konzentrieren sich ausschließlich auf das Auslesen des Datenstroms und ignorieren dynamische Konfigurationsmöglichkeiten. Hardware-Zonen werden entweder unberührt gelassen oder einmalig mit dem spezialisierten HLK-LD2450_TOOL konfiguriert, das oft nur für Windows verfügbar ist. Entscheidende Parameter wie Empfindlichkeit, Energieschwelle, Betriebsmodus (Normal, Hohe Empfindlichkeit, Geringer Stromverbrauch, Hohe Präzision) und Zielhaltezeit sind in den Registern des Geräts gespeichert, sind aber typischerweise für die Änderung durch Hausautomationssysteme unzugänglich. Dies reduziert die Flexibilität des Sensors in komplexen Szenarien, die adaptive Reaktionen auf sich ändernde Umgebungen erfordern, erheblich.
Ziele der tiefen Integration:
Um das volle Potenzial des LD2450 auszuschöpfen, wurden die folgenden Schlüsselziele formuliert, die mit Standardmethoden nicht erreicht werden können:
- Dynamisches Zonenmanagement: Die Möglichkeit, die Koordinaten und Abmessungen von Hardware-Zonen direkt aus Home Assistant zu ändern. Dies ermöglicht die Anpassung des Erfassungsbereichs für verschiedene Szenarien, wie z.B. den Nachtmodus oder bei Änderungen der Möbelanordnung.
- Fein abgestimmte Empfindlichkeitseinstellung: Regulierung der Radarempfindlichkeit, Energieschwelle, Zielhaltezeit und des Geschwindigkeitsfilters, um Fehlalarme zu minimieren und die Erkennung unter spezifischen Bedingungen zu optimieren.
- Umschaltung des Betriebsmodus: Wechseln zwischen den Modi Normal, Hohe Empfindlichkeit, Geringer Stromverbrauch und Hohe Präzision, um sich an den Stromverbrauch oder die Genauigkeitsanforderungen anzupassen.
- Steuerung der Aktualisierungsfrequenz: Anpassen der Datenaktualisierungsrate, um ein Gleichgewicht zwischen Reaktionsfähigkeit und Systemlast zu finden.
- Konfigurationspersistenz: Die Möglichkeit, geänderte Einstellungen in den internen Speicher des Radars zu schreiben, um sie nach einem Stromausfall beizubehalten.
- Multi-Ziel-Überwachung: Erhalt von Echtzeitdaten für bis zu drei Ziele gleichzeitig, einschließlich ihrer Koordinaten, was für komplexe Anwesenheitserkennungsszenarien entscheidend ist.
Vorteile einer nativen ESPHome-Komponente und der Umstellung auf ESP-IDF
Um die genannten Funktionen zu realisieren, wurde eine native ld2450-Komponente für ESPHome entwickelt. Dieser Ansatz ermöglicht eine direkte Interaktion mit der UART des Sensors, das Senden von Binärbefehlen und die Verarbeitung von Antworten ohne Zwischenprotokolle oder Abstraktionen. Der direkte Registerzugriff bietet vollständige Kontrolle über das Gerät und verwandelt es von einer „Black Box“ in einen vollständig verwaltbaren Sensor.
Ein entscheidender Aspekt für den stabilen Betrieb bei hohen UART-Geschwindigkeiten (256000 Baud) war die Migration vom Arduino-Framework zu ESP-IDF. Obwohl das Arduino-Framework für schnelles Prototyping praktisch ist, zeigt es oft Instabilität bei der Arbeit mit UART bei solchen Geschwindigkeiten, was zu Datenverlust oder Kommunikationsfehlern führen kann. Der Übergang zu ESP-IDF brachte folgende Vorteile:
- Verbesserte UART-Stabilität: ESP-IDF gewährleistet einen zuverlässigeren und vorhersehbareren Peripheriebetrieb, was für die Hochgeschwindigkeits-Datenübertragung vom Radar entscheidend ist.
- Ressourcenoptimierung: Auf ESP-IDF basierende Firmware belegt weniger Flash-Speicher (ca. 17 % weniger) und verbraucht weniger RAM. Dies gibt ESP32-Ressourcen für andere Aufgaben frei und verbessert die Gesamtleistung des Systems.
- Zukunftssicherheit: ESPHome stellt seine Komponenten aktiv standardmäßig auf ESP-IDF um, was dies zu einer strategisch sinnvollen Wahl macht und die Kompatibilität mit zukünftigen Plattform-Updates gewährleistet.
Detaillierte Analyse des Binärprotokolls und des Registermanagements
Die Interaktion mit dem HLK-LD2450 erfolgt durch das Senden spezifischer Binärbefehle. Jeder Befehl hat eine streng definierte Struktur:
Header: FD FC FB FA
Length: 2 bytes (little-endian)
Command: 2 bytes
Data: N bytes
Footer: 04 03 02 01
Beispiele für Befehle zur Konfiguration wichtiger Parameter:
- Einstellung der Empfindlichkeit (Befehl 0x64): Dieser Parameter ermöglicht die Anpassung der Radarreaktion auf Objekterkennung über acht verschiedene Bereichssegmente. Eine flexible Empfindlichkeitseinstellung minimiert Fehlalarme und optimiert die Erkennung basierend auf der Umgebung.
```c
uint8_t cmd_sensitivity[] = {
0xFD, 0xFC, 0xFB, 0xFA,
0x0A, 0x00,
0x64, 0x00,
sens, sens, sens, sens, sens, sens, sens, sens, // 8 sensitivity values
0x04, 0x03, 0x02, 0x01
};
```
- Konfiguration der Energieschwelle (Befehl 0x60): Die Energieschwelle filtert schwache Reflexionen heraus, die durch geringfügige Interferenzen oder sehr kleine Objekte verursacht werden könnten. Eine Erhöhung dieser Schwelle reduziert die Wahrscheinlichkeit von Fehlalarmen.
```c
uint8_t cmd_energy[] = {
0xFD, 0xFC, 0xFB, 0xFA,
0x04, 0x00,
0x60, 0x00,
(uint8_t)(energy & 0xFF),
(uint8_t)((energy >> 8) & 0xFF),
0x04, 0x03, 0x02, 0x01
};
```
Ähnlich werden andere kritische Parameter über das Binärprotokoll konfiguriert:
- Zielhaltezeit (Befehl 0x61): Bestimmt, wie lange das Radar die Anwesenheit eines Ziels meldet, nachdem es den Erfassungsbereich verlassen hat.
- Geschwindigkeitsfilter (Befehl 0x62): Ermöglicht das Ignorieren von Objekten, die sich unterhalb eines bestimmten Schwellenwerts bewegen, nützlich zum Herausfiltern langsamer, irrelevanter Bewegungen.
- Betriebsmodus (Befehl 0x65): Umschalten zwischen den Modi Normal, Hohe Empfindlichkeit, Geringer Stromverbrauch und Hohe Präzision zur Optimierung basierend auf spezifischen Aufgaben.
- Aktualisierungsfrequenz (Befehl 0x66): Legt die Frequenz fest, mit der das Radar Zieldaten überträgt.
Alle diese Einstellungen sind in Home Assistant integriert und können über die Benutzeroberfläche geändert werden. Nachdem Änderungen vorgenommen wurden, drücken Sie einfach die Schaltfläche „Konfiguration in Radar schreiben“, um die neuen Parameter im EEPROM des Sensors zu speichern und sicherzustellen, dass sie auch nach einem Neustart erhalten bleiben.
Erweiterte Hardware-Zonenkonfiguration und Multi-Ziel-Verfolgung
Der LD2450 bietet die Möglichkeit, bis zu drei Hardware-Erfassungszonen zu definieren. Jede Zone ist ein Rechteck, das durch Koordinaten (X1, Y1, X2, Y2) in Millimetern relativ zum Sensor sowie eine Anwesenheits-Timeout-Zeit definiert wird. Das Radar verarbeitet Daten auf Hardware-Ebene und filtert Ziele außerhalb der definierten Zonen heraus, was die Mikrocontroller-Last reduziert und die Erkennungsgenauigkeit erhöht.
Beispiel für eine kaskadierende Zonenkonfiguration nach Tiefe:
- Zone 1 (Nah): Deckt einen Bereich von 2 m × 0,75 m in einer Tiefe von 250–1000 mm ab. Ideal zur Erkennung von Objekten in unmittelbarer Nähe.
- Zone 2 (Mitte): Erweitert die Abdeckung auf 4 m × 2 m in einer Tiefe von 1000–3000 mm. Wird zur Überwachung größerer Bereiche verwendet.
- Zone 3 (Fern): Nimmt 6 m × 3 m in einer Tiefe von 3000–6000 mm ein. Ermöglicht die Überwachung entfernter Bereiche.
Zonenkoordinaten und Timeouts sind über Home Assistant als number-Entitäten vollständig konfigurierbar. Schaltflächen sind vorhanden, um Standardzonen anzuwenden und zu speichern, gefolgt von einem Radar-Neustart.
Standardmäßig kann der LD2450 Daten nur für ein einzelnes Ziel ausgeben. Um mehrere Objekte zu verfolgen, muss der Multi-Ziel-Modus mit einem speziellen Befehl aktiviert werden. Einmal aktiviert, beginnt das Radar, Informationen für bis zu drei separate Ziele zu übertragen. Es ist wichtig zu beachten, dass im Multi-Ziel-Modus die Datenaktualisierungsrate auf 10 Hz begrenzt ist und das minimale Sensorabfrageintervall 100 ms beträgt. Die ESPHome-Konfiguration enthält Prüfungen, um ein Überschreiten dieser Grenzwerte zu verhindern, wenn der Multi-Ziel-Modus aktiv ist.
Für jedes erkannte Ziel werden folgende Daten bereitgestellt:
- X, Y: Zielkoordinaten in Millimetern.
- Geschwindigkeit: Bewegungsgeschwindigkeit des Ziels.
- Winkel: Winkel zum Ziel.
- Auflösung: Erkennungsauflösung.
Alle diese Parameter werden als einzelne Sensoren an Home Assistant übertragen, was eine detaillierte Analyse der Objektposition und -bewegung im Raum ermöglicht.
Visualisierung und praktische Anwendung in Home Assistant
Die Integration mit Home Assistant geht über bloße Einstellungen hinaus. Für eine klare Datenvisualisierung wird eine Plotly-Karte (verfügbar über HACS) verwendet, die es ermöglicht, erkannte Ziele als Punkte und konfigurierte Zonen als halbtransparente Rechtecke darzustellen. Der Erfassungsbereich des Radars wird mit einer gestrichelten Linie angezeigt, was einen vollständigen Überblick über den aktuellen Status des Sensors bietet. Visualisierungsaktualisierungen erfolgen alle paar Sekunden und sind vom Benutzer konfigurierbar.
Liste der konfigurierbaren Parameter aus Home Assistant:
- Radarempfindlichkeit: Bereich 0–9.
- Energieschwelle: Bereich 100–10000.
- Zielhaltezeit: Bereich 0–60 Sekunden.
- Geschwindigkeitsfilter: Bereich 0–100 cm/s.
- Betriebsmodus: Normal, Hohe Empfindlichkeit, Geringer Stromverbrauch, Hohe Präzision.
- Aktualisierungsfrequenz: 1–20 Hz (bis zu 10 Hz im Multi-Ziel-Modus).
- Koordinaten und Timeouts für drei Zonen.
- Multi-Ziel- und Bluetooth-Modus Ein/Aus (falls zutreffend).
Zusätzlich sind Schaltflächen für eine bequeme Steuerung implementiert: „Standardzonen anwenden“, „Konfiguration in Radar schreiben“, „Radar neu starten“ und „Werksreset“. Dies bietet die volle Kontrolle über den Sensor durch die intuitive Benutzeroberfläche von Home Assistant.
Hilfswerkzeuge und physische Integration
Vor der endgültigen Installation und Verbindung mit einem ESP32 kann der HLK-LD2450 mit einem USB-UART-Adapter vorkonfiguriert oder getestet werden. Das offizielle HLK-LD2450_TOOL ist für Windows verfügbar. Für Linux/WSL-Benutzer wurden ein connect_radar.sh-Skript (unter Verwendung von usbipd) und ein Python-Skript radar.py entwickelt, um den Datenstrom zu überwachen und das Binärprotokoll zu analysieren. Es ist wichtig zu beachten, dass das Datenprotokoll AA FF-Marker verwendet und Koordinaten als vorzeichenbehaftete 16-Bit-Werte übertragen werden.
Für die physische Integration des Sensors in ein Projekt stehen vorgefertigte Lösungen zur Verfügung. Das Projekt-Repository stellt STL-Dateien für den 3D-Druck von Gehäusen und Abdeckungen bereit, was die Erstellung eines sauberen und funktionalen Geräts erheblich vereinfacht. Detaillierte Druck- und Montageempfehlungen finden Sie in der README-Datei im Ordner case_stl.
Wichtige Erkenntnisse
- Vollständige Kontrolle über HLK-LD2450: Die native ESPHome-Komponente ermöglicht die Kontrolle über alle Radarregister über das Binärprotokoll und schöpft so dessen volles Potenzial aus.
- Stabilität mit ESP-IDF: Der Übergang zu ESP-IDF ist entscheidend für einen zuverlässigen UART-Betrieb bei hohen Geschwindigkeiten (256000 Baud) und bietet eine überlegene Stabilität und Ressourcenoptimierung im Vergleich zum Arduino-Framework.
- Dynamische Hardware-Zonen: Die Möglichkeit, bis zu drei Hardware-Erfassungszonen direkt aus Home Assistant zu konfigurieren und zu ändern, erhöht die Flexibilität des Sensors in verschiedenen Szenarien erheblich.
- Multi-Ziel-Verfolgung: Das Radar kann bis zu drei Ziele gleichzeitig verfolgen und liefert deren präzise Koordinaten, Geschwindigkeit und Winkel, was neue Möglichkeiten für komplexe Anwesenheitserkennungssysteme eröffnet.
- Nahtlose Home Assistant Integration: Alle Sensorparameter und Daten sind über die Home Assistant Benutzeroberfläche zugänglich und konfigurierbar, einschließlich der Visualisierung von Zonen und Zielen mittels Plotly.
— Editorial Team
Noch keine Kommentare.