comment utiliser un capteur de Distance à ultrasons HC-SR04 avec Arduino
le HC-SR04 est un capteur de distance à ultrasons peu coûteux et facile à utiliser, avec une portée de 2 à 400 cm. Il est couramment utilisé dans les obstacles évitant les robots et les projets d’automatisation. Dans ce tutoriel, vous apprendrez comment le capteur fonctionne et comment l’utiliser avec Arduino.
j’ai inclus 5 exemples avec un schéma de câblage et un code afin que vous puissiez commencer à expérimenter avec votre capteur., Nous allons d’abord regarder un exemple qui n’utilise pas de bibliothèque Arduino. Ensuite, je vais vous montrer comment vous pouvez utiliser la bibliothèque NewPing pour créer un code plus compact.
Les capteurs de distance / proximité à ultrasons bon marché sont excellents, mais dans certains projets, vous pourriez avoir besoin d’un capteur étanche comme le JSN-SR04T ou D’un capteur IR qui n’est pas influencé par les changements de température.,on
AliExpress
Software
Arduino IDE |
Makerguides.,com participe au programme Amazon Services LLC Associates, un programme de publicité d’affiliation conçu pour fournir aux sites un moyen de gagner des frais de publicité en faisant de la publicité et en créant des liens vers des produits sur Amazon.com.
Comment fonctionne un capteur de distance à ultrasons?
Les capteurs à ultrasons fonctionnent en émettant des ondes sonores à une fréquence trop élevée pour qu’un humain puisse les entendre. Ces ondes sonores se déplacent dans l’air à la vitesse du Son, environ 343 m/s., S’il y a un objet devant le capteur, les ondes sonores sont réfléchies et le récepteur du capteur à ultrasons les détecte. En mesurant le temps écoulé entre l’envoi et la réception des ondes sonores, la distance entre le capteur et l’objet peut être calculée.
À 20°C, la vitesse du son est d’environ 343 m/s ou 0.034 cm/µs., Disons que le temps entre l’envoi et la réception des ondes sonores est de 2000 microsecondes. Si vous multipliez la vitesse du son par le temps que les ondes sonores ont parcouru, vous obtenez la distance parcourue par les ondes sonores.
Distance = Vitesse x Temps
Mais ce n’est pas le résultat que nous recherchons. La distance entre le capteur et l’objet n’est en fait que la moitié de cette distance car les ondes sonores ont voyagé du capteur à l’objet et de l’objet au capteur. Si vous avez besoin de diviser le résultat par deux.,
Distance (cm) = Vitesse du son (cm/s) x Temps (µs) / 2
Et donc, pour l’exemple, cela devient:
Distance (cm) = 0.0343 (cm/s) × 2000 (µs) / 2 = 34.3 cm
la dépendance de la Température de la vitesse du son
La vitesse du son dépend fortement de la température et à un bien moindre degré sur l’humidité de l’air. Wikipedia indique que la vitesse du son augmente avec environ 0,6 m / s par degré Celsius., Pour la plupart des cas à 20°C, vous pouvez simplement utiliser 343 m/s, mais si vous souhaitez obtenir des informations plus précises, vous pouvez calculer la vitesse du son avec la formule suivante:
V (m/s) = à 331,3 + (0.606 × T)
V = Vitesse du son (m/s)
T = Température de l’Air (°C)
Cette formule n’inclut pas l’humidité depuis son effet sur la vitesse du son est très faible.
Vous trouverez ci-dessous un tutoriel sur l’utilisation d’un capteur de température et d’humidité DHT11 pour calibrer la vitesse du son et obtenir une lecture de distance plus précise avec le HC-SR04.,
Comment le HC-SR04 fonctionne
À l’avant de la HC-SR04 capteur, vous pouvez trouver deux d’argent cylindres (transducteurs à ultrasons), l’un est l’émetteur d’ondes sonores et l’autre est le récepteur. Pour laisser le capteur générer une rafale sonique, vous devez régler la broche Trig haute pendant au moins 10 µs. Le capteur crée ensuite une rafale de 8 cycles d’ultrasons à 40 kHz.
cette rafale sonore se déplace à la vitesse du son et rebondit et est reçue par le récepteur du capteur. La Broche Echo affiche alors le temps parcouru par les ondes sonores en microsecondes.,
Vous pouvez utiliser la balise pulseIn()
fonction dans le code Arduino pour lire la longueur de l’impulsion de l’Écho pin. Après cela, vous pouvez utiliser la formule mentionnée ci-dessus pour calculer la distance entre le capteur et l’objet.,ncy
Pour plus d’informations, vous pouvez consulter la fiche technique ci-dessous:
le Câblage de la Connexion HC-SR04 Arduino UNO
Le schéma de câblage ci-dessous vous indique comment connecter le HC-SR04 capteur à l’Arduino.,
Les exemples de code ci-dessous utilisent respectivement les broches numériques 2 et 3 pour la broche de déclenchement et la broche d’écho, mais bien peut changer cela à n’importe quel code PIN numérique que vous voulez.,C-SR04 Connections
HC-SR04 | Arduino |
---|---|
VCC | 5 V |
Trig | Pin 2 |
Echo | Pin 3 |
GND | GND |
Example code for HC-SR04 with Arduino
Now that you have wired up the sensor it is time to connect the Arduino to the computer and upload some code., Vous pouvez télécharger l’exemple de code suivant sur votre Arduino à l’aide de L’Arduino Arduino. Ensuite, je vais vous expliquer comment fonctionne le code.
Comment fonctionne le code
tout d’Abord, le déclenchement de la broche et l’écho de pin sont définis. Je les appelle trigPin
et EchoPin
. La broche de déclenchement est connectée à la broche numérique 2 et la broche echo à la broche numérique 3 sur L’Arduino.
L’instruction #define
est utilisé pour donner un nom à une valeur constante., Le compilateur remplacera toutes les références à cette constante par la valeur définie lorsque le programme est compilé. Donc, partout où vous mentionnez trigPin
, le compilateur le remplacera par la valeur 2 lorsque le programme sera compilé.
// Define Trig and Echo pin:#define trigPin 2#define echoPin 3
Ensuite, j’ai défini deux variables: duration
et distance
. Durée stocke le temps entre l’envoi et la réception des ondes sonores. La variable distance est utilisée pour stocker la distance calculée.,
// Define variables:long duration;int distance;
dans lesetup()
, vous commencez par définir le trigPin en sortie et l’echoPin en entrée. Ensuite, vous initialisez la communication série à un débit en bauds de 9600. Plus tard, vous afficherez la distance mesurée dans le moniteur série, accessible avec Ctrl+Maj+M ou Outils > moniteur série. Assurez-vous que le débit en bauds est également réglé sur 9600 dans le moniteur série.
dans leloop()
, vous déclenchez le capteur en réglant le trigPin haut pour 10 µs., Notez que pour obtenir un signal propre, vous commencez par effacer le trigPin en le réglant bas pendant 5 microsecondes.
ensuite, vous devez lire la longueur de l’impulsion envoyée par l’echoPin. J’utilise la fonction pulseIn()
pour ce. Cette fonction attend que la broche passe de bas en haut, commence la synchronisation, puis attend que la broche passe bas et arrête la synchronisation.
Après cela, vous pouvez calculer la distance en utilisant la formule mentionnée dans l’introduction de ce tutoriel.
enfin, la distance calculée est imprimée dans le moniteur série.,
exemple de code HC-SR04 avec Arduino et bibliothèque NewPing
la bibliothèque NewPing écrite par Tim Eckel peut être utilisée avec de nombreux capteurs de distance à ultrasons. La dernière version de cette bibliothèque peut être téléchargée ici sur bitbucket.org. vous remarquerez peut-être que le code ci-dessous, qui utilise la bibliothèque NewPing, est beaucoup plus court que le code que nous utilisions auparavant. En plus de cela, la bibliothèque NewPing inclut d’autres fonctionnalités intéressantes. Il vous permet de définir une distance maximale à lire, il ne sera pas en retard pendant une seconde complète quand aucun écho n’est reçu et il a un filtre médian intégré.,
Vous pouvez installer la bibliothèque en allant de l’Esquisse > Inclure la Bibliothèque > Ajouter .Bibliothèque ZIP dans L’Arduino Arduino.
la bibliothèque inclut quelques exemples que vous pouvez utiliser, mais vous devrez les Modifier pour correspondre à votre configuration matérielle. J’ai inclus un exemple de code modifié ci-dessous qui peut être utilisé avec la même configuration de câblage qu’auparavant.
Vous pouvez également utiliser distance = sonar.ping_cm()
ou distance = sonar.ping_in()
qui retourne la distance mesurée en tout centimètres ou en pouces., Avec cette fonction, vous n’avez pas besoin de prendre une mesure de durée et de calculer la distance.
interfaçage des capteurs à ultrasons en mode 3 broches
la bibliothèque NewPing facilite également l’interface avec les capteurs à ultrasons tout en utilisant seulement 1 broche d’E / S. Cela peut être pratique si vous avez très peu de broches d’E/S disponibles ou si vous souhaitez utiliser un capteur à ultrasons à 3 broches comme le Parallax Ping.
pour créer une configuration à 3 broches (GND, 5V et SIG), vous devez connecter à la fois la broche de déclenchement et la broche echo à la même broche numérique sur L’Arduino., Dans le code, la seule chose que vous devez changer est la ligne 6-7 et définir la même broche pour le trigPin et l’echoPin. Par exemple pin numérique 2.
//Define Trig and Echo pin#define trigPin 2#define echoPin 2
comment utiliser le filtre numérique ping_median ()
la principale chose que j’aime à propos de la bibliothèque NewPing est qu’elle a un filtre médian intégré. Ce filtre peut grandement améliorer la précision de vos lectures HC-SR04. La fonction ping_median()
prend de nombreuses mesures de durée d’affilée, élimine les lectures hors plage, puis fait la moyenne des mesures restantes., Par défaut, il faudra 5 lectures, mais vous pouvez spécifier combien cela devrait prendre. Remplacer la ligne 19 par les lignes ci-dessous.
int iterations = 5;duration = sonar.ping_median(iterations);
exemple de code HC-SR04 avec i2c LCD et Arduino
pour afficher la distance mesurée sur un 2004 ou 1602 I2C LCD, Tout ce que vous avez à faire est de faire les connexions suivantes et télécharger le code ci-dessous. Le capteur HC-SR04 est connecté de la même manière qu’auparavant.
I2C LCD Connections
I2C LCD | Arduino |
---|---|
GND | GND |
VCC | 5 V |
SDA | A4 |
SCL | A5 |
If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location., Un Arduino Uno avec la disposition R3 (brochage 1.0), a également les en-têtes de broche SDA (ligne de données) et SCL (ligne d’horloge) proches de la broche AREF. Consultez le tableau ci-dessous pour plus de détails.,f43445″>
The code uses the LiquidCrystal_I2C library, which you can download here on GitHub., Assurez-vous que vous avez installé cette bibliothèque exacte! Il comprend également le fil.bibliothèque h, qui vous permet de communiquer avec les périphériques I2C. Cette bibliothèque devrait être préinstallée avec L’Arduino Arduino.
Si vous voulez en savoir plus sur la façon de contrôler un écran lcd I2C avec Arduino, vous pouvez consulter le tutoriel complet ici.
- Comment contrôler un caractère i2c LCD avec Arduino
notez que j’ai utilisé un écran LCD 20 x 4. Si vous avez un écran LCD de taille différente (16 x 2 est également courant), vous devez changer la ligne 20 en LiquidCrystal_I2C lcd(0x27,16,2);
., Si votre écran LCD n’a pas l’adresse I2C par défaut, 0x27, consultez le tutoriel I2C complet où j’explique comment vous pouvez savoir quelle est l’adresse.
Exemple de code HC-SR04 avec capteur de température DHT11 et Arduino
Comme mentionné précédemment, la vitesse du son dépend fortement de la température de l’air. Si vous souhaitez mesurer de longues distances (3-4 m), il peut être judicieux d’ajouter un capteur de température et d’humidité DHT11 ou dht22 à votre configuration. Cela vous permettra de calibrer la vitesse du son en temps réel et ainsi augmenter la précision de vos mesures.,
Ajouter un capteur DHT11 est vraiment simple. Le schéma de câblage ci-dessous vous montre quelles connexions vous devez faire. Notez que j’utilise un DHT11 avec une carte de dérivation, donc je n’ai besoin que de câbler 3 broches. Assurez-vous de vérifier l’étiquette du capteur, l’ordre des broches peut être différent selon le fabricant. Le capteur HC-SR04 est connecté de la même manière qu’auparavant.
DHT11 Connections
DHT11 | Arduino |
---|---|
VCC (+) | 5 V |
Signal (s) | Pin 4 |
GND (-) | GND |
The code below uses the Adafruit DHT Humidity & Temperature Sensor library which you can download here on GitHub., Cette bibliothèque ne fonctionne que si vous avez également installé la bibliothèque Adafruit_Sensor, qui est également disponible sur GitHub. Vous pouvez également télécharger les deux bibliothèques en cliquant sur les boutons ci-dessous:
Vous pouvez cliquer sur le bouton dans le coin supérieur droit du champ de code à copier le code.
exemple de code HC-SR04 avec DHT11 et i2c LCD
Le code ci-dessous peut être utilisé pour combiner les 3 exemples ci-dessus., Il affiche à la fois la température, la vitesse du son et la distance mesurée sur L’écran LCD.
Dimensions HC-SR04
Vous trouverez ci-dessous les dimensions du capteur à ultrasons HC-SR04. J’ai remarqué qu’il y a quelques petites différences entre les fabricants, donc je recommande de double-vérifier par rapport à votre propre capteur.
HC-SR04 CAD
j’ai créé des dessins CAO de base du capteur à ultrasons HC-SR04 que vous pouvez télécharger ci-dessous.,
Conclusion
dans cet article, je vous ai montré comment fonctionne le capteur de distance à ultrasons HC-SR04 et comment vous pouvez l’utiliser avec Arduino. J’espère que vous avez trouvé utile et instructif. Si vous l’avez fait, veuillez le partager avec un ami qui aime aussi l’électronique!
projet personnel: il y a quelques mois, j’ai construit une installation murale interactive avec des amis. Nous avons utilisé environ 30 capteurs de distance à ultrasons pour détecter les personnes marchant devant le mur. Le mur comprenait des lumières et des effets sonores qui changeaient en fonction de la distance à laquelle les gens se tenaient.,
j’aimerais savoir quels projets vous envisagez de construire (ou avez déjà construit) avec le capteur de distance HC-SR04. Si vous avez des questions, des suggestions ou si vous pensez que des choses manquent dans ce tutoriel, veuillez laisser un commentaire ci-dessous.