Erste Schritte mit einem modernen Radarsensor
über

Beginnen wir mit dem Radarsensor A121 von Acconeer, einem sehr leistungsstarken, aber nicht ganz einfach zu beherrschendes Bauteil. Neben grundlegenden Informationen geben wir zahlreiche Tipps für die praktische Anwendung.
Der Radarsensor A121
Sensoren sind faszinierend. Vor einiger Zeit, als ich an einem Projekt zur Entwicklung eines Briefkastenmelders arbeitete, stieß ich auf ein interessantes Video von Andreas Spiess, in dem unter anderem ein sehr leistungsfähiger Radarsensor vorgestellt wurde: der A121 des schwedischen Unternehmens Acconeer, erhältlich für etwa 12 €. Das machte mich sofort neugierig, und ich wollte ihn unbedingt ausprobieren. Das offizielle Entwicklungskit XE125 des Herstellers ist mit rund 120 € aber relativ teuer. Glücklicherweise bietet SparkFun ein eigenes Entwicklungsboard mit demselben Sensor für etwa 50 US-Dollar an. Dieses Entwicklungskit ist im deutschsprachigen Raum bei den Firmen BerryBase und Antratec erhältlich. Diese Variante ist günstiger und unterstützt gleichzeitig ein Unternehmen, das mit seinen Modulen und Dokumentationen hervorragende Arbeit leistet, um Elektronik für Anwender aller Erfahrungsstufen zugänglich zu machen. Dass SparkFun und Elektor Geschäftspartner sind, hat meine Entscheidung in keiner Weise beeinflusst – ich freue mich sogar, das Modul aus eigener Tasche bezahlt zu haben.
Radar-101
Das allgemeine Funktionsprinzip eines Radars besteht darin, ein Funksignal zu einem Ziel zu senden und das reflektierte Signal auszuwerten. Es gibt jedoch unterschiedliche Radartypen. Beim Continuous-Wave-Radar, wie etwa dem in Elektor vorgestellten HB100 oder dem ähnlichen CDM324, wird ein Signal konstanter Frequenz kontinuierlich gesendet und empfangen. Dies erlaubt über den Dopplereffekt die Messung der Zielgeschwindigkeit, jedoch nicht der Entfernung. Frequenzmodulierte Dauerstrichradare (FMCW) verbessern dieses Prinzip, indem die Frequenz des ausgesendeten Signals kontinuierlich über die Zeit verändert wird. Da die Welle eine Laufzeit zum Objekt und zurück benötigt, unterscheidet sich die Frequenz des empfangenen Signals zu jedem Zeitpunkt von der des gesendeten. Aus dieser Differenz kann die Entfernung zum Objekt berechnet werden.
Im Gegensatz dazu senden Pulsradare kurze Impulse mit einer festen Frequenz aus und empfangen zwischen den Pulsen reflektierte Echos. Die gemessene Zeit t zwischen Aussendung und Empfang des Echosignals lässt sich mit der Formel d = 1/2 × t × v in eine Entfernung d umrechnen, wobei v die Ausbreitungsgeschwindigkeit der Welle ist, abhängig vom Medium. Der Sensor A121 in Bild 1 ist ein solcher Pulsradar mit kohärenter Auswertung, was hier bedeutet, dass auch die Phasenlage des empfangenen Signals erfasst wird, was eine deutlich präzisere Distanzmessung erlaubt.

