Badgeuse RFID d'entrée et de sortie et système de facturation

Bonjour à tous,

Dans le cadre d'un stage, mon projet est de confectionner une badgeuse afin d'effectuer un suivis simplifié et plus précis sur l'ensemble des activiés des membres. Le but est donc de creer une badgeuse d'entrée et de sortie et d'y gérer la gestion en sorte que les membres de l'atelier peuvent y rentrer 7jr/7 24h/24.
La gestion par badge ainsi que l'utilisation des machines doivent permettre la reservation de créneau horaires, l'acces à l'atelier, la mise en fonctionnement des machines ainsi que la faturation des prestations des comptes des utilisateurs.

Pour le moment j'ai commandé un lecteur RFID 13.56MkHz et je l'ai programmé, ainsi j'arrive à lire mes badges et à la fois à affiché sur un écran lcd si la carte est autorisé ou non mais aussi à allumer des LED rouges et vertes suivant le fontionnement ou non du badge.

A present, il me faut faire en sorte que quand je détecte un badge, un compteur se mets en route et ce jusqu'à ce que cette même carte soit re badger. Sachant que plusieurs autre carte peuvent etre lu entre temps.

Merci pour votre aide :slight_smile:

voici le code que j'utilise pour l'instant :

#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 7);
SoftwareSerial RFID(2, 3); // RX and TX
 
int data1 = 0;
int ok = -1;
int yes = 13;
int no = 8;
int m=0;
int test1=0;
int tempo=0;

// use first sketch in http://wp.me/p3LK05-3Gk to get your tag numbers
int tag1[14] = {2,48,68,48,48,53,48,54,51,68,67,69,50,3};
int tag2[14] = {2,49,48,48,48,53,67,66,70,66,48,52,51,3};
int newtag[14] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
 
void setup()
{
  RFID.begin(9600);    // start serial to RFID reader
  Serial.begin(9600);  // start serial to PC
  pinMode(yes, OUTPUT); // for status LEDs
  pinMode(no, OUTPUT);
  lcd.begin(16, 2);
  lcd.print("Chez la start up!");
}
 
boolean comparetag(int aa[14], int bb[14])
{
  boolean ff = false;
  int fg = 0;
  for (int cc = 0 ; cc < 14 ; cc++)
  {
    if (aa[cc] == bb[cc])
    {
      fg++;
    }
  }
  if (fg == 14)
  {
    ff = true;
  }
  return ff;
}
 
void checkmytags() // compares each tag against the tag just read
{
  ok = 0; // this variable helps decision-making,
  // if it is 1 we have a match, zero is a read but no match,
  // -1 is no read attempt made
  if (comparetag(newtag, tag1) == true)
  {
    ok++;
  }
  if (comparetag(newtag, tag2) == true)
  {
    ok++;
  }
}
 
void readTags()
{
  ok = -1;
 
  if (RFID.available() > 0)
  {
    // read tag numbers
    delay(100); // needed to allow time for the data to come in from the serial buffer.
 
    for (int z = 0 ; z < 14 ; z++) // read the rest of the tag
    {
      data1 = RFID.read();
      newtag[z] = data1;
    }
    RFID.flush(); // stops multiple reads
 
    // do the tags match up?
    checkmytags();
  }
 
  // now do something based on tag type
  if (ok > 0) // if we had a match
  {
    Serial.println("Acces autorise");
    digitalWrite(yes, HIGH);
    delay(1000);
    digitalWrite(yes, LOW);
 
 //affichage de l'acces autorisé
    lcd.setCursor(0,0);
    lcd.print("Chez la start up! ");
    lcd.setCursor(0,1);
    lcd.print("Acces autorise");
    
    ok = -1;
  }
  else if (ok == 0) // if we didn't have a match
  {
    Serial.println("Acces refuse");
    digitalWrite(no, HIGH);
    delay(1000);
    digitalWrite(no, LOW);
 
 //affichage de l'acces refusé
    lcd.setCursor(0,0);
    lcd.print("Chez la start up! ");
    lcd.setCursor(0,1);
    lcd.print("Acces refuse");
    
    ok = -1;
  }

}

void affiche()
{
  lcd.setCursor(0, 1);
  lcd.print(millis() /1000);
  }
  
      
  void loop()
{
  readTags();
 [size=10pt][/size]
}

Bonjour,

Ce n'est que mon humble avis mais je pense que dans une étape pas trop lointaine tu vas te rendre compte que tu as besoin de stocker des choses sur une carte SD et également de mettre une horloge temps-réel dans le système (par ailleurs, as-tu pensé à la panne de courant ?).
Et dans un deuxième temps, quelqu'un va peut-être se dire: "et si on utilisait une vraie base de données ?"
Enfin bref, à ta place je ferais directement ce projet avec une Raspberry Pi, ou une BeagleBone Black, ou une autre carte du même tonneau (genre une Yun si tu veux à tout prix utiliser de l'Arduino).

saly:
Bonjour à tous,

...

:grin:
Ne multiplie pas non plus les topics :grin:

Comment les supprimer svp?