Bonjour à tous, j’espère que vous allez bien. Aujourd’hui je vous partage le montage que j’ai réalisé pour m’aider à me garer chez moi. 😊
Effectivement lorsque nous étions locataires, le garage au sous-sol était assez commode mais il avait un défaut il ne comportait pas de prise électrique… Dans notre petit chez nous, il y a aussi un garage, il est un peu plus petit mais la voiture passe et cerise sur le gâteau il comporte plusieurs prises électriques. 🤩
Du coup je me suis dit que j’allais fabriquer un petit montage qui m’indique la distance entre le mur et le parc-choc arrière afin de ma faciliter la vie, car je n’ai pas de radar ou de caméras de recul sur les véhicules. Il y a deux raisons au fait que je ne sois pas chaud pour un radar ou une caméra de recul sur le véhicule :
- La première c’est que du moment que l’on a ce genre d’options on fait moins attention quand on recule car on se repose sur ces assistances… Mais elle ne sont pas parfaites et peuvent facilement être mises en défaut. Qui n’a jamais croisé une voiture récente avec le parc-choc arrière enfoncé malgré la présence de rond sur celui-ci indiquant que le véhicule est équipé d’un radar de recul. Quand on recule, le mieux restera toujours de tourner ça tête… 😋
- La seconde est plus pragmatique, si ces systèmes sont certes très pratiques et utiles, je ne peux pas le nier, encore faut-il qu’ils soient en état de fonctionner… Et si ce n’est pas le cas il est en général bien compliqué de les réparer. Alors que bien souvent, c’est un problème de faux contact dans un connecteur ou encore d’un câble coupé. Bref il s’agit un élément simple à réparer mais camouflé dans un espace limité et il faudra démonter beaucoup d’éléments pour y accéder… 🥺
J’ai même regarder pour rajouter une caméra de recul à mon véhicule. Il me suffisait de rajouter la caméra et de la câbler sur l’écran. J’ai renoncé pour le moment à réaliser l’opération au vu la liste des choses à démonter afin de passer le câble vidéo et l’alimentation au sein de l’espace intérieur… 😓
Mais le plus simple et le plus rapide, reste encore de faire un bon vieux montage avec un Arduino pour s’aider à se garer chez soi et faire attention tout le reste du temps quand on a besoin d’aller en marche arrière. 😃
1 – Principe
Concrètement, on recule devant le capteur, quand la voiture est prise en compte à 30cm les leds passent au vert. Puis au fur et à mesure que l’on recule elle changent en jaune puis rouge. Après le rouge, les leds s’éteignent de nouveau, la voiture est à 10cm du mur : il faut s’arrêter.
- A plus de 30cm les mesures du capteur sont inprécises : les leds sont éteintes.
- Entre 25 cm et 30 cm : les leds sont vertes.
- Entre 17,5 cm et 25 cm : les leds sont jaunes.
- Entre 10 cm et 17,5 cm : les leds sont rouges.
- Avant 10cm : les leds sont éteintes.
2 – Liste du Matériel
- Un Arduino Uno
- Un câble USB
- Un convertisseur 220AC -> 5V DC
- Du fil : 8m environ pour déporter le capteur, ou un câble à 4 conducteur isolés de 2m
- Quelques leds WS2812B.
- Un capteur ultra-son HC-SR04 avec une borne Trigger et une borne Echo.
3 – Montage
Le schéma de câblage est relativement simple. Il faut juste prévoir assez de longueur sur les fils du HC-SR04 afin de pouvoir le déporter. Cela permet de voir le montage dans le rétroviseur, on voit aussi la led d’alimentation de l’Arduino indiquant que le système est sous tension et qu’on va bien voir les leds s’allumer. Ce serait bête de rentrer dans son propre mur… 😱

