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 commentaires

  1. 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 ?

    1. 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 !

    1. 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; } }

Rejoignez la conversation

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.