Compteur de voitures

Bonjour, tout le monde.
Je suis retraité et comme le covis19 m'oblige à rester à la maison, je m'intéresse à savoir comment marche une carte arduino.
Voilà ce que j'aimerai faire, depuis quelque temps le nombre de voiture qui passe devant ma maison à plus que doubler et j'aimerai savoir le nombre.
J'ai trouver un code mais il ne fonctionne pas juste.
matériel: carte uno, capteur HC-sr04 et un afficheur TM1637.

Dans l'attente de vos nouvelles, je vous souhaite une excellente journée
Nitrog1951

compteur3.ino (1.5 KB)

hello

es tu sur du fonctionnement du détecteur ultra-sons ?

fonctionne t'il correctement jusqu'à 4 mètres?

voit il un obstacle entre 10 cm et 400 cm? faire le test, en éloignant la cible du détecteur et en constatant qu'il voit bien quelque chose sur toute cette plage

Hello,
Merci de t'intéresser à mon cas, pour le détecteur c'est ce que j'ai lu sur internet, mon problème il détecte à - de 5cm et il s'affole ?

il faut tester ton capteur US en premier lieu, lorsqu'il sera validé, tu pourras aller plus loin.

donc:
dans "croquis", inclure une bibliothèque", "gérer une bibliothèque", une fenetre s'ouvre.
en haut à droite, une case dans laquelle tu écris "Ultrasonic" ( sans les guillemets)
tu verras plusieurs bibliothèques qui te seront proposées.
tu descend dans la liste et tu choisi "Ultrasonic par Eric Simoes" et tu cliques sur "installer"

puis dans "fichier","exemples", "ultrasonic", tu cliques sur "ultrasonic simple".

ensuite tu câbles ton capteur comme indiqué en début de l'exemple et tu valides ou pas le bon fonctionnement.

Le test est valable il compte chaque fois que je passe la main, mais si je laisse la main il ne s’arrête pas. Je pense que c'est peut être une question de délai ?

tu parles de quoi? de ton prg ou de l'essai avec la lib Ultrasonic?

Il me semble que l'essai est très positif, donc je pense que c'est plutôt le programme

dans ton prg, tu testes si présence d'obstacle entre 15cm et 400 cm

comme je doute un peu du 4 mètres, je te demande de verifier si effectivement une voiture qui passe à 4 metres est bien vue par le systeme.