Hardware-Überblick
Der Sensor A121 arbeitet im 60-GHz-Band und bietet eine Vielzahl an Funktionen auf kleinstem Raum (5,2 × 5,5 × 0,8 Millimeter). Er ist vollständig integriert mit Baseband-Prozessor, HF-Frontend und Antenne in einem einzigen Gehäuse und liefert digitale Werte über eine SPI-Schnittstelle. Intern misst der A121 Zeitdifferenzen mit einer Auflösung im Pikosekunden-Bereich, was eine außergewöhnlich präzise Distanzauflösung im Bereich von 0,1 mm ermöglicht. Die maximale Reichweite beträgt etwa 20 m. Es handelt sich um ein äußerst komplexes Bauteil, dessen vollständige technische Erklärung sowohl sehr aufwendig wäre als auch den Rahmen dieses Artikels sprengen würde. Die Dokumentation des Herstellers ist jedoch sehr ausführlich und hochwertig, siehe Quellen und .
Acconeer empfiehlt den A121-Sensor für Anwendungen wie Distanzmessung, Annäherungs- oder Präsenzdetektion, Geschwindigkeitsmessung, Objektverfolgung oder Roboternavigation. Aufgrund seiner hohen Auflösung im Distanzmodus kann der A121 zudem zur Überwachung lebenswichtiger Vitalfunktionen wie Atmung und Herzfrequenz eingesetzt werden. Da der Sensor sowohl die Phase als auch die Amplitude des empfangenen Signals ausgibt, ist es bei entsprechender Datenverarbeitung auf einem angeschlossenen Mikrocontroller möglich, unterschiedliche Materialien zu erkennen und zu klassifizieren oder einfache Gesten zu interpretieren. Wie andere Radarsensoren ist auch dieser unempfindlich gegenüber Staub, wechselnden Lichtverhältnissen oder ähnlichen Umwelteinflüssen.
All das ist sehr vielversprechend, doch ist dieses Bauteil als einzelne Komponente nicht ganz einfach zu erkunden oder experimentell zu nutzen. Dafür gibt es zwei Hauptgründe: Erstens ist das winzige Gehäuse als 50-Ball-BGA ausgeführt, was das Löten deutlich erschwert. Zweitens erfordern viele der erweiterten Funktionen eine umfangreiche softwareseitige Datenverarbeitung, was für Einsteiger oder Erstnutzer einen erheblichen Aufwand bedeutet. Genau hier setzt Acconeer mit einer eleganten Lösung an.
Das XM125-Modul
Das Acconeer-Modul XM125 in Bild 2 erleichtert den Einstieg erheblich. Es handelt sich um eine kleine rechteckige Platine mit den Abmessungen 18,6 × 15 mm. Auf der Platine befinden sich neben dem Sensor A121 einen für den Betrieb erforderlichen 24-MHz-Quarz, einige Widerstände und Kondensatoren sowie einen Mikrocontroller des Typs STM32L431CBY6 von STMicroelectronics. Alle Bauteile befinden sich auf der Oberseite der Platine, sodass das Modul plan auf ein Land-Grid-Array-Feld Ihrer Prototypen-Platine gelötet werden kann – entweder mit Heißluft oder mit einem Lötkolben. Von den insgesamt 28 Pins mit einem Rastermaß von 1,27 mm, die für Otto Normalanwender deutlich zugänglicher sind als BGA, sind nur wenige für den Betrieb zwingend erforderlich. Es ist sogar möglich, das Modul zum Prototyping ohne eigene Platine direkt mit Drähten zu verbinden.
Das Modul ist kompakt genug, um es direkt in kommerzielle Produkte einzubauen. Es kann als eigenständige Einheit betrieben werden, wobei Anwendungen direkt auf Basis der Acconeer-Software realisiert werden. Alternativ kann ein externer Mikrocontroller eingebunden werden, der über ein registerbasiertes Befehlsprotokoll per serieller Schnittstelle oder I2C mit dem Modul kommuniziert.
Breakout-Board von SparkFun
Die Aufnahme eines Mikrocontrollers in das Modul war eine kluge Entscheidung, denn so kann Acconeer vorkompilierte Firmwaredateien anbieten, die sich direkt auf den Controller STM32L431 flashen lassen. Dies vereinfacht die Inbetriebnahme des Sensors erheblich. SparkFun geht noch einen Schritt weiter und bietet eine Platine an, die das XM125-Modul, einen USB-UART-Wandler des Typs CH340C, einen USB-C-Anschluss sowie die notwendigen Spannungsregler enthält (Bild 3). Zwei Qwiic-Anschlüsse ermöglichen zudem die einfache I2C-Verbindung mit anderen SparkFun-Modulen.
Dieses Breakout-Board ist ausschließlich dafür gedacht, die Verdrahtung zu vereinfachen; es enthält keinen zusätzlichen Mikrocontroller. SparkFun empfiehlt, die bereitgestellten Binärdateien unverändert auf dem STM32L431 zu nutzen und die eigene Anwendung auf einem externen Mikrocontroller zu entwickeln, zum Beispiel einem ESP32 auf einer separaten Platine, der über I2C mit dem XM125 kommuniziert. Für fortgeschrittene Anwender oder solche mit Erfahrung im Umgang mit STM32-Produkten besteht auch die Möglichkeit, vollständig auf einen externen Mikrocontroller zu verzichten und das gesamte Projekt direkt auf dem integrierten STM32L431 zu realisieren.
Software
Acconeer bietet eine Vielzahl an Softwarelösungen. Für das XM125-Modul steht ein Software-Entwicklungskit (SDK) zur Verfügung, das sowohl Quellcode als auch vorkompilierte Binärdateien umfasst, die direkt auf den integrierten Mikrocontroller STM32L431 übertragen werden können. Es sind auch zahlreiche Beispielanwendungen enthalten, darunter Distanzmessung, Geschwindigkeitsdetektion und Präsenzüberwachung. Wer plant, den Sensor A121 in einem vollständig individuellen Projekt ohne das XM125-Modul einzusetzen, findet bei Acconeer weitere SDK-Varianten, die unter anderem für Keil, ARM-GCC oder IAR geeignet sind. Diese decken verschiedene ARM-Cortex-Plattformen ab, darunter M7, M4, M33 und M0. Für jede dieser Varianten stellt Acconeer eine eigene PDF-Anleitung bereit.
Besondere Erwähnung verdient das ebenfalls von Acconeer veröffentlichte Exploration-Tool, das im GitHub zu finden ist. Es wurde vollständig in Python geschrieben und bietet eine grafische Benutzeroberfläche für Windows- und Linux-Systeme. Damit lässt sich der A121 komfortabel evaluieren, konfigurieren und live auf dem PC auslesen. Sehen wir uns das etwas genauer an.
Das Exploration-Tool von Acconeer
Wer noch nie den Python-Interpreter auf seinem Rechner installiert hat, sollte dies an dieser Stelle nachholen. Das Exploration Tool wird über den Paketmanager pip installiert. Einige Linux-Distributionen, beispielsweise Linux Mint, raten jedoch davon ab, pip im systemweiten Python zu verwenden, da dabei Konflikte mit systemrelevanten Paketen auftreten können. In solchen Fällen empfiehlt es sich, pip innerhalb einer virtuellen Umgebung auszuführen. Auch unter Windows kann dieses Vorgehen hilfreich sein, um die installierten Pakete projektspezifisch zu verwalten. Ich habe für diesen Zweck PyCharm verwendet, das sowohl unter Windows als auch unter Linux problemlos funktioniert.

