Premiers pas avec un capteur radar moderne: Un capteur précis qui ne passe pas inaperçu
sur

Découvrons le capteur radar A121 d'Acconeer, un capteur très puissant que complexe à maîtriser. Outre les notions de base, cet article propose quelques conseils pratiques pour bien débuter avec ce composant étonnant.
Le capteur radar A121
Les capteurs sont fascinants. Il y a quelques temps, en faisant des recherches pour construire un indicateur de courrier pour boîte aux lettres, je suis tombé sur une vidéo intéressante d’Andreas Spiess qui, entre autres choses, mentionnait un capteur radar très puissant, le A121 de la société suédoise Acconeer, coûtant environ 12 €. Cela m’a fortement intrigué et m’a donné bien envie de l’essayer. Le kit de développement officiel du fabricant, le XE125, est assez cher (environ 120 €), mais heureusement, SparkFun propose également une carte de développement basée sur le même capteur pour 50 $. C’est déjà mieux, et ce prix aide à soutenir une entreprise qui fait un excellent travail pour rendre l’électronique accessible aux électroniciens de tous niveaux grâce à ses modules et sa documentation. Le fait que SparkFun et Elektor soient partenaires commerciaux n’a pas influencé mon choix, et je suis heureux d’avoir payé ce module de ma poche. Ceci dit, entrons dans le vif du sujet.
Radar 101
Le principe général d’un radar est d’émettre un signal radio vers une cible et d’analyser le signal réfléchi, mais il en existe différents types. Dans le cas des radars à onde continue (CW), comme le HB100 présenté précédemment dans Elektor <span> ou le CDM324 qui est assez similaire, un signal à fréquence constante est émis et reçu simultanément, ce qui permet de mesurer la vitesse de la cible grâce à l’effet Doppler, mais pas sa distance. Le radar à onde continue modulée en fréquence (FMCW) améliore cela en faisant varier continuellement la fréquence du signal émis. Comme l’onde met du temps à parcourir le trajet aller-retour jusqu’à la cible, à tout instant donné, le signal reçu a une fréquence différente de celle du signal émis. En mesurant la différence entre ces fréquences, il est possible de calculer la distance par rapport à l’objet.
De leur côté, les radars à impulsions transmettent de courtes salves de signaux à une fréquence unique et écoutent les échos entre les impulsions. La mesure du temps t écoulé entre l’émission et la réception du signal réfléchi donne la distance mesurée d par l’équation d = 1/2 × t × v, où v est la vitesse de propagation de l’onde, qui dépend du matériau. Le A121 (figure 1) est un radar à impulsions dit « cohérent », ce qui signifie qu’il est capable de mesurer la phase du signal reçu pour une mesure encore plus précise.