Alors pour le 15 cm ça fonctionne, pour le 4 m j'essaye demain, maintenant je vais boire l'apéro (37,5 degré en Suisse à 800m d'altitude) dur, dur.

Merci pour ton aide.

A demain

à la tienne :slight_smile:

un code de départ qui fonctionne sur UNO
nota, n'ayant pas la volonté de faire un montage sérieux...,
la pin 5V étant déjà utilisée par le HCSC04,
j'ai alimenté l'afficheur avec la pin 12 configurée en sortie à HIGH
chez moi, le capteur sur la table, je détecte le plafond à 1.90metre
ce qui me semble correct.
seuls des essais te renseigneront sur la portée de ton capteur

/*
 * ---------------------    --------------------
 * | HC-SC04 | Arduino |    | 3 pins | Arduino |
 * ---------------------    --------------------
 * |   Vcc   |   5V    |    |   Vcc  |   5V    |
 * |   Trig  |   12    | OR |   SIG  |   13    |
 * |   Echo  |   13    |    |   Gnd  |   GND   |
 * |   Gnd   |   GND   |    --------------------
 * ---------------------
 */

#include <Ultrasonic.h>
#define TRIG A2
#define ECHO A3
Ultrasonic ultrasonic(TRIG, ECHO);
int distance=0;
#include <TM1637Display.h>
#define CLK 8
#define DIO 9
#define resetPin 4
#define VCC_1637 12  // pour alim de l'afficheur
TM1637Display display(CLK, DIO);
long numDisplay=000;
long compteur =0;
boolean presence = false;

void setup() {
  Serial.begin(1000000);
  pinMode(resetPin,INPUT_PULLUP);
  pinMode(VCC_1637,OUTPUT);
  digitalWrite(VCC_1637,HIGH);//pour alimentation de l'afficheur
  display.setBrightness(4);
  display.clear();
  delay(5);
  display.showNumberDecEx(numDisplay, false, true, 4, 0);
}
void loop() 
{
  if(!digitalRead(resetPin))
  {
    compteur=0;
  }
  distance = ultrasonic.read();
   if ((distance>10) && (distance<50))                    //selon la portée du capteur
   {
    presence = true;                         //si entre 10cm et 50cm, il y a une voiture devant le capteur 
  }                                                      //le flag de presence voiture est armé
 if ((distance > 50)&&(presence ==true))                 //si la voiture est passée, la distance augmente
 {
    compteur++;presence = false;                         //le compteur est incrémenté
    display.showNumberDecEx(compteur, false, true, 4, 0);//et on affiche le compteur
}
  Serial.print("Distance in CM: ");
  Serial.println(distance);
  delay(100);                                             //delai nécessaire entre deux mesures
}

Je reste perplexe devant cette mode d'utiliser des bibliothèques pour utiliser un HC-SR04.

Quand je me suis intéressé au HC-SR04 dans les exemples de l'IDE il n'y en avait un seul et qui simplement utilisait la fonction pulseIn().

void loop() {
// Clears the trigPin
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;

// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}
La bibliothèque est-elle nécessaire pour éviter d'écrire :
distance= duration*0.034/2;

AMHA si on ne fait plus d'effort pour comprendre ce que l'on fait ni comment fonctionne le matériel on va droit vers des ramollissements du cerveau.

hello :slight_smile:
je me suis dis la même chose, mais je voulais en premier lieu que notre ami teste son détecteur avec un exemple de librairie, donc un prg fiable et qui ne prête pas à discussion.
ensuite, je suis resté avec cette bibliothèque. :slight_smile:

moi je doute que ce détecteur soit adapté au comptage de voitures.
j'attends de savoir à quelle vitesse les voitures passent sur la route de notre ami.

On trouve pas mal de projets de ce genre sur internet. Google "arduino vehicle counter" donne plein de résultats, dont la plupart avec les HC-SR04.

Mais il doit aussi être possible d'utiliser un magnétomètre HMC5883L. Lors du passage d'une masse métallique à proximité, il doit être perturbé, ce qui permet la détection.

Ci-dessous la version I2C d'Adafruit :

En utilisant deux capteurs on peut déduire la direction, voire avoir une idée de la vitesse du véhicule. Et deux types de capteurs permettent de renforcer la détection et de diminuer les fausses détections.

Hello, alors la distance max et de 2,5 m après plus rien, donc insuffisant, il ne prend que les voitures au plus proche. De plus la vitesse est de 50 Kmh et il compte 3 voitures pour une.

Je sais pas si ce capteur est adapté pour ce projet ?

Je ne sais pas, je n'ai jamais essayé ce capteur. Il faut tester ou chercher si d'autres l'ont utilisé pour cela.

ou chercher si d'autres l'ont utilisé pour cela.

J'ai fais la recherche "arduino vehicle counter" comme suggéré, non pas avec gogole mais avec ddg, et ce n'est pas concluant sauf a compter des voiturettes de gamin.

Si on reprend le principe de fonctionnement de ces modules on voit qu'ils ne sont pas bien adaptés à l'usage de compteur de véhicules.
A chaque commande (impulsion de 10 µs sur l'entrée "trig") le module envoie une salve de 8 périodes de 40 kHz.
L'angle d'émission des transducteurs est de 60°.
A une distance de 4m la voiture reste sous le faisceau d'ultra son sur une longueur de 4,6 m (petit calcul de trigonométrie).

Deux paramètres entrent en jeux :

  • la fréquence choisie pour envoyer les salves
  • la vitesse du véhicule

A 50km/h soit 14m/s la voiture restera 4,6/14 = 0,33 secondes dans le champ des ultra sons.
En circulation ralentie à 30 km/h elle y restera 0,55 s.
Tout va dépendre de la fréquence choisie pour l'envoi des salves à 40 kHz. Elle ne devra pas être trop rapide pour ne pas compter plusieurs fois le même véhicule (comme ce qui arrive à nitrog51) ni trop lente pour ne pas rater des véhicules.
Le bon compromis ne me semble pas facile à trouver.
Peut être une solution pourrait être d'adapter la fréquence d'envoi des salve à la densité de circulation mais là aussi ça ne va pas être simple et la réussite n'est pas assurée.

Ce n'est pas en utilisant une bibliothèque que l'on apprend comment fonctionne ce module.

Pour le comptage de véhicules le tuyau en travers de la route associé a un capteur de pression semble encore être le procédé le plus souvent employé (comptage de passage d'essieux)

une question de débutant, et avec un capteur laser en place du HC-sr04 ?

oui, et le gars qui roule trop vite ou fait trop de bruit : tu le pulvérises

capteur laser ?

en faisant attention à ne pas griller les rétines des passagers des véhicules....

  • en coupure de faisceau , nécessite de positionner un récepteur ou un réflecteur de l'autre côté de la chaussée, +alignement critique

-en réflexion : un LIDAR du genre VL53L1X peut , plusieurs dizaines de fois par seconde, donner une mesure de distance de la cible à condition que celle ci soit suffisamment réfléchissante (pb de couleur des véhicules....)
portée : 4m pour ce modèle

.......à voir à l'oeuvre sur le terrain pour l'objectif recherché.....