Im Terminal – sei es das von PyCharm oder des Systems – installiert man das Exploration Tool mit dem Befehl python -m pip install --upgrade acconeer-exptool[app]. Nachdem alle benötigten Pakete installiert wurden, lässt sich die grafische Oberfläche mit dem Befehl python -m acconeer.exptool.app starten. Das Tool unterstützt übrigens auch die vorherige Sensorversion A111. Über das Panel auf der linken Seite wählt man die Variante für den Sensor A121. Anschließend öffnet sich die Hauptansicht (Bild 4).
Firmware-Download
Wie jede spezifische Anwendung – etwa Distanz-, Geschwindigkeits- oder Präsenzmessung – eine optimierte Firmware im Binärformat erfordert, benötigt auch das Exploration Tool eine eigene Firmware, den sogenannten Exploration Server. Zu Beginn erstellt man ein Benutzerkonto über und lädt anschließend die passende Firmware über herunter. Nach dem Herunterladen wird die ZIP-Datei entpackt.

Das Exploration Tool besteht aus vier Bereichen: Stream, Flash, Resource Calculator (RC) und Help, die sich über Schaltflächen auf der linken Seite erreichen lassen. Öffnen Sie zunächst den Flash-Seite, wie in Bild 5 dargestellt. Grundsätzlich ist es möglich, über den Tab Get Latest Binary die neueste Firmware-Version direkt herunterzuladen. Zum Zeitpunkt der Erstellung dieses Artikels scheint jedoch ein Fehler vorzuliegen: Die über das Tool heruntergeladene Firmware mit dem Namen acconeer_xc120_exploration_server_a121-v1_10_0.bin funktioniert nicht korrekt. Obwohl der Flash-Vorgang zunächst erfolgreich verläuft, schlägt der anschließende Verbindungsaufbau mit dem Modul fehl, wie in Bild 6 zu sehen. Zusätzlich führt der im Tool enthaltene Link zur Erstellung eines Entwicklerkontos auf eine fehlende Seite (404-Fehler). Verwenden Sie deshalb stattdessen den in angegebenen direkten Link.