Le matériel
Le capteur A121 utilise la bande des 60 GHz et offre de nombreuses fonctionnalités dans un format très compact (5,2 × 5,5 × 0,8 mm). Il est entièrement intégré, avec un processeur, le frontal RF et l’antenne dans un même boîtier, et une sortie numérique via SPI. En interne, le A121 mesure les différences de temps avec une résolution de l’ordre de la picoseconde, ce qui permet une excellente résolution de distance, de l’ordre de 0,1 mm (!). La portée maximale est d’environ 20 m. Il s’agit d’un composant très complexe ; l’expliquer en détail serait à la fois très difficile et dépasserait largement le cadre de cet article, mais la documentation du fabricant (voir <span> et <span>) est abondante et de bonne qualité.
Acconeer suggère de l’utiliser pour des applications telles que la mesure de distance, la détection de proximité ou de présence, la mesure de vitesse, le suivi d’objets, la navigation de robots, etc. Grâce à sa haute résolution en mode distance, le A121 peut également surveiller les signes vitaux tels que la respiration et le pouls. Comme le capteur fournit, à sa sortie, la phase et l’amplitude du signal reçu, il est possible (en traitant les données sur un microcontrôleur qui lui est connecté) de détecter et de classer différents matériaux, et de reconnaître des gestes basiques. Comme les autres capteurs radar, il est insensible à la poussière, aux variations de lumière ambiante, etc.
Tout cela est excellent, mais il n’est pas très facile d’expérimenter avec le capteur lui-même ou de l’utiliser, pour deux raisons : premièrement, il utilise un minuscule boîtier BGA à 50 billes, qui n’est pas si facile à souder. Deuxièmement, l’utilisation des fonctionnalités avancées nécessite beaucoup de traitement de données par logiciel, ce qui représente une quantité de travail importante pour quiconque envisagerait simplement d’essayer le composant. Pour remédier à cela, Acconeer a une excellente solution.
Le module XM125
Le module Acconeer XM125 (figure 2) facilite grandement l’utilisation du produit. Il s’agit d’un petit circuit imprimé rectangulaire de 18,6 mm x 15 mm, contenant : le capteur A121, un quartz de 24 MHz nécessaire à son fonctionnement, quelques résistances et condensateurs, et enfin un microcontrôleur STM32L431CBY6 de STMicroelectronics. Tous les composants sont montés sur la face supérieure, ce qui permet de souder le module à plat sur une empreinte LGA (Land Grid Array) de votre circuit imprimé prototype, à l’air chaud ou à l’aide d’un fer à souder. Sur les 28 broches au pas de 1,27 mm (déjà plus accessible que le BGA pour nous autres mortels), seules quelques-unes sont absolument nécessaires ; il serait même possible d’y souder des fils directement pour le prototypage sans PCB.
Le module est suffisamment compact pour être intégré directement dans des produits commerciaux. Il peut fonctionner de façon autonome, si le client décide de développer son application sur la base du code source fourni par Acconeer. Il peut également être associé à un microcontrôleur externe, qui communique alors avec le module par un port série ou I²C, par lecture-écriture de registres.
SparkFun à la rescousse
Intégrer un microcontrôleur dans le module est un choix judicieux. De cette façon, Acconeer peut offrir des fichiers de firmware téléchargeables déjà compilés et prêts à être flashés sur le STM32L431, ce qui facilite grandement l’essai du capteur. SparkFun <span> rend les choses encore plus pratiques, avec un circuit imprimé qui comprend le XM125, un convertisseur USB vers UART (CH340C), un port USB-C et les régulateurs de tension nécessaires, comme on peut le voir sur la figure 3. Deux connecteurs Qwiic permettent de relier le module via I²C à d’autres cartes SparkFun.
Cette carte est simplement destinée à faciliter les connexions ; elle n’inclut pas de microcontrôleur supplémentaire. SparkFun suggère d’utiliser les fichiers compilés fournis tels quels pour le STM32L431, et de développer votre propre application sur un microcontrôleur externe, par exemple un ESP32 sur un autre PCB, communiquant avec le XM125 via I²C. Pour les utilisateurs plus avancés, ou ceux qui sont familiers avec les produits STM32, il est également possible de se passer d’un microcontrôleur externe et de développer entièrement votre projet sur le STM32L431 fourni.
Logiciel
Acconeer offre de nombreuses options en termes de logiciel. Pour le XM125, un kit de développement logiciel (SDK) est fourni <span> et contient le code source et les fichiers compilés, directement transférables sur le STM32L431 embarqué, pour de nombreux exemples d’applications (mesure de distance, de vitesse, détection de présence, etc.) Pour ceux qui prévoient d’utiliser le capteur A121 seul (sans le module XM125), d’autres SDK sont également disponibles dans différentes variantes (Keil, ARM-GCC, IAR, etc.) pour les plates-formes ARM Cortex M7, M4, M33, M0. Un guide PDF dédié est disponible pour chaque cas.
Mention spéciale pour l’Exploration Tool publié par Acconeer, cette fois sur GitHub <span>. Entièrement programmé en Python, il fournit une interface graphique bien utile sur PC (Windows ou Linux) pour évaluer l’A121, modifier ses paramètres et transmettre des mesures en direct vers le PC. Voyons cela de plus près.
Un outil d’exploration
Pour ceux qui n’ont jamais installé l’interpréteur Python sur leur PC, c’est le moment de le faire. L’Exploration Tool s’installe en utilisant le gestionnaire de paquets pip. Cependant, certaines distributions Linux (comme Mint, que j’ai récemment essayée) déconseillent fortement d’utiliser pip sur l’interpréteur Python du système, car il y a apparemment un risque de perturber les paquets utilisés par le système lui-même. Dans ce cas, il est recommandé d’exécuter pip dans un environnement virtuel. Il peut également être utile de faire de même sous Windows pour garder le contrôle sur les paquets que vous installez ou désinstallez pour chaque projet. J’ai utilisé PyCharm, qui fonctionne bien sous Windows et Linux.

