MicroPython-HC-SR04

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Introduction

HC-SR04-00.jpg

Le HC-SR04 est un module ultrason permettant l'évaluation d'une distance de 2cm à 400cm. La mesure est réalisée "sans contact" et dispose d'une précision de 3mm dans les conditions optimales. Le module inclus un émetteur et un récepteur ultrason ainsi qu'une électronique de contrôle. Le fonctionnement de ce module s'apparente à celui d'un sonar de sous marin et sa mise en oeuvre est relativement simple.

principe de fonctionnement

HC-SR04-10.jpg

  1. Le module émet une onde sonar composée d'une série de 8 impulsions à 40 kHz.
    Un son à 40 KHz est inaudible pour l'oreille humaine capable de percevoir des sons entre 16Hz et 16KHz (cfr Wikipédia).
  2. En utilisant la broche Trig, vous envoyez un signal pour activer le déclenchement de l'impulsion sonar.
  3. Si le signal revient... la sortie passe au niveau haut durant toute la période où l'onde voyage vers l'objet et revient après avoir été réfléchit par se dernier.

Note: L'avantage d'utiliser un son plus aigu est qu'il est directionnel (se propage en ligne droite) alors que les basses fréquences transitent plutôt par la matière. C'est pour cette raison que l'on entend que les basses lorsques les voisins font la fiesta!

Brancher

Schéma

MicroPython-HC-SR04-shcema.png

  • Trigger - Le broche "trigger" du senseur est censé recevoir le signal d'activation (5v) lui indiquant qu'il doit effectuer une mesure de distance. La plupart du temps, l'utilisation d'un signal 5V ou ou signal 3.3V passe parfaitement bien. En logique 5V, le signal est considéré comme haut dès qu'il passe le seuil de tension de 2.0v (voyez ce bel article de sonelec-musique pour plus de détails).
  • Echo - la broche "echo" reverra un signal 5V lorsque l'écho sera revenu vers le senseur. Nous utilisons ici un pont diviseur de tension pour ramener la tension en dessous des 3.3 Volts. Même si l'entrée était tolérante 5V, c'est l'occasion d'apprendre une petite technique très utile, compatible avec tous les microcontrôleurs 3.3v.

Tension sur la broche Y6:

Voici comment calculer la tension sur la broche Y6 lorsque le pont diviseur reçoit le signal "echo" (soit 5V).

V(y6) = 5V * ( 470 / (470 + 330) ) = 2.06 Volts.

2.06 volts est suffisant pour activer la broche Y6.

Montage

MicroPython-HC-SR04-montage.jpg

Classe Ultrason

Pour utiliser les senseur HC-SR04, nous allons utiliser le classe Ultrason écrite par skgsergio et disponible sur son dépôt GitHub.

Téléchargez y le fichier ultrasonic.py que vous placerez dans le répertoire racine de votre PyBoard.

MicroPython-HC-SR04-Ultrason.jpg

Cela vous permettra d'importer la la classe Ultrason.

from ultrason import Ultrason

Avec la classe Ultrason vous pourrez mesurer une distance en cm.

Ce qu'il y a de bien avec cette classe, c'est que vous pouvez l'utiliser plusieurs fois si vous avez plusieurs senseurs HC-SR04 :-)

Programme de test

Voici un programme de test que vous pouvez saisir en mode REPL (ou en utilisant pyterm.py)

Ce programme mesure la distance et affiche la valeur en centimètre sur le terminal.

Cette mesure est effectuée 20 de fois

# Mesure de distance à l'aide d'un senseur HC-SR04
#   http://shop.mchobby.be/product.php?id_product=561
#
from pyb import delay

# ultrasonic.py stocké sur votre PyBoard.
# Vous pouvez trouver cette source sur GitHub
#   https://github.com/skgsergio/MicropythonLibs/blob/master/Ultrasonic/module/ultrasonic.py
# dans le projet de skgsergio
#   https://github.com/skgsergio/MicropythonLibs
# 
from ultrasonic import Ultrasonic

# Broche pour déclencher le senseur
TRIGGER_PIN = pyb.Pin.board.Y5 
# Broche pour attendre le retour d'echo
ECHO_PIN = pyb.Pin.board.Y6

def show_distance():
    """ Cette fonction mesure la distance et affiche la valeur en
        centimètre. Effectue la mesure une 20 de fois."""
    sr04 = Ultrasonic( TRIGGER_PIN, ECHO_PIN )
    for i in range( 20 ):
        # Mesure la distance en cm
        distance = sr04.distance_in_cm()
        # Afficher la valeur
        print( "%i/20: Distance %s cm" % (i+1, distance) )
        # Attendre un seconde
        delay( 500 )

show_distance()

Plus, plus et encore plus

Où Acheter


Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.