Um den Firmware-Fehler zu umgehen, wählen Sie im Tool den Tab Browse und geben Sie die entsprechende Firmware-Datei manuell an, die Sie zuvor aus der ZIP-Datei entpackt haben. Wählen Sie anschließend als Verbindungstyp Serial, dann den passenden seriellen Anschluss – unter Windows lässt sich dieser im Geräte-Manager ermitteln, sobald das Modul angeschlossen ist – und schließlich als Ziel XM125. Klicken Sie nun auf Flash und folgen Sie den Anweisungen auf dem Bildschirm: Drücken Sie die Boot-Taste, halten Sie diese gedrückt und betätigen dann zusätzlich die Reset-Taste. Lassen Sie anschließend zuerst die Reset-Taste und danach die Boot-Taste los. Es empfiehlt sich, diese Abfolge nicht zu schnell durchzuführen; lassen Sie jeweils eine halbe Sekunde zwischen den einzelnen Schritten verstreichen. Der Flash-Vorgang sollte dann ohne Probleme abgeschlossen werden.
Erste Tests
Für den ersten Funktionstest klicken Sie auf den Button Advanced Settings, links neben Connect in der oberen Menüleiste, und tragen im Feld Baudrate den Wert 115200 ein. Schließen Sie die erweiterten Einstellungen und klicken Sie anschließend auf Connect. Glückwunsch – das Modul ist nun erfolgreich verbunden.
Sie können jetzt die verschiedenen Funktionen des Exploration Tools ausprobieren. Diese sind im linken Menübereich aufgelistet, zum Beispiel Sparse IQ, Distance Detector, Presence Detector oder Speed Detector. Jede dieser Anwendungen verwendet drei Bereiche des Displays, wie in Bild 7 dargestellt: Die Preset Configurations befinden sich im unteren Abschnitt des linken Panels (1), die detaillierten Parameter auf der rechten Seite (2), und die eigentlichen Messergebnisse werden in der Mitte angezeigt (3). Die jeweilige Anwendung wird über die Schaltfläche Start measurement gestartet. Probieren Sie die verschiedenen Demo-Funktionen aus! Die Seite Sparse IQ zeigt die Rohdaten des Sensors, also Amplitude und Phase der empfangenen Signale, als komplexe Zahlen an. Diese Angaben lassen sich nicht leicht „mit bloßem Auge“ interpretieren und zählen so nicht unbedingt zu den zugänglichsten. Die Anwendungen Presence Detector und Touchless Button liefern wesentlich verständlichere Resultate.