Dans le terminal (de PyCharm ou de votre système), installez l’Exploration Tool avec la commande python -m pip install --upgrade acconeer-exptool[app] et, une fois tous les paquets installés, lancez l’interface graphique avec la commande python -m acconeer.exptool.app. L’outil prend également en charge le prédécesseur du A121, le A111. Cliquez sur le panneau de gauche pour ouvrir la version A121. La fenêtre principale qui s’ouvre est illustrée à la figure 4.
Téléchargement du firmware
Tout comme chaque situation spécifique (mesure de distance, vitesse, présence, etc.) a son propre firmware optimisé disponible au format compilé (binaire), il en est de même lorsqu’on veut utiliser l’Exploration Tool ; celui-ci est appelé Exploration Server. Pour commencer, créez un compte ici. Téléchargez ensuite le micrologiciel de l’Exploration Server ici et décompressez le fichier ZIP.

L’outil d’exploration contient quatre sections distinctes : Stream, Flash, Calculateur de ressources (RC) et Aide. Ces sections sont accessibles par les boutons situés à gauche. Commencez par ouvrir la page Flash (figure 5). En principe, il est possible de télécharger directement la dernière version du micrologiciel sous l’onglet Get Latest Binary. Cependant, au moment d’écrire ces lignes, un bug empêche le firmware acconeer_xc120_exploration_server_a121-v1_10_0.bin de fonctionner correctement. Bien que le flashage semble se dérouler normalement, la tentative de connexion échoue ensuite (figure 6). Autre détail mineur, le lien fourni par l’outil d’exploration pour créer un compte développeur renvoie une erreur 404. Utilisez plutôt cela.

Pour contourner le problème de firmware, sélectionnez l’onglet Browse et sélectionnez manuellement le fichier provenant du ZIP téléchargé précédemment. Choisissez Serial, puis le port série correct (sous Windows, vous pouvez vérifier le numéro de port dans le gestionnaire de périphériques lorsque vous branchez le module), puis XM125. Enfin, cliquez sur Flash et suivez les instructions à l’écran : appuyez sur le bouton Boot, puis sur le bouton Reset tout en maintenant Boot enfoncé, relâchez Reset, puis relâchez Boot. Il est recommandé de ne pas effectuer cette séquence trop rapidement ; laissez environ une demi-seconde entre chaque pression. Le flashage devrait se terminer normalement.
Premiers essais
Cliquez ensuite sur le bouton Advanced Settings (à gauche de Connect dans la barre supérieure) et tapez 115200 dans le champ Baudrate. Fermez les paramètres avancés et cliquez sur Connect. Félicitations, votre module est connecté !
Vous pouvez maintenant essayer les fonctionnalités de l’outil d’exploration. Les différentes fonctions sont listées à gauche : Sparse IQ, détecteur de distance, détecteur de présence, détecteur de vitesse, etc. Pour chaque application, trois zones d’affichage sont utilisées (figure 7) : Les configurations prédéfinies en bas du panneau gauche (étiquette 1 sur la figure), les paramètres détaillés sur le panneau droit (2) et les résultats des mesures au centre (3). Chaque application doit être lancée à l’aide du bouton Start measurement. N’hésitez pas à essayer ces différentes démos. La page Sparse IQ affiche les données brutes fournies par le capteur, sous la forme de l’amplitude et de la phase des signaux reçus, représentées par des nombres complexes. C’est un peu difficile de les interpréter visuellement. Bien qu’elle soit listée en premier, ce n’est pas la démonstration la plus intuitive. Presence Detector ou Touchless Button sont plus accessibles.

