Go Down

Topic: Compteur de voitures (Read 1 time) previous topic - next topic

nitrog51

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

dfgh

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


nitrog51

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 ?

dfgh

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.

nitrog51

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 ?

dfgh

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

nitrog51

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

dfgh

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.

nitrog51

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

dfgh

à la tienne :)

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

Code: [Select]
/*
 * ---------------------    --------------------
 * | 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
}

68tjs

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().

Code: [Select]

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);
}


<mode moqueur>
La bibliothèque est-elle nécessaire pour éviter d'écrire :
Code: [Select]
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.
<fin mode moqueur>
Les Shadocks : L'ignorance ne s'apprend pas.

dfgh

hello :)
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. :)

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.



lesept

#12
Aug 02, 2020, 10:41 am Last Edit: Aug 02, 2020, 10:45 am by lesept
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.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

nitrog51

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 ?

lesept

Je ne sais pas, je n'ai jamais essayé ce capteur. Il faut tester ou chercher si d'autres l'ont utilisé pour cela.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up