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.

6 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 !

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.