Schneller machen!
Nach einigen Tests fiel auf, dass die grafische Darstellung nicht besonders flüssig ist, sondern die Daten „stoßweise“ kommen. Während manche Anwendungen wie Touchless Button relativ gut funktionieren, gibt es bei anderen, etwa Sparse IQ oder Presence Detector, Pausen von bis zu fünf Sekunden zwischen den Datenblöcken und der Aktualisierung der Kurven. Das ist etwas frustrierend, insbesondere angesichts der hohen Geschwindigkeit des Sensors und der erheblichen Mühe, die Acconeer in die Softwareentwicklung gesteckt hat.
Es stellte sich jedoch heraus, dass weder Acconeer noch der Sensor verantwortlich für dieses Verhalten sind. Vielmehr handelt es sich um eine unglückliche Kombination, die SparkFun bisher nicht korrigiert hat. In diesem Fall wurde erneut der sehr verbreitete USB-zu-UART-Wandler CH340C von WCH eingesetzt, was für SparkFun naheliegend ist, da dieser Baustein bereits in mehreren ihrer Boards verwendet wird. Leider unterstützt der CH340C trotz seiner für den XM125 notwendigen RTS- und CTS-Pins kein vollständiges Hardware Flow Control. Die Datenblatt-Version 1D äußert sich hierzu recht vage mit dem Hinweis: „The USB to serial interface is only compatible with the application layer, not totally“. In der späteren Version 3B desselben Dokuments heißt es deutlicher: „For one-directional 1 Mbps and above, or bi-directional 500 kbps and above, we recommended to use CH343, and enable automatic hardware flow control.“
Das ist ärgerlich! Das XM125-Modul und das Exploration Tool sind auf Hardware Flow Control angewiesen, um den Datendurchsatz zu optimieren. Beim offiziellen Entwicklungsboard XE125 von Acconeer wird stattdessen ein CP2105 von Silicon Labs verwendet. Vielleicht bringt SparkFun eines Tages eine überarbeitete Version mit geeigneterem USB-UART-Wandler heraus. Vorerst weist SparkFun im eigenen Hookup Guide jedoch ausdrücklich darauf hin: „Note: The Acconeer Exploration Tool may run slower than expected when using the SparkFun XM125 Pulsed Coherent Radar Sensor.“ Auch die FAQ-Seite von Acconeer bestätigt dieses Verhalten.
Ich hatte zum Zeitpunkt der Tests kein CP2105-basiertes Modul zur Verfügung. Das „CP2105 Friend“ von Adafruit wäre ideal gewesen, war aber leider nicht auf Lager. Die Alternativen CP2102 und CP2104 sind technisch sehr ähnlich und durchaus einen Versuch wert. Sie kommen in vielen Produkten zum Einsatz und ich hatte auch mehrere Geräte zur Hand, die einen davon enthielten, allerdings sind die benötigten RTS- und CTS-Pins nicht immer nach außen geführt. Nach längerer Suche fand ich schließlich einen USB-Seriell-Adapter mit CP2102, bei dem die relevanten Pins gut zugänglich waren (Bild 8). Beim Kauf solcher Adapter lohnt es sich also, die verfügbaren Signale anhand von Produktfotos oder technischer Dokumentation genau zu prüfen.

Da man offiziell keinen anderen USB-UART-Wandler verwenden soll, sind die primären Signale TX, RX, CTS und RTS nicht einfach erreichbar, sondern sie werden direkt vom XM125 zum CH340C geführt. Die seitlich am Modul zugänglichen Pins DEBUG_TX und DEBUG_RX gehören zur zweiten seriellen Schnittstelle des XM125, die ausschließlich für Debugging-Zwecke vorgesehen ist. Es war daher eine gewisse Anpassung nötig (Bild 9).

