Accueil > Arduino, Matériel > Utilisation du module Ultrason HC-SR04 avec l’Arduino

Utilisation du module Ultrason HC-SR04 avec l’Arduino

Pour cet article on va tester l’utilisation du module Ultrason HC-SR04. L’intérêt de ce module est son prix, environ 7€.

Les caractéristiques techniques du module sont les suivantes :

– Alimentation : 5v.

– Consommation en utilisation : 15 mA.

– Gamme de distance : 2 cm à 5 m.

– Résolution : 0.3 cm.

– Angle de mesure : < 15°.

Le brochage du module est le suivant :

image

Le fonctionnement du module est le suivant :

Il faut envoyer une impulsion niveau haut (à + 5v) pendant au moins 10 µs sur la broche ‘Trig Input’; cela déclenche la mesure. En retour la sortie ‘Output’ ou ‘Echo’, va fournir une impulsion + 5v dont la durée est proportionnelle à la distance si le module détecte un objet. Afin de pouvoir calculer la distance en cm, on utilisera la formule suivante :

distance = (durée de l’impulsion (en µs) / 58

Voici une représentation graphique de la séquence de fonctionnement du module :

image

 

Après la théorie passons à la pratique; le câblage du module à l’Arduino sera le suivant :

– broche 12 de l’Arduino vers Trig.

– broche 11  de l’Arduino vers Echo.

 

Le programme sera le suivant :

/* Utilisation du capteur Ultrason HC-SR04 */

// définition des broches utilisées
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;

void setup()
{
  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  lecture_echo = pulseIn(echo, HIGH);
  cm = lecture_echo / 58;
  Serial.print("Distance en cm : ");
  Serial.println(cm);
  delay(1000);
}

Catégories :Arduino, Matériel Étiquettes : , ,
  1. Jean
    18/11/2013 à 15:43

    Passionnant!

    • 18/11/2013 à 21:52

      Merci

      • Jean
        19/11/2013 à 10:27

        de rien

    • robin
      09/05/2016 à 02:12

      est ce que c’est bon pour un quadcopter sur une multiwii crius AIOP ? MERCI

  2. 20/11/2013 à 14:26

    sympa ca marche bien

  3. kaway
    20/12/2013 à 13:21

    merciiiiiiiiiiiiiiiiiiiiiiiii mais pour quoi on divise sur 58 ????

    • 08/01/2014 à 19:43

      Pour avoir la distance en cm. C’est expliqué dans la fiche technique du constructeur

  4. ORPZ
    03/02/2014 à 13:29

    Bonjour.
    Pourquoi tu choisis un délai de 10ms pour le trig ?

  5. robin
    14/02/2014 à 18:32

    salut ,ce code fait il pour un quadcopter ? ou le quel je pourrais avoir ? merci

  6. rob
    28/03/2014 à 19:30

    aurais tu un code pour un quadcopter ou autre ..?merci

  7. MO
    14/05/2014 à 08:02

    pourquoi /58 ?

    • 14/05/2014 à 18:47

      Pour avoir la distance en cm. C’est expliqué dans la fiche technique du constructeur

  8. BROCOT
    29/05/2014 à 18:55

    Très bien. Marche super bien Merci

    • 29/05/2014 à 19:03

      Bonjour et merci, je teste toujours avant d’écrire un article

      • robin
        29/05/2014 à 22:01

        toujours pas pour un multicopter ?

  9. robin
    29/05/2014 à 22:02

    je veux dire un multirotors

  10. Ben
    16/06/2014 à 16:58

    Ça ne marche pas! 😦
    Quand je lance le programme sur l’arduino, le moniteur série n’affiche que des valeurs comprises entre 3700 et 3800, exemple: 3770,3729,3758 etc. Alors que le capteur est fixe, et avec un obstacle à une distance qui n’a rien avoir avec celle affichée…
    Je ne sais plus quoi faire…

    • Ben
      03/05/2015 à 10:19

      C’est bon ca marche maintenant : ma pièce etait défectueuse, j’en ai racheté une autre et c’est bon c’est ok 🙂

  11. 30/10/2014 à 20:45

    A reblogué ceci sur Yoann's Bloget a ajouté:
    Quelques explications utiles sur le module ultrason HC-SR04 et son utilisation sur arduino

    • robin
      30/10/2014 à 21:19

      merci mais ou mettre le code ? merci

  12. robin
    31/10/2014 à 05:02

    pour un quadcopter ?merci

  13. JESUISTONPEREREETTAMERE
    12/02/2015 à 17:27

    Lol

  14. damien
    15/02/2015 à 21:20

    je ne comprend pas a coi sa sert jai brancher my le programme mais sa ne donne rien

  15. damien
    01/03/2015 à 18:33

    je ne comprend pas comment peut on savoir si le capteur marche

  16. pierre
    03/03/2015 à 17:49

    Bonjour’ pour le sketch sur arduino HC SR04 j ai un message d erreur pourla ligne « Serial.printIn (cm); qui indique:class harware serialhas no member named printIn.
    merci de me donner un conseil car je debute sur arduino

    • Aybe
      02/06/2015 à 22:16

      Peut-être l’espace entre « println » et « (cm) »

    • Didou
      14/08/2015 à 14:15

      Bonjour,
      c’est l’orthographe de la fonction qui n’est pas bonne, c’est « Serial.println (cm); » et non « Serial.println (cm); » à la fin ce n’est pas « in » mais « ln ».
      Bonne continuation!

  17. Titty
    26/03/2015 à 12:05

    Salut, alors moi j’aimerai brancher 6 capteurs HC-SR04 plus d’autres trucs sur mon Arduino. Le problème c’est qu’il n’y a pas assez de broches disponibles. J’ai pensé qu’en reliant les trigger des capteurs sur une meme broche ca passerait (le trigger serait émis en même temps pour tous les capteurs) et je pourrai gagner au moins 5 pins sur ma carte !! Mais ca marche pas… C’est normal ? Ou je dois utiliser un registre à décalage genre 74HC595 ?

  18. HellBeorn
    30/04/2015 à 23:44

    Bonjour,
    Lorsque je branche mon module HC-SR04 sur mon arduino UNO celle-ci s’éteint. Les led ON et L s’éteignent progressivement et mon arduino est déconnectée de mon pc; dès que j’enlève le module de ma plaque d’essais l’arduino se rallume et se reconnecte au pc. J’ai essayé avec les différentes sources d’alimentation possibles de l’arduino, même problème. Quelqu’un aurait-il une idée du pourquoi ?
    Merci de votre attention.

  19. Mike
    03/05/2015 à 08:15

    D’après ce que je sais la carte arduino uno fait ce genre de truc pour se proteger quand il y a un court circuit (il s’arrête de fonctionner) jusqu’à ce que le court circuit soit éliminer

  20. rym
    13/05/2015 à 21:42

    bonsoir j aimerai que vous m expliqué le fonctionnement d’arduino dans ce montage svp !
    merci

  21. robin
    25/05/2015 à 14:54

    ne pourrais tu pas en faire un pour un quadcopter ? merci

  22. Tamen
    26/05/2015 à 12:32

    tu as mis 58 pour l’avoir en cm mais comment tu c qu’il faut 58 pour l’avoir en cm

  23. Stéphane Fouret
    07/06/2015 à 19:56

    Bonjour,j’ai testé le montage et le code avec succés,mais lorsque le le fait voir loin ,il affiche zero,puis il reste à zéro même si je lui met un obstacle,je débranche le SR puis il refonctionne.
    Quelq’un aurait il une idée d’ou vient mon bug ?

  24. 13/06/2015 à 08:53

    Bonjour, bravo pour le tuto, mais juste pour information le module ne coûte pas 7€ mais plutôt 1.5€ (http://www.amazon.fr/ultrasons-HC-SR04-Capteur-distance-Arduino/dp/B00BIZQWYE/ref=sr_1_1?ie=UTF8&qid=1434178365&sr=8-1&keywords=Hc+sr04)

  25. Mercier
    18/07/2015 à 20:42

    Salut! personnellement, il me faut mettre au moins 5 variables globales, donc je dois rajouter un « int useless; » qui ne sera pas utilisé pour que la compilation ne pose plus de soucis!

    Ça me mettait ça pour ceux qui sont curieux:

    collect2.exe: error: ld returned 5 exit status
    Erreur lors de la compilation.

    Version du logiciel arduino: 1.6.5

  26. Thierry
    15/10/2015 à 10:43

    Bonjour,

    mon capteur donne des valeurs extrêmes lorsque ce capteur tourne (ex: mesure à 70cm puis au fur et à mesure qu’il tourne il peut afficher 3000cm puis 3 cm pendant un certains temps. Est-ce normal? comment le flitrer?
    Merci d’avance pour la réponse,
    Thierry

  27. 26/11/2015 à 18:35

    Bonjour, j’ai essayé plusieurs capteurs HC-SR04 avec l’ARDUINO Uno sous Arduino 1.1.0.5 (Ubuntu 14.04.3), l’air intérieur autour de 19°C, j’ai besoin de diviser par 77 plutôt que 58 pour que cela fonctionne avec de vraies mesures de distances.

    En fait, je conseille à tout le monde de vérifier ses capteurs et l’ARDUINO en retirant la division par 58, puis mettre un obstacle à un mètre, voire deux mètres, lire le retour, et opérer la division qui ramènera aux centimètres.

    Par exemple avec ma cible à 100 cm, le programme sans la division retourne autour de 7700, alors je divise ensuite par 77 pour obtenir les centimètres.
    Je ne comprends pas d’où vient l’écart.

    PS : on peut mettre des floats à la place des entiers pour les variables lecture_echo et cm.
    Cordialement,
    LDVC@

  28. 30/11/2015 à 16:09

    Et pour un quadcoptère ?

  29. FATEN
    11/12/2015 à 19:36

    à quoi sert le 9600??

  1. 19/03/2014 à 18:59
  2. 24/11/2015 à 21:58

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :