Créer un compteur de passage ‘COVID-Like’ – Arduino

– Nous allons ici créer un compteur de passage COVID-Like.

Ce compteur de passage permet de gérer le flux des personnes présentes dans un magasin. Nous devons donc définir un nombre maximum de clients.
S’il y a moins de clients que la limite, nous autorisons les clients à entrer dans le magasin à l’aide d’une Led verte.
S’il y a plus de clients que la limite, nous refusons l’entrée des clients dans le magasin, à l’aide d’une Led rouge.

Nous allons utiliser ici :
– Une carte Arduino
– Deux modules HC04
– Une LED Verte, Une Led Rouge

Un capteur est placé à l’entrée du magasin, et un autre capteur est placé à la sortie du magasin.

Dans le code suivant, nous détectons une personne lorsqu’elle passe à 50 cm du capteur.
Nous limitons le nombre de clients dans le magasin à 10 personnes.

Si le nombre de personnes est supérieur à 10, nous interdisons l’entrée dans le magasin par une Led Rouge. SI ce nombre est inférieur à 10, nous permettons l’entrée dans le magasin avec une Led Verte.

Si une personne est entrée, nous ajoutons 1 au compteur. Lorsqu’une personne est sortie, nous retirons 1 au compteur.

Câblage :

Code :

// Capteur HC04 - Entrée du magasin
int trig_c1 = 6;
int echo_c1 = 7;
float lecture_echo_c1;
float distance_c1;

// Capteur HC04 - Sortie du magason
int trig_c2 = 8;
int echo_c2 = 9;
float lecture_echo_c2;
float distance_c2;

// LEDs
int led_rouge = 11;
int led_verte = 12;

// Distance permettant de définir si une personne est entrée. Ici, 50cm.
int capture = 50;

// Initialisation de la variable permettant de compter
int compteur;

// Déterminer ici la limite du nombre de clients dans le magasin
int limite = 10;


void setup()
{
// Capteur HC04 - Entrée du magasin
pinMode(trig_c1, OUTPUT);
digitalWrite(trig_c1, LOW);
pinMode(echo_c1, INPUT);

// Capteur HC04 - Sortie du magasin
pinMode(trig_c2, OUTPUT);
digitalWrite(trig_c2, LOW);
pinMode(echo_c2, INPUT);

//Leds
pinMode(led_rouge, OUTPUT);
pinMode(led_verte, OUTPUT);

// Liaison Série
Serial.begin(9600);
}

void loop()
{
// Lecture de la distance sur le capteur à l'entrée du magasin
digitalWrite(trig_c1, HIGH);
delayMicroseconds(10);
digitalWrite(trig_c1, LOW);
lecture_echo_c1 = pulseIn(echo_c1, HIGH);
distance_c1 = lecture_echo_c1 / 58;
Serial.print("Distance - Capteur 1 : ");
Serial.println(distance_c1);

delay(100);

// Lecture de la distance sur le capteur à la sortie du magasin
digitalWrite(trig_c2, HIGH);
delayMicroseconds(10);
digitalWrite(trig_c2, LOW);
lecture_echo_c2 = pulseIn(echo_c2, HIGH);
distance_c2 = lecture_echo_c2 / 58;
Serial.print("Distance - Capteur 2 : ");
Serial.println(distance_c2);

delay(100);

Serial.println("");

// Si une personne est detectée à l'entrée du magasin
// Ici, la personne doit passer à moins de 50cm du capteur
if (distance_c1 < capture && distance_c2 > capture) {
// On ajoute 1 au compteur
compteur = compteur + 1;
}
// Si une personne est detectée à la sortie du magasin
// Ici, la personne doit passer à moins de 50cm du capteur
if (distance_c1 > capture && distance_c2 < capture) {
// On retire 1 au compteur
compteur = compteur - 1;
}

// Si le compteur est inférieur à la limite
// On autorise l'entrée
if (compteur < limite) {
digitalWrite(led_verte, 1);
digitalWrite(led_rouge, 0);
}
// Si le compteur est supérieur à la limite
// On refuse l'entrée
if (compteur > limite) {
digitalWrite(led_verte, 0);
digitalWrite(led_rouge, 1);
}
// Affichage de la variable du compteur
Serial.println("");
Serial.print("Compteur = ");
Serial.println(compteur);
Serial.println("");


}
Compteur de passage COVID

 

Il suffit ensuite d’ouvrir le moniteur série sur Arduino, et ainsi faire des tests de passage… et vérifier que les LEDs s’allument et/ou s’éteignent en fonction de votre limite.

8 comments

comments user
Nils

Bonjour,

Merci tout d’abord pour cette article très intéressant.

Auriez-vous la solution dans le cas ou il n’existe qu’une seule entrée/sortie sur la même porte ?

comments user
mataucarre

Un seul capteur ?

comments user
alex

Avec cette solution, il ne faut pas qu’une personne reste devant le capteur .. une solution pour ça ?

    comments user
    mataucarre

    Je pense à :

    if (distance_c1 < capture && distance_c2 > capture) {
    // On ajoute 1 au compteur
    compteur = compteur + 1;
    while (distance c1 < capture) { // On attend ! } } Mais il faut tester !

      comments user
      Yoyogaming

      Bonjour,
      Je tiens à signaler le non fonctionnement de votre dernier message (en sah)

        comments user
        Yoyogaming

        Le capteur ne réagit plus du tout

comments user
Eric

bonjour.
chez moi ça compte négatif. comment faire pour éviter les nombres négatifs?

    comments user
    mataucarre

    Il faut utiliser ça :

    // Si une personne est detectée à l’entrée du magasin
    // Ici, la personne doit passer à moins de 50cm du capteur
    if (distance_c1 < capture && distance_c2 > capture) {
    // On ajoute 1 au compteur
    compteur = compteur + 1;
    }
    // Si une personne est detectée à la sortie du magasin
    // Ici, la personne doit passer à moins de 50cm du capteur
    if (distance_c1 > capture && distance_c2 < capture) { // On retire 1 au compteur compteur = compteur - 1; if (compteur < 0) { compteur = 0; } }