Test du capteur ultrasonique HC-SR04

Simple test pour vérifier le fonctionnement du capteur de distance avec un Arduino, et du code JavaScript.

Ce composant envoie des ultrasons et détermine la distance d'un objet à partir du temps mis par le signal à revenir au point de départ, une fois réfléchi sur cet objet. Comme une chauve-souris, mais en mode silencieux! Il est très utile pour automatiser sa maison. Par exemple on peut déclencher l'éclairage dans une pièce quand le capteur détecte que l'on passe par la porte, puis éteindre quand on repasse dans l'autre sens... Ce n'est qu'un exemple d'application parmi des centaines... Et bien sûr, son intérêt est évident pour éviter à un robot de se cogner contre les objets...

Pour le test, on placera l'émetteur face au vide, et si on se trouve dans une salle, il affichera au départ la distance du mur en face... Un moyen facile de calculer les dimensions d'une salle! Pour le test, on posera un objet juste devant l'émetteur et le programme affichera dans la console la distance entre l'objet et le montage en centimètres.

Composants

Montage

Le composant HC-SR04 est enfiché directement sur la carte de prototypage.

Il dispose de 4 connecteurs:

La distance est déterminée par une formule qui calcule le temps entre l'envoi du signal et le retour du signal réfléchi sur un objet, multipliée par la vitesse et divisée par 2. Mais quand on programme en JavaScript, tout ceci est pris en charge par le framework JF, qui indique juste la distance en centimètres (ou en pouces pour les américains).

Capteur de distance

Ce n'est pas très facile à voir sur le schéma, mais les broches Trig et Echo sont reliées entre elles par un cavalier.
Ce montage est spécifique à JavaScript et JF, si on avait utilisé du code C, on aurait relié les deux broches à deux ports de l'Arduino.

Photo du montage:

Test du capteur de distance hc-sr04

Le code JavaScript

Le code ne fonctionne pas directement avec le pilote Standard Firmata, il faut patcher celui-ci pour ajouter une instruction, et donc remplacer le pilote que vous déjà avez chargé dans votre Arduino, par cette version. Ce code vient du wiki de Johnny-Five.

Remplacez le code Standard Firmata dans l'IDE Arduino par ce code est mettez à jour le microcontrôleur comme expliqué dans la page d'introduction.

Installez la bibliothèque JavaScript sur votre ordinateur:

npm install johnny-five 

Ensuite vous pouvez lancer ce programme:

let five = require("johnny-five");
let board = new five.Board();

board.on("ready", function() {
  var ping = new five.Ping(4);     // port digital 4
  ping.on("change", function(err,val) {
    console.log("Distance " + this.cm + " cm");
  });
});

Vous pouvez ensuite placer la main à des distances différentes devant le capteur pour vérifier le fonctionnement.

Dépannage

Rien ne s'affiche

Avez vous mis à jour le pilote Firmata? Cela ne peut fonctionner sans cela.

Le programme affiche des valeurs fantaisistes

C'est sûrement un problème de câblage. Vérifiez bien que les fils soient reliés aux bons ports. Essayez aussi un autre port digital, le montage actuel utilise le port 4, remplacez par exemple 4 par 8 dans le code et reliez le fil du signal au port digital 8.