Mysensors HC-SR04 : mesure de distance

mysensors_hc-sr04_arduino

30 mar Mysensors HC-SR04 : mesure de distance

Pour ce deuxième article Mysensors, Nous allons utiliser le capteur HC-SR04 pour mesurer une distance.

Ce  capteur de distance à ultrason (HC-SR04) peut mesurer des distances de 2 centimètres à 5 mètres.

Il peut être utiliser pour mesurer le niveau de fioul d’une cuve, détecter un passage, la présence d’un objet (poubelle, voiture…).

Il fonctionne en envoyant des impulsions ultrasons, qui sont inaudibles pour l’homme. Puis il attend le retour des impulsions à son microphone. Le HC-SR04 calcule alors la distance en mesurant le délai aller-retour pour chaque impulsion.

SCHÉMA MYSENSORS HC-SR04

Rien de bien compliqué…
Le schéma Arduino/NRF24L01 est identique à celui du gateway.
Pour celui du HC-SR04, la masse (GND), l’alimentation 5V (Vcc) puis les deux câbles de communication (Trig et Echo).

MySensors Arduino HC-SR04

Mysensors hc-sr04 mesure de distance

Ci-dessous le tableau des couleurs pour le Mysensors HC-SR04. La couleur est bien entendu un exemple. Vous pouvez prendre celle de votre choix.

Couleur NRF24L01 Arduino nano Couleur HC-SR04 Arduino nano
Violet Vcc 3v3 noir GND GND
Rose GND GND rouge Vcc 5V
Orange SCK D13 violet Trig D6
Cyan CE D9 violet Trig D6
Bleu MISO D12 brun Echo D5
Vert MOSI D11
Gris CSN D10

SKETCH MYSENSORS HC-SR04

#include <SPI.h>
#include <MySensor.h>
#include <NewPing.h>

#define CHILD_ID 1
#define TRIGGER_PIN  6  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     5  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 300 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
unsigned long SLEEP_TIME = 5000; // Sleep time between reads (in milliseconds)

MySensor gw;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
MyMessage msg(CHILD_ID, V_DISTANCE);
int lastDist;
boolean metric = true; 

void setup()
{
  gw.begin();

  gw.sendSketchInfo("Distance Sensor", "1.0");

  gw.present(CHILD_ID, S_DISTANCE);
  boolean metric = gw.getConfig().isMetric;
}

void loop()
{
  int dist = metric?sonar.ping_cm():sonar.ping_in();

  if (dist != lastDist) {
      gw.send(msg.set(dist));
      lastDist = dist;
  }

  gw.sleep(SLEEP_TIME);
}

Ligne 1 à 3 : Déclaration des librairies utilisées
Ligne 5 à 9 : Déclaration des constantes

  • CHILD_ID : ID du sensor. Notre capteur pourrait avoir d’autres sensor tel qu’un autre HC-SR04 ou un relais, une led…
  • TRIGGER_PIN : pin utilisé sur l’arduino nano pour le trigger du HC-SR04
  • ECHO_PIN : pin utilisé sur l’arduino nano pour l’écho du HC-SR04
  • MAX_DISTANCE : distance maximale en cm mesurable par le HC-SR04. Le HC-SR04 permet de mesurer jusqu’à 400-500 cm. Afin d’obtenir une valeur à 0 au lieu d’une valeur non pertinente, nous renseignons la distance max supporté par notre HC-SR04 (la distance max variant d’un HC-SR04 à l’autre).
  • SLEEP_TIME : temps de sommeil en millisecondes entre deux mesures. Si vous n’êtes pas sur batterie, ce délai peut être faible. La transmission radio ne sera effectuée uniquement si la valeur change entre deux mesures.

Ligne 11 à 15 : Définition des variables globales
Ligne 17 à 25 : Programme exécuté au démarrage de l’arduino nano
Ligne 27 à 37 : programme principal de l’arduino nano.

  • On mesure la distance : int dist = metric?sonar.ping_cm():sonar.ping_in();
  • Si la mesure à changée depuis la dernière lecture : if (dist != lastDist) {
  • On transmet la valeur : gw.send(msg.set(dist));
  • On actualise la dernière valeur lue : lastDist = dist;
  • Puis on se met en sommeil : gw.sleep(SLEEP_TIME);

TELECHARGER SKETCH MYSENSORS HC-SR04

Le sketch est à sauvegarder dans Bibliothèques/Documents/Arduino.
Vous le retrouverez ainsi dans votre carnet de croquis sous Arduino.

Mysensors HC-SR04 Sketch (298)

 

TELECHARGER BIBLIOTHEQUE MYSENSORS HC-SR04

Les librairies MysenSors HC-SR04 sont à sauvegarder dans le répertoire « libraries » de votre installation de votre logiciel Arduino.

Mysensors Bilibothèque HC-SR04 (314)

 

Guide d’achat


HC-SR04
permet la mesure de distance par ultrason

1,52 €
1,78 €



Arduino Nano ATmega328
L’ATmega328 a 32 ko de mémoire flash dont 2 ko utilisé pour le bootloader, 2 ko de SRAM et 1 ko d’EEPROM.

2,86 €
5,70 €



10pcs NRF24L01 + 2.4GHz Wireless Transceiver
Emetteur/Récepteur radio permettant à vos capteurs de communiquer ensemble. La portée de cet émetteur/récepteur est donné à 60 mètres.

7,96 €
14,44 €



Câble 40pcs 20cm Male/Femelle
Câble pour le montage de vos arduino et vos capteurs.

1,00 €
2,58 €



Breadboard Carte d’expérimentation 400 points
Câble pour le montage de vos arduino et vos capteurs.

3,90 €
1,78 €

Be Sociable, Share!
Tags:
,
No Comments

Sorry, the comment form is closed at this time.