Réalisé grâce à TinkerCAD Circuits : https://www.tinkercad.com/learn/circuits
4 – Code
Il faut bien entendu avoir l’Arduino IDE installé : https://www.arduino.cc/en/Main/Software
La seul dépendance requise est d’installer la librairie NeoPixel d’Adafruit disponible ici : https://github.com/adafruit/Adafruit_NeoPixel
Le code n’est pas du tout optimiser pour le gain d’énergie, le capteur scanne et sort l’information sur le port Serial en permanence. Il y aurait moyen d’améliorer tout cela en mettant l’Arduino en mode Sleep et en le réveillant au bon moment…. 😑
#include <Adafruit_NeoPixel.h>/* Constantes pour les broches */ const byte TRIGGER_PIN = 9; // Broche TRIGGER const byte ECHO_PIN = 10; // Broche ECHO // Which pin on the Arduino is connected to the NeoPixels? // On a Trinket or Gemma we suggest changing this to 1: #define LED_PIN 6 // How many NeoPixels are attached to the Arduino? #define LED_COUNT 16 // Declare our NeoPixel strip object: Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); /* Constantes pour le timeout */ const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s /* Vitesse du son dans l'air en mm/us */ const float SOUND_SPEED = 340.0 / 1000; /** Fonction setup() */ void setup() { /* Initialise le port série */ Serial.begin(115200); /* Initialise les broches */ pinMode(TRIGGER_PIN, OUTPUT); digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos pinMode(ECHO_PIN, INPUT); strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show(); // Turn OFF all pixels ASAP strip.setBrightness(255); // Set BRIGHTNESS } /** Fonction loop() */ void loop() { /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */ digitalWrite(TRIGGER_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER_PIN, LOW); /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */ long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT); /* 3. Calcul la distance à partir du temps mesuré */ float distance_mm = measure / 2.0 * SOUND_SPEED; /* Affiche les résultats en mm, cm et m */ Serial.print(F("Distance: ")); Serial.print(distance_mm); Serial.print(F("mm (")); Serial.print(distance_mm / 10.0, 2); Serial.print(F("cm, ")); Serial.print(distance_mm / 1000.0, 2); Serial.println(F("m)")); if (distance_mm == 0 || distance_mm > 300 ) { for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip... strip.setPixelColor(i, strip.Color(0, 0, 0)); // Set pixel's color (in RAM) strip.show(); // Update strip to match delay(1); // Pause for a moment } } else if (distance_mm > 250 && distance_mm < 300) { for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip... strip.setPixelColor(i, strip.Color(0, 255, 0)); // Set pixel's color (in RAM) strip.show(); // Update strip to match delay(1); // Pause for a moment } } else if (distance_mm > 175 && distance_mm < 250) { for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip... strip.setPixelColor(i, strip.Color(255, 255, 0)); // Set pixel's color (in RAM) strip.show(); // Update strip to match delay(1); // Pause for a moment } } else if (distance_mm > 100 && distance_mm < 175) { for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip... strip.setPixelColor(i, strip.Color(255, 0, 0)); // Set pixel's color (in RAM) strip.show(); // Update strip to match delay(1); // Pause for a moment } } else if (distance_mm > 0 && distance_mm < 100) { for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip... strip.setPixelColor(i, strip.Color(0, 0, 0)); // Set pixel's color (in RAM) strip.show(); // Update strip to match delay(1); // Pause for a moment } } }
5 – Remerciements
Un attention particulière pour @Skywodd qui m’a grandement facilité le travail avec son article : https://www.carnetdumaker.net/articles/mesurer-une-distance-avec-un-capteur-ultrason-hc-sr04-et-une-carte-arduino-genuino/
@Bientôt Anders 😎



Hello !
Bonne analyse et bon projet. C’est un projet facile à réaliser et tres pratique dans ce cas d’usage. Néanmoins, n’as-tu pas copié le projet que Heliox a deja réalisée ? Elle a fait exactement le même projet il y a quelques mois voire années.
Très bonne continuation en tout cas, je suis toujours autant tes projets 🙂
Bonjour Frédéric, j’espère que vous allez bien.
Ce projet est effectivement très facile à réaliser et bien pratique, j’en suis très satisfait. Je ne connais pas du tout Heliox, du coup je n’ai pas l’impression de l’avoir copié… Toutefois, vu que le montage et le code sont relativement simples, il est fort probable qu’elle l’ait réalisé avant moi… Je me suis surtout appuyé sur le travail de Skywodd qui avait tout le travail d’exploitation du capteur. Avez-vous un lien vers son article? J’aime bien découvrir de nouvelles personnes. 🙂
@Bientôt