HC-SR04 - Distance

Bonjour,

Je viens d'acquérir un Wemos Mini D1 Lite & HC-SR04 que j'essaie de faire fonctionner.

J'ai suivi à la lettre ce tuto http://www.likecircuit.com/iot-distance-sensor-hc-sr04-wemos-d1-mini/ mais la distance reste à zéro.

J'ai testé une alimentation de télépone portable (5V) et en USB via le port du Wemos mais même problème.

Faut-il utiliser une alimentation dédiée au HC-SR04 ?

Merci pour vos conseils :slight_smile:

Bonjour sais-tu joindre quelques photos de ton montage. Il faut savoir aussi que suivant les capteurs ultrason il y en a à 4 bornes et d'autres à 5 bornes. Et enfin très important les bibliothèques il faut avoir les dernières mises à jour mais ce n'est pas tout certains modifient eux-même les bibliothèques officielles il faut alors impérativement charger leur bibliothèque et pas l'officielle.
Après tous ces contrôles on peut seulement s'attaquer au code...

On peut l'alimenter depuis la carte uno ça marche.

didiersee:
Bonjour sais-tu joindre quelques photos de ton montage. Il faut savoir aussi que suivant les capteurs ultrason il y en a à 4 bornes et d'autres à 5 bornes. Et enfin très important les bibliothèques il faut avoir les dernières mises à jour mais ce n'est pas tout certains modifient eux-même les bibliothèques officielles il faut alors impérativement charger leur bibliothèque et pas l'officielle.
Après tous ces contrôles on peut seulement s'attaquer au code...

Bonjour,

Merci pour votre réponse.
Voici une photo : IMG 20180818 112101 hosted at ImgBB — ImgBB

Fil rouge : VCC sur le capteur et Wemos
Fil noir : GND sur le capteur et Wemos
Fil blanc : Trigger sur le capteur et D5 sur Wemos
Fil jaune : Echo sur le capteur et D6 sur Wemos

Le tout est alimenté en USB.

Voici mon code :

J'ai essayé de mettre D5 et D6 sur les PINs.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

// WIFI
const char* ssid = "monssid";
const char* password = "password";
IPAddress ip(monIP);
IPAddress gateway(monIP);
IPAddress subnet(255,255,255,0);

ESP8266WebServer server(80);

// defines pins numbers trigger and echo
const int trigPin = 14;  //Digital port D5
const int echoPin = 12;  //Digital port D6

// defines variables
long duration;
float distance;
float Mdistance;

const int led = LED_BUILTIN;

void setup(void){
  pinMode(led, OUTPUT);
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print("...");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  server.on("/", webserver);
  server.onNotFound(handleNotFound);
  server.begin();
}

void loop(void){
  server.handleClient();

  distanceData();
  delay(500);
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
}

void distanceData(){
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  
  // Calculating the distance
  distance= (duration*0.034)/2;
  }

void webserver() {
  digitalWrite(led, !digitalRead(led));
  distanceData();
  String content = "<html> <head> <meta http-equiv='refresh' content='1'> </head><body>";
  content += "<center><h2>The distance is: ";
  content += distance;
  content += " cm </h2></center> </body></html>";
  server.send(200, "text/html", content);
}

void handleNotFound(){
  digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  server.send(404, "text/plain", message);
  digitalWrite(led, 0);
}

Bonjour,

On dirait que les pins ne sont pas soudées sur la carte. Est ce qu'elles sont affectivement bien soudées ?

D’après ce que je vois sur ce site
le 5v alimente le wemos mais pas le capteur ultrason. Le plus simple est de mesurer avec un voltmètre si tu as bien du 5v sur ton capteur sinon tu alimentes ton wemos avec la prise usb et tu prends une autre alimentation de 5v pour ton capteur ATTENTION tu ne dois pas mettre les alimentations en parallèle mais bien les GND et uniquement les GND donc les masses.
A bientôt

kamill:
Bonjour,

On dirait que les pins ne sont pas soudées sur la carte. Est ce qu'elles sont affectivement bien soudées ?

Bonjour,

Je n'ai rien soudé. Je pensais qu'en utilisant une breadboard, ce n'était pas nécessaire.
Je pense que le problème vient de là. Si je joue un peu avec les fils, j'obtiens des valeurs, mais aléatoires et erronées :frowning:

Soudure obligatoire des pins !

bien vu effectivement il faut commencer par souder les pins :slight_smile:

Je viens de tout souder mais j'ai toujours le problème initial :frowning:

As tu vérifié au voltmètre que les tensions sur les pins du Wemos ont bien la tension attendue ?

Est-ce que tu peux renvoyer une nouvelle photo du câblage.
Sur l'ancienne je ne sais pas quoi penser à cause de l'effet de parallaxe mais des connexions me semblaient douteuses.
Pour éviter ce défaut essaye de prendre la photo bien au dessus de la plaque en tenant l'appareil bien horizontal.

J'ai bien 4,7 V sur les bornes du Wemos et du capteur.

Je remets ci-joint une photo des branchements : IMG 20180821 185459 hosted at ImgBB — ImgBB

  • Fil rouge : VCC sur le capteur et Wemos
  • Fil noir : GND sur le capteur et Wemos
  • Fil blanc : Echo sur le capteur et D5 sur Wemos
  • Fil jaune : Trigger sur le capteur et D6 sur Wemos

derf911:
J'ai bien 4,7 V sur les bornes du Wemos et du capteur.

Je remets ci-joint une photo des branchements : IMG 20180821 185459 hosted at ImgBB — ImgBB

  • Fil rouge : VCC sur le capteur et Wemos
  • Fil noir : GND sur le capteur et Wemos
  • Fil blanc : Echo sur le capteur et D5 sur Wemos
  • Fil jaune : Trigger sur le capteur et D6 sur Wemos

Bonjour,

Auriez-vous une piste ?

Est ce que tout se passe bien quand tu téléverses le code sur ta carte?

Bonjour,

Oui aucune erreur lors de la compilation ou transfert vers la carte.

Le mieux est de reprendre le test matériel depuis le début et avancé ainsi de suite avec le wifi en plus etc.
Commence par faire un test simple de ton capteur en procédant comme ceci bien sûr adapte les bons numéros de pin sur ta carte avec le code.
Si ça fonctionne on passera à l'étape suivante.

didiersee:
Commence par faire un test simple de ton capteur

+1

Branchez le hc-sr04 sur 3.3V ou utilisez un convertisseur 5V-3.3V.

La pin D5 (ECHO) a pris du 5V alors que le Wemos ne tolère que 3.3V. Choisissez-en une autre. Je changerais la pin du TRIGGER aussi, pour recommencer propre.

didiersee:
Le mieux est de reprendre le test matériel depuis le début et avancé ainsi de suite avec le wifi en plus etc.
Commence par faire un test simple de ton capteur en procédant comme ceci bien sûr adapte les bons numéros de pin sur ta carte avec le code.
Si ça fonctionne on passera à l'étape suivante.

merci pour votre aide !

J'ai suivi le lien mais sans succès.

j'ai câblé comme suit :

  • D1 = Trigger
  • D2 = Echo
  • Branchement sur 5V du HC-SR04 et test sur 3.3V

Bizarre je viens d'essayer le lien ça fonctionne il faut attendre un peu bien sûr.
Sinon essaye ici alors

Je précise que si je débranche / rebranche le fil 5V sur le Wemos, j'obtiens des valeurs différentes de zéro mais qui restent aléatoires.