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

Bonjour à tous,

Je suis actuellement stagiaire dans une start up et mon but 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]
}

saly:
...
Je suis actuellement stagiaire dans une start up et mon but 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.
...
Pour le moment j'ai commandé un lecteur RFID 13.5kHz 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.

:grin:

  • Déjà poste plutot dans la section generale , pas dans realisations et projets finis
  • Stagiaire dans une start-up , ce n'est que tres rarement une situation d'avenir 8) , mais ça arrive 8)
  • 13.5 KHz pour du RFID ? , perso je ne connais pas , du 13.56 MHz ou du 125 KHz , déjà plus .

lien(s) vers tes equipements ?

Je te remercie pour ton aide, en effet c'est un RFID 13.56Mhz.
Et je suis en école d'ingénieur... mais je fais ce projet dans le cadre d'un stage.

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

Mettre une horloge à temps reel oui, j'en aurais forcément besoin (pour la panne de courant j'y ai pensé mais je ne sais pas encore comment cela va etre gérer ).
Je n'est a ma disposition que une carte Arduino Uno, et une carte intel Galileo

C'est le moment de te faire mousser et d'être "force de proposition" pour montrer que tu n'a pas les deux pieds dans le même sabot, etc, etc... (je te passe les autres lieux communs habituels) et que tu réfléchis en plus de te contenter de faire ce qu'on te demande.
Ceci étant, avec la Galileo on peut déjà faire pas mal de choses et ça sera sans doute suffisant.

J'ai fais quelques recherche et je comprends maintenant pourquoi vous me suggerer d'utiliser la carte Galileo plutot que la Arduino Uno.
J'ai deux mois pour finir le projet, ca fait moins d'une semaine que je suis dessus, et je vous remercie de m'avoir soumis vos proposition, en effet tout n'est pas encore clair et il reste quelques zones d'ombres à éclaircir.

Il faut y aller pas à pas et ne pas chercher à pondre tout le code en une seule fois.
Ne pas hésiter à avoir des programmes spécifiques pour chaque point clé (par exemple: un programme spécifique pour la gestion de l'écran, un pour la lecture du badge, etc...) avant d'intégrer le tout dans le programme global.
Et bien réfléchir à l'architecture générale avant de foncer tête baissée. Prends du temps pour potasser l'Uno et le Galileo avant de décider vers quoi tu pars. Par exemple, on peut intégrer facilement une carte SD au Galileo, activer une horloge temps-réel, il y a un port Ethernet,... Plein de choses qui te seront utiles et qui nécessiteraient des modules additionnels avec une Uno.