Auf der Rückseite des Moduls habe ich ein kleines Stück Lochrasterplatine angebracht und eine Stiftleiste mithilfe dünner Drahtverbindungen mit den entsprechenden Pins des CH340C verbunden. Wer dies nachbauen möchte: TX, RX, CTS und RTS entsprechen beim CH340C den Pins 2, 3, 9 und 14. Alternativ kann auch direkt an den Lötpads des XM125 auf der Vorderseite gearbeitet werden. Um den CH340C zu deaktivieren, muss dessen VCC-Pin (Pin 16) von der Stromversorgung getrennt werden, entweder durch das Durchtrennen der Leiterbahn in der Nähe des oder durch vorsichtiges Hochbiegen des Pins und Entfernen des Lötzinns. Ich habe zusätzlich einen Jumper eingefügt, um diese Änderung bei Bedarf reversibel zu gestalten. Außerdem wurden zwei zusätzliche Leitungen für +5 V und Masse zur Stiftleiste geführt, sodass das ursprüngliche USB-C-Kabel nicht mehr benötigt wurde.
Um den CP210x anstelle des CH340 zu verwenden, genügt es, im Exploration Tool den passenden COM-Port auszuwählen. In meinem Fall funktionierte der CP2102 einwandfrei und die Diagramme wurden nun kontinuierlich und flüssig aktualisiert, mit 2...20 Bildwiederholungen pro Sekunde, je nach Anwendung. Eine spürbare Verbesserung! Ein weiteres getestetes Modul auf Basis des FT232RL von FTDI funktionierte ebenfalls, war jedoch etwas langsamer.
Gesucht: Ein Problem will gelöst werden
Der Presence Detector zeigt sehr anschaulich, wie empfindlich der Radarsensor auf winzige Bewegungen reagiert – ein klarer Vorteil gegenüber anderen Sensortypen. Ich habe mich testweise einige Meter vom Sensor entfernt völlig regungslos hingesetzt. Unabhängig davon, wie still ich blieb, erkannte der A121 dennoch kleinste, unwillkürliche Bewegungen, und das Exploration Tool zeigte durchgehend meine Anwesenheit an. Eine durchaus beruhigende Bestätigung, selbst im Fall einer existenziellen Krise. Im Gegensatz dazu ignorierte ein passiver Infrarotsensor (PIR) im gleichen Abstand meine Anwesenheit nach wenigen Sekunden, sofern ich mich nicht bewegte.
Interessantere Anwendungen wären beispielsweise die Fernüberwachung von Maschinenvibrationen oder das nicht-invasive Erfassen der menschlichen Atmung. Auch Letzteres habe ich ausprobiert, siehe Bild 10. Allerdings scheint dabei etwas nicht zu stimmen: Während des Tests war ich ruhig und atmete deutlich langsamer als die aufgezeichnete Kurve vermuten lässt. Zudem stimmt die Anzeige der Atemfrequenz in bpm (breaths per minute) nicht mit dem Kurvenverlauf überein. Ich werde dem nachgehen und, falls ich die Ursache finde, darüber in Projekt 2.0 berichten.
Einen konkreten Einsatzzweck für den Sensor im häuslichen Umfeld habe ich bislang noch nicht gefunden, aber sich eingehend damit zu beschäftigen, ist trotzdem sehr befriedigend. Wenn Sie eigene Ideen oder Vorschläge haben, schreiben Sie mir bitte eine E-Mail.

Weiterführende Hinweise
Ich empfehle ausdrücklich, mit den verschiedenen Parametern und Funktionen des Exploration Tools zu experimentieren. Werfen Sie auch einen Blick auf das Panel Resource Calculator, das auf Grundlage der aktuellen Einstellungen eine Schätzung (keine Messung) des Energieeinsatzes liefert. Der Hookup Guide von SparkFun enthält zudem eine Arduino-Bibliothek, mit der Sie den XM125 über I2C an einen Mikrocontroller Ihrer Wahl anbinden und im Presence- oder Distance-Modus verwenden können. Ich empfehle darüber hinaus die gründliche Lektüre der Acconeer-Dokumentation, um das Systemverhalten besser zu verstehen. Für besonders ambitionierte Leser lohnt sich ein Blick in die veröffentlichten Quellcodedateien. Wer eigene Anwendungen entwickeln möchte, kann außerdem die STM32CubeIDE installieren und basierend auf dem Acconeer SDK gezielt für den STM32L431 programmieren.
Anmerkung der Redaktion: Dieser Artikel (250167-02) über den Radarsensor erscheint in Elektor Juli/August 2025.
Sie haben Fragen oder Kommentare?
Haben Sie technische Fragen oder Kommentare zu diesem Artikel? Schreiben Sie bitte dem Autor direkt an jean-francois.simon@elektor.com oder kontaktieren Sie die Redaktion unter redaktion@elektor.de.
Diskussion (1 Kommentar)