November 22, 2011
by astondb8
Bonjour
Quitte à utiliser un capteur et faire des tests pour voir comment l’utiliser, autant publier ces tests afin qu’ils puissent servir à d’autres.
Nous allons donc voir comment brancher, utiliser ce capteur, mais avant tout, nous devons savoir que je HC-SR04 est un capteur ultrason facilement utilisable avec les cartes Arduino.
En fait pour çetre franc, c’est la copie Tawanaise du SRF04 de Devantech. Il est donné par son constructeur pour travailler entre 3 Cm et 3m.
Mais (en tout cas la copie que je test) n’est reelement precis que de 3 Cm à 2 m.
Son cone est assez large ce qui fait qu’il est facilement perturbé par des objets ou des murs qui ne sont normalement pas dans son champs de travail. Il est donc préférable de l’utiliser pour des applications de détections assez proches.
Vous trouverez ICI un comparatif des différents Sonars Devantech
Coté agréable de ce clone, il fonctionne tres bien avec la biblioteque du Sonar SRF04. Il est donc très simple à mettre en ouvre.
Le câblage
Pour ce montage, j’utilise une Arduino Nano pour le rendre portable. Mais in est bien sur tres simple de transposer ce Shéma pour une Ono ou un Mega.
Seule difference notoire, le Bus I2C
Analogique A4 SDA et A5 SCL sont les Pins à utiliser pour la Nano et la Uno
Les Pins pour la Mega sont 20 SDA et 21 SCL
Pour rendre cet exemple portable je fais l’affichage sur un écran LCD I2C Mais vous pouvez bien sur utiliser l’affichage sur le serial monitor de votre PC ou un autre modèle d’afficheur. Vous devrez bien sur adapter ce code en fonction de votre choix.
Les bibliothèques utilisées sur cet exemples sont :
Wire.h Pour l’I2C
CLCD.h pour le LCD I2C (Cette Lib a été ecrite par Julien (Luj) de Pobot) Voir l’article qu’il a fait a ce sujet
Ultrasonic.h pour le capteur
Le code
#include "Ultrasonic.h"
#include <Wire.h>
#include "CLCD.h"
RTC_Millis RTC;
CLCD lcd(0x00,16,2);
int pingPin = 13;
int inPin = 12;
void setup() {
lcd.clear(); // Effacer le LCD
lcd.backlight(); // Allumer le backlight du LCD
Serial.begin(57600);
Serial.println("testing...");
}
void loop() {
long duration, inches, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
pinMode(inPin, INPUT);
duration = pulseIn(inPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
lcd.setCursor(0,0);
lcd.print("Inch: ");
lcd.print(inches);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.setCursor(1,0);
lcd.print("Cm: ");
lcd.print(cm);
lcd.print(" ");
delay(100);
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
Quelques photos du montage
Voila
J’espère que ça vous a intéressé.
A bientôt pour un autre Tuto 😉
Yves