Un radar ultrason : Arduino, impression 3D et Processing
Mon premier projet intégré : un capteur HC-SR04 sur un servo SG90, une tour imprimée en 3D modélisée en Python, et un écran radar codé en Processing. Récit honnête, ratés compris.
- #arduino
- #impression-3d
- #processing
- #électronique

Pourquoi ce projet
Je prépare un cours du soir sur les drones roulants et volants, et je voulais un premier projet qui intègre tout ce qu'on va y toucher : un peu d'électronique, un peu de code embarqué, de la modélisation 3D, et une interface qui affiche des données en temps réel. Le radar ultrason est un classique des tutos Arduino — mais le refaire proprement, en concevant le support soi-même et en comprenant chaque delay, c'est une autre histoire.
Le principe : un capteur ultrason HC-SR04 (les deux « yeux ») monté sur un
servo SG90 balaie l'horizon de 0 à 180°. À chaque angle, l'Arduino mesure la
distance et envoie angle,distance sur le port série. Un sketch Processing
lit ce flux et dessine l'écran radar vert phosphorescent réglementaire.
Le montage
Le support est une petite tour imprimée en PLA sur ma Bambu Lab : socle circulaire avec les graduations d'angle gravées, colonne cannelée, et une nacelle qui tient le capteur sur le palonnier du servo. Elle a été modélisée en Python avec build123d — du CAD paramétrique en code : chaque cote est une variable, on change une valeur et toute la pièce se régénère.
Ce qui a raté (et c'est le plus intéressant)
Il a fallu cinq versions de la nacelle pour arriver au bout. Florilège :
- La v1 avait une fente pour le câble du servo qui s'arrêtait à 0.5 mm de déboucher. Invisible sur les rendus 3D. On a fini par écrire un script de validation qui vérifie par booléens que chaque découpe traverse vraiment la matière — comme des tests unitaires, mais pour de la géométrie.
- La v3 était géométriquement parfaite… et impossible à monter : les yeux du capteur traversent la plaque avant, donc le module ne peut s'insérer que par l'arrière — et rien n'était prévu pour, ni le passage, ni le dégagement du quartz qui dépasse du circuit. Leçon : valider la séquence de montage, pas seulement l'objet assemblé.
- La v4 se montait enfin… sauf que la vis fournie avec le servo fait 8.9 mm, et mon empilement de plastique en faisait 10.3. La vis n'atteignait jamais l'axe. La longueur des vis est une cote comme les autres : maintenant elle est dans le modèle, avec un garde-fou qui refuse de générer la pièce si l'engagement est insuffisant.
Ce que j'ai appris
- Mesurer avant de modéliser : tout est parti de mesures au pied à coulisse (dont j'ai appris… le nom). Les datasheets des kits mentent — la mienne annonçait un servo de 9 g pesant 134 g.
- Le vocabulaire qui va avec : entraxe (distance entre les centres de deux trous — le mot que je cherchais depuis le début), trou pilote, press-fit.
- Imprimer un gabarit de test de 10 minutes avant une pièce de 3 heures : le patron pour la taille des trous, les jeux d'impression, tout se calibre sur un petit coupon.
- Les delays côté Arduino : celui d'avant la mesure laisse le servo se
stabiliser (un
write()n'attend pas que le servo arrive !) ; celui d'après est inutile, la mesure ultrason est déjà bloquante. - Et les éternels sinus et cosinus pour convertir du polaire en cartésien dans Processing — avec le piège de l'axe Y qui pointe vers le bas à l'écran.
Les limites
Le HC-SR04 n'est pas un capteur de précision : cône de détection large, échos perdus sur les surfaces molles ou obliques, mesures aberrantes à filtrer. Pour un radar pédagogique c'est parfait — on voit les limites physiques du capteur à l'écran, et ça fera un excellent sujet de discussion en cours.
La suite
- Un châssis plus compact qui cache l'électronique (intégrer un Arduino Nano)
- Un moteur 360° (ou deux servos 180° dos à dos)
- Un écran OLED pour les mesures, voire un écran intégré pour l'affichage radar
- Un capteur plus performant (ToF laser type VL53L0X ?)
- Et le vrai objectif : transposer tout ça sur un robot roulant pour le cours
Code, fichiers 3D et crédits
Tout est sur GitHub : radar-ultrason — firmware Arduino, sketch Processing, modèles Python paramétriques, STL prêts à imprimer, et le journal de bord complet du projet.
Projet mené en collaboration avec Claude (Anthropic) pour l'encadrement pédagogique, la modélisation 3D et la rédaction, avec des coups de main ponctuels de ChatGPT sur l'électronique et Processing. Documentation : datasheets Elegoo (SG90, HC-SR04) et docs Processing.