Plus vite, plus vite !
Après quelques essais, je me suis rendu compte que l’affichage des graphiques n’était pas très fluide : les données arrivent par saccades. Alors que certaines applications comme Touchless Button fonctionnent assez bien, il y a des pauses de cinq secondes entre les rafraîchissements des courbes dans Sparse IQ, Presence Detector et d’autres. C’est un peu frustrant compte tenu de la vitesse du capteur lui-même et de tous les efforts déployés par Acconeer pour créer un outil logiciel performant.
Il s’avère que ni Acconeer ni le capteur ne sont à blâmer. Il s’agit d’une coïncidence malheureuse que SparkFun n’a pas encore corrigée. Le CH340C de WCH, un convertisseur USB-série très populaire utilisé sur plusieurs cartes SparkFun, a été logiquement utilisé ici aussi. Malheureusement, il ne supporte pas entièrement le contrôle de flux matériel (Hardware Flow Control), même s’il possède les broches RTS et CTS (requises par le XM125). La version 1D de la datasheet du CH340C est vague à ce sujet : « L’interface USB-série n’est compatible qu’avec la couche d’application, pas totalement ». Plus tard, la version 3B du même document <span> indique : « Pour un débit unidirectionnel de 1 Mbps et plus, ou un débit bidirectionnel de 500 kbps et plus, nous recommandons d’utiliser le CH343 et d’activer le contrôle de flux matériel automatique ».
Quel dommage ! Le XM125 et l’Exploration Tool ont besoin du Hardware Flow Control pour un débit de données optimal. Sur le kit de développement officiel, Acconeer utilise un CP2105 de Silicon Labs à la place. Peut-être qu’une révision 2 de la carte SparkFun sortira un jour ? Pour l’instant, la documentation SparkFun <span> indique : « Note : L’outil d’exploration Acconeer peut fonctionner plus lentement que prévu lorsque l’on utilise le capteur radar SparkFun XM125 ». La FAQ de l’outil d’exploration d’Acconeer le confirme également.
Je n’avais pas de module à base de CP2105 sous la main pour tester ; le CP2105 Friend vendu par Adafruit <span> aurait été idéal, mais il était en rupture de stock. Par contre, les CP2102 et CP2104 sont assez similaires et valent la peine d’être essayés. Ils sont utilisés dans de nombreux produits et j’avais plusieurs gadgets sous la main qui les utilisaient, mais les broches RTS et CTS ne sont pas toujours accessibles. En fouillant dans mes stocks, j’ai trouvé un adaptateur USB-série avec un CP2102 où les broches nécessaires sont exposées (figure 8). Lors de l’achat, vérifiez bien les photos ou la documentation.

Comme il n’est pas prévu d’utiliser un convertisseur USB vers UART différent de celui fourni, le PCB ne fournit pas d’accès direct aux signaux TX, RX, CTS et RTS ; ceux-ci sont directement routés entre le XM125 et le CH340C. Quant à elles, les broches DEBUG_TX et DEBUG_RX sur le côté du module sont connectées au deuxième port série du XM125, qui est utilisé uniquement pour le débogage. Ceci a nécessité quelques adaptations (figure 9).

Un petit morceau de plaque perforée a été ajouté à l’arrière du capteur, en reliant une rangée de broches aux pattes correspondantes du CH340 à l’aide de petits fils. Si vous tentez cette opération, les broches TX, RX, CTS et RTS sont respectivement les broches 2, 3, 9 et 14 du CH340C. Vous pouvez également souder directement sur les pastilles du XM125 en face avant. Pour désactiver le CH340C, sa broche VCC (broche 16) doit être déconnectée, soit en coupant la piste au ras, soit en soulevant délicatement la patte et en aspirant la soudure. J’ai ajouté un cavalier pour rendre cette opération réversible, ainsi que deux fils supplémentaires (+5 V et masse) pour pouvoir se passer complètement du câble USB-C d’origine.
Pour utiliser le CP210x au lieu du CH340, il suffit de changer le numéro du port COM dans l’Exploration Tool. Dans mon cas, le CP2102 a fonctionné correctement, et les graphiques sont maintenant rafraîchis en continu, entre 2 et 20 fois par seconde selon l’application. C’est beaucoup mieux ! Un autre module basé sur le FT232RL de FTDI a aussi fonctionné, quoique légèrement plus lentement.
Une solution cherchant des problèmes
Le détecteur de présence illustre comment la sensibilité du radar aux micro-mouvements lui confère un avantage par rapport à d’autres types de capteurs. J’ai essayé de rester parfaitement immobile à quelques mètres du capteur : quoi qu’il arrive, mes moindres mouvements involontaires ont été détectés par l’A121, le capteur indiquant que j’étais présent, ce qui est toujours rassurant en cas de crise existentielle. En revanche, un capteur infrarouge passif (PIR) placé à la même distance m’ignorait au bout de quelques secondes si je restais immobile. Parmi d’autres applications plus intéressantes, citons la mesure à distance des vibrations de machines ou la surveillance non invasive de la respiration des personnes. C’est ce que j’ai essayé de faire (voir figure 10), mais il semble y avoir des problèmes. Pendant le test, j’étais calme et je respirais beaucoup moins vite que ce qui est indiqué. De plus, l’indication en respirations par minute (bpm) ne correspond pas non plus à la courbe. Je mènerai l’enquête et vous informerai dans la section « Mises à jour » si je trouve le bug. Personnellement, je n’ai pas encore trouvé d’application concrète pour ce capteur à la maison, mais l’étudier en détail a néanmoins été très satisfaisant. N’hésitez pas à m’envoyer vos idées ou suggestions par courriel !

Pour aller plus loin
Je recommande vivement d’expérimenter par vous-même avec les nombreux réglages proposés par l’Exploration Tool ! Jetez également un coup d’œil au panneau Calculateur de ressources (RC), qui fournit des estimations (et non des mesures) de la consommation d’énergie du module en fonction des paramètres. Consultez également le guide de SparkFun, qui propose une bibliothèque Arduino <span> que vous pouvez utiliser sur un microcontrôleur externe de votre choix, pour vous aider à communiquer avec le XM125 dans les modes Présence et Distance, via I²C. Je vous encourage à lire la documentation d’Acconeer, et pour les plus courageux, à jeter un coup d’œil aux fichiers sources. Pour développer votre propre application, vous pouvez aussi installer STM32CubeIDE et utiliser le SDK Acconeer avec le STM32L431 embarqué.
Recommanderais-je le module SparkFun XM125 ? Difficile à dire. Sur le papier, avoir le même type de fonctionnalités que le kit Acconeer officiel pour 40% du prix semble séduisant. Si, comme SparkFun, vous utilisez principalement le XM125 en mode Présence ou Distance via son interface I²C, alors la lenteur du CH340C n’a pas vraiment d’importance. Pour ceux qui veulent une expérience plus fluide avec l’Exploration Tool et économiser un peu d’argent, il semble préférable d’acheter le XM125 seul, un convertisseur USB-UART séparé, et fabriquer une petite carte adaptatrice. Amusez-vous bien !
Note de la rédaction : cet article (250167-04) consacré au capteur radar est paru dans le numéro Elektor Juillet/Août 2025.
Questions ou commentaires ?
Envoyez un courriel à l’auteur jean-francois.simon@elektor.com, ou contactez Elektor redaction@elektor.fr.
Discussion (0 commentaire(s))