materiels:capteurs:distance:distus

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
materiels:capteurs:distance:distus [2022/07/07 09:42] – [2.2 Module VMA306 à capteur HC-SR05] philmateriels:capteurs:distance:distus [2024/05/03 12:39] (Version actuelle) – [2.1 HC-SR04 (GPIO)] phil
Ligne 3: Ligne 3:
 ===== Capteurs - Distance - Ultrasons ===== ===== Capteurs - Distance - Ultrasons =====
  
-[Mise à jour le 7/7/2022]+[Mise à jour le 3/5/2024]
  
   * **Lectures connexes**   * **Lectures connexes**
     * <html><a href="http://guide.directindustry.com/fr/bien-choisir-un-capteur-de-proximite/" target="_blank">Bien choisir un capteur de proximité</a></html>     * <html><a href="http://guide.directindustry.com/fr/bien-choisir-un-capteur-de-proximite/" target="_blank">Bien choisir un capteur de proximité</a></html>
-    * <html><a href="https://www.eeca.eu/meilleur-capteur-ultrason/" target="_blank">Comment choisir le meilleur capteur ultrason</a></html>+    * <html><a href="https://www.eeca.eu/meilleur-capteur-ultrason/" target="_blank">Comment choisir le meilleur capteur à ultrason</a></html>
     * Vidéo - <html><a href="https://www.youtube.com/watch?time_continue=143&v=Ht4lavMyy3E&feature=emb_logo" target="_blank">Exemples d'applications</a></html>     * Vidéo - <html><a href="https://www.youtube.com/watch?time_continue=143&v=Ht4lavMyy3E&feature=emb_logo" target="_blank">Exemples d'applications</a></html>
  
Ligne 18: Ligne 18:
 Les ultrasons sont utilisés dans l'industrie ainsi que dans le domaine médical. <html><a href="https://fr.wikipedia.org/wiki/Ultrason" target="_blank">Wikipédia</a></html> Les ultrasons sont utilisés dans l'industrie ainsi que dans le domaine médical. <html><a href="https://fr.wikipedia.org/wiki/Ultrason" target="_blank">Wikipédia</a></html>
  
 +{{ :materiels:capteurs:wikiversite.jpg?nolink&50|}}
 +  * // **Ressources** // 
 +    * <html><a href="https://fr.wikiversity.org/wiki/Rudiments_d%27acoustique/Quelques_d%C3%A9finitions" target="_blank">Rudiments d'acoustique : Quelques définitions</a></html>
 +
 +<callout type="tip" title="Principe de fonctionnement des capteurs HC-SR0x" icon="true">Voir l'article sur le "Carnet du maker" <html><a href="https://www.carnetdumaker.net/articles/mesurer-une-distance-avec-un-capteur-ultrason-hc-sr04-et-une-carte-arduino-genuino/" target="_blank"><b>ici</b></a></html> </callout>
 ==== 2. Capteurs numériques ==== ==== 2. Capteurs numériques ====
  
-=== 2.1 HC-SR04 ===+=== 2.1 HC-SR04 (GPIO) ===
 {{ :materiels:capteurs:hc-sr04.png?nolink&150|HC-SR04}} {{ :materiels:capteurs:hc-sr04.png?nolink&150|HC-SR04}}
-  * //**Source**// : <html><a href="https://www.carnetdumaker.net/articles/mesurer-une-distance-avec-un-capteur-ultrason-hc-sr04-et-une-carte-arduino-genuino/" target="_blank">wiki</a></html>+ 
 +== 2.1.1 Présentation == 
 +  * //**Source**// : <html><a href="https://www.gotronic.fr/pj2-hc-sr04-utilisation-avec-picaxe-1343.pdf" target="_blank">pdf</a></html>
  
 <callout type="info" icon="true">Ce module permet d’évaluer les distances entre un objet mobile et les obstacles rencontrés. Il suffit d'envoyer une impulsion de 10 µs en entrée et le capteur renvoie une largeur d'impulsion proportionnelle à la distance.</callout> <callout type="info" icon="true">Ce module permet d’évaluer les distances entre un objet mobile et les obstacles rencontrés. Il suffit d'envoyer une impulsion de 10 µs en entrée et le capteur renvoie une largeur d'impulsion proportionnelle à la distance.</callout>
Ligne 102: Ligne 109:
 } }
 </code> </code>
 +
  
 {{ :arduino:uc:platformioico.png?nolink&50|}} {{ :arduino:uc:platformioico.png?nolink&50|}}
Ligne 110: Ligne 118:
 ---- ----
    
-=== 2.2 Module VMA306 à capteur HC-SR05 ===+ 
 +=== 2.2 HC-SR05 (GPIO) ===
 {{ :materiels:capteurs:hc-scr05.png?nolink&150|VMA306}} {{ :materiels:capteurs:hc-scr05.png?nolink&150|VMA306}}
  
 +== 2.2.1 Présentation ==
   * //**Source**// : <html><a href="https://www.velleman.eu/downloads/29/vma306_a4v01.pdf" target="_blank">pdf</a></html>   * //**Source**// : <html><a href="https://www.velleman.eu/downloads/29/vma306_a4v01.pdf" target="_blank">pdf</a></html>
  
Ligne 137: Ligne 147:
     * //Connexion à un shield// <html><a href="https://webge.fr/doc/wikis/pdf/TinkerkitV2.pdf" target="_blank">Tinkerkit v2</a></html>. {{ :materiels:capteurs:hcsr05.jpg?nolink&600 |}}     * //Connexion à un shield// <html><a href="https://webge.fr/doc/wikis/pdf/TinkerkitV2.pdf" target="_blank">Tinkerkit v2</a></html>. {{ :materiels:capteurs:hcsr05.jpg?nolink&600 |}}
     * // Un premier exemple // {{ :materiels:capteurs:distance:arduinoico.png?nolink&30|}}     * // Un premier exemple // {{ :materiels:capteurs:distance:arduinoico.png?nolink&30|}}
-<file cpp HCSR05.cpp>+<code cpp HCSR05.cpp>
 /////////////////////////////////////////////// ///////////////////////////////////////////////
-// Programme test pour capteur HC-SR05 // +// Programme test pour capteur HC-SR05       // 
-// Go Tronic 2017 //+// Go Tronic 2017                            //
 /////////////////////////////////////////////// ///////////////////////////////////////////////
 #define trigPin 10 // Tinkerkit O1 #define trigPin 10 // Tinkerkit O1
Ligne 179: Ligne 189:
     delay(500); // délai entre deux mesures     delay(500); // délai entre deux mesures
 } }
-</file>+</code>
  
  
Ligne 187: Ligne 197:
  
 ---- ----
 +
 +=== 2.3 HC-SR04P (GPIO - I2C - UART) ===
 +{{ :materiels:capteurs:distance:hc-sr04p.png?nolink&150|JOY-IT HC-SR04P}}
 +
 +== 2.3.1 Présentation ==
 +<callout type="info" icon="true">Ce transducteur ultrason à base de HC-SR04P délivre un signal proportionnel à la distance qui le sépare d'un obstacle. Le signal pourra être récupérer directement via des **GPIO**, une interface **UART** ou **I2C**. Ce qui le rend compatible avec la plupart des microcontrôleurs (Arduino® ou compatible, Raspberry Pi, etc...).</callout>
 +
 +  * //**Distributeur**// : <html><a href="https://www.lextronic.fr/capteur-ultrasons-hc-sr04p-64393.html" target="_blank">Lextronic</a></html>
 +
 +  * //**Caractéristiques**//
 +    * Capteurs: <html><a href="https://www.gotronic.fr/pj2-hc-sr04-utilisation-avec-picaxe-1343.pdf" target="_blank" title="pdf">HC-SR04</a></html>
 +    * Tension d'alimentation: 3 Vcc à 5,5 Vcc
 +    * Interface: GPIO / UART / I2C (**SLA** = **0x57**)
 +    * Niveau logique: 3,3 Vcc / 5Vcc
 +    * Consommation: 15 mA (< 3mA au repos)
 +    * Angle de mesure: < 15°
 +    * Portée de détection: 2 à 450 cm
 +    * Précision: 0,3 cm
 +    * Connecteur mâle 4 broches coudé pré-soudé (pas 2,54 mm): Vcc/Trig/Echo/GND
 +    * Dimensions: 45,5 x 20,3 x 15,5 mm
 +
 +  * //**Configuration**// de M1 et M2 sur le CI (1 : R10k à ajouter) \\ **M1 M2** \\ 0 0 : GPIO \\ 1 0 : I2C \\ 1 1 : 1-wire \\ 0 1 : UART \\
 +
 +{{ :materiels:capteurs:acrobate.gif?nolink&30|}}
 +  * //**Documentation**// 
 +    * Fichier Acrobat Reader à télécharger <html><a href="https://webge.fr/doc/projets/datasheets/SEN-US01.pdf" target="_blank">ici</a></html>
 +
 +\\
 +
 +
 +{{ :materiels:capteurs:environnement:code.png?nolink|}}
 +== 2.3.2 Exemples de code == 
 +<tabs>
 +  * [[#tab-hcsr04pduinogpio_1|Arduino UNO (GPIO)]]
 +  * [[#tab-hcsr04pduinoi2c_1|Arduino UNO (I2C)]]
 +  * [[#tab-hcsr04pduinouart_1|Arduino UNO (UART)]]
 +  * [[#tab-hcsr04pico_1|Rpi Pico (µPython)]]
 +
 +<pane id="tab-hcsr04pduinogpio_1">
 +  * //**Ressources**// : <html><a href="https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/" target="_blank">pinMode()</a></html> | <html><a href="https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/" target="_blank">pulseIn()</a></html> | <html><a href="https://www.arduino.cc/reference/en/language/functions/communication/serial/" target="_blank">serial</a></html>
 +
 +  * //**Exemple** utilisant les **GPIO** pour tester le capteur//
 +<code cpp *.cpp>
 +// Arduino MKR sur Arduino MKR Connector
 +// Connexion sur le connecteur D5 D6B
 +const int echo = 6;
 +const int trigger = 5;
 +
 +float distance, duration;
 +
 +void setup() {
 +  Serial.begin(9600);
 +  pinMode(echo, INPUT);
 +  pinMode(trigger, OUTPUT);
 +}
 +
 +void loop() {
 +  digitalWrite(trigger, HIGH);  // Mesure de la distance en utilisant une impulsion de 10us
 +  delayMicroseconds(10);
 +  digitalWrite(trigger, LOW);
 +  duration = pulseIn(echo, HIGH);
 +  distance = duration * 340 / 2 / 10000;
 +  if (distance < 2 || distance > 450) {  // On vérifie si la valeur mesurée se situe dans l'intervalle prévu
 +    Serial.println("Distance en dehors de l'intervalle de mesure");
 +  } else {
 +    Serial.println("distance: " + String(distance) + " cm");  // Affichage dans la console
 +  }
 +  delay(3000);  // Attente entre 2 mesures
 +}
 +</code>
 +</pane>
 +
 +<pane id="tab-hcsr04pduinoi2c_1">
 +  * //**Ressource**// : <html><a href="https://www.arduino.cc/reference/en/language/functions/communication/wire/" target="_blank">Wire</a></html>
 +
 +  * //**Exemple** utilisant l'**I2C** pour tester le capteur//
 +<code cpp *.cpp>
 +// Arduino MKR sur Arduino MKR Connector
 +// Connexion sur le connecteur TWI
 +#include <Wire.h> 
 +
 +int     address = 0x57;     // i2c address of SEN-US01
 +float   distance;
 +long int     bytes[3];
 +
 +void setup(){
 +    Serial.begin(9600);
 +    Wire.begin();
 +}
 +
 +void loop(){
 +    Wire.beginTransmission(0x57);   // Start measurement
 +    Wire.write(0x01);
 +    Wire.endTransmission();
 +
 +    delay(200); // Wait 200 ms 
 +
 +    Wire.requestFrom(0x57,3);       // Read 3 bytes from sensor
 +    int i = 0;
 +    while(Wire.available()){
 +        bytes[i++] = Wire.read();
 +    } 
 +    
 +    distance = ((bytes[0] << 16) + (bytes[1] << 8) + bytes[2]) / 10000;     // Calculate distance based on received bytes
 +
 +    if (false){        // Checking whether measured value is within the permissible distance
 +        Serial.println("distance is outside of the measuring range");   // If not, an error message is output
 +    }
 +    else{
 +        Serial.println("distance: " + String(distance) + " cm");    // The calculated distance is output to the console
 +    }
 +    delay(3000);    // Pause between the individual measurements
 +}
 +</code>
 +</pane>
 +
 +<pane id="tab-hcsr04pduinouart_1">
 +  * //**Ressource**// : <html><a href="https://docs.arduino.cc/learn/built-in-libraries/software-serial/" target="_blank">SoftwareSerial Library</a></html>
 +
 +  * //**Exemple** utilisant l'**UART** pour tester le capteur//
 +<code cpp *.cpp>
 +// Arduino MKR sur Arduino MKR Connector
 +// Connexion sur le connecteur SERIAL
 +
 +#include <SoftwareSerial.h>
 +
 +SoftwareSerial ser(A4,A5); // initialize a serial connection (software)
 +float   distance;
 +long int     bytes[3];
 +
 +void setup(){
 +    Serial.begin(9600);     // start serial connection to computer
 +    ser.begin(9600);        // start serial connection to sensor
 +}
 +
 +void loop(){
 +    ser.flush();    // clear communication
 +    ser.write(0xA0);    // start measurement 
 +    delay(200); // Wait 200 ms 
 +    
 +    for (int i = 0; i < 3; i++) bytes[i] = ser.read();  // Read 3 bytes from sensor
 +
 +    distance = ((bytes[0] << 16) + (bytes[1] << 8) + bytes[2]) / 10000;     // Calculate distance based on received bytes
 +
 +    if (false){        // Checking whether measured value is within the permissible distance
 +        Serial.println("distance is outside of the measuring range");   // If not, an error message is output
 +    }
 +    else{
 +        Serial.println("distance: " + String(distance) + " cm");    // The calculated distance is output to the console
 +    }
 +    delay(3000);    // Pause between the individual measurements
 +}
 +</code>
 +</pane>
 +
 +<pane id="tab-hcsr04pico_1">
 +A venir
 +</pane>
 +</tabs>
 +
  • materiels/capteurs/distance/distus.1657179744.txt.gz
  • Dernière modification : 2022/07/07 09:42
  • de phil