Go Down

Topic: Besoins conseils pour Projet BAC (Read 1 time) previous topic - next topic

LePoulpe

[font=Arial]Bonjour,nous sommes un groupe de travail en Terminale STI2D SIN qui avons pour travail de réaliser un projet pour le BAC. "Amélioration de la sécurité dans les centres médicalisés"

Contraintes imposées :
-Utilisation d'Arduino
-Capteurs RFID
-Page WEB

Principe du projet :
Il s'agit de réguler l'accès a une salle en équipant les patients d'un bracelet à capteur RFID, de tel sorte que la porte ne s'ouvre pas pour tout le monde.
par exemple Monsieur X (qui est autorisé à passer) possède le bracelet jaune, le capteur de la porte détecte le code du bracelet jaune et ouvre la porte.
Monsieur Y (qui n'a pas le droit d'accéder à la salle) possède le bracelet rouge, le capteur remarque que le code de ce bracelet interdit l'ouverture, la porte reste donc fermé.
Il faut ensuite que tout les passages soit répertoriés sur une page WEB en indiquant la personne, la date, l'heure et si oui ou non elle est passées.

Nous avons plusieurs problèmes :
Le premier par rapport à la page WEB sur Arduino, nous avons la forme de la page (cela dois représenter une liste avec les donnés cités plus haut), mais il faudrais que ce sois sous forme de tableau, en gros il y a tout, sauf les lignes pour en faire un tableau. Car la programmation WEB sur Arduino et différents que le HTML et CSS

Le deuxième en rapport avec les capteurs : nous avons des difficultés avec la programmation  sous arduino , pour autoriser ou non l'accès mais nous avons commencer ce programme (ci dessous):

Code: [Select]
/*
Example 15.2
read RFID tag, if it matches a preset tag, set a digital pin high for 10 seconds
tronixstuff.com/tutorials > Chapter 15
*/

int data1 = 0;
int ok=-1;
// define the tag numbers that can have access
int yellowtag[14] = {
1,11,1,1,12,224,151,161,255,2,154}; //  my yellow tag. Change this to suit your own tags, use example 15.1 sketch to read your tags
int redtag[14] = {
1,11,1,1,12,227,163,190,255,147,110}; // my red tag...
int newtag[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
int okdelay = 500; // this is the time the output will be set high for when an acceptable tag has been read
int notokdelay = 500; // time to show no entry (red LED)
void setup()
{
 Serial.flush(); // need to flush serial buffer, otherwise first read from reset/power on may not be correct
 pinMode(3, OUTPUT); // this if for "rejected" LED
 pinMode(4, OUTPUT); // this will be set high when correct tag is read. Use to switch something on, for now - an LED.
 Serial.begin(9600); // for debugging
}

boolean comparetag(int aa[14], int bb[14])
//  compares two arrrays, returns true if identical - good for comparing tags
{
 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 - a read but no match, -1, no read attempt made
 if (comparetag(newtag,yellowtag)==true)
 {
   ok++;
 }
 if (comparetag(newtag,redtag)==true)
 {
   ok++;
 }
}

void readTag()
// poll serial port to see if tag data is coming in (i.e. a read attempt)
{
 ok=-1;
 if (Serial.available() > 0) // if a read has been attempted
 {
   // read the incoming number on serial RX
   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=Serial.read();
     newtag[z]=data1;
   }
   Serial.flush(); // stops multiple reads
   // now to match tags up
   checkmytags(); // compare the number of the tag just read against my own tags' number
 }
 //now do something based on tag type
 if (ok>0==true) // if we had a match
 {
   digitalWrite(4, HIGH);
   delay(okdelay);
   digitalWrite(4, LOW);
   ok=-1;
 }
 else if (ok==0) // if we didn't have a match
 {
   digitalWrite(3, HIGH);
   delay(notokdelay);
   digitalWrite(3, LOW);
   ok=-1;
 }
}

void loop()
{
 readTag(); // we should create a function to take care of reading tags, as later on
 // we will want other things to happen while waiting for a tag read, such as
 // displaying data on an LCD, etc
}


 


Le dernier problème est : comment assemblé nos 2 fichiers, le fichier Arduino avec la page avec le fichier Arduino sur la régulation d'accès.[/font]

Artouste


[font=Arial]Bonjour,nous sommes un groupe de travail en Terminale STI2D SIN qui avons pour travail de réaliser un projet pour le BAC. "Amélioration de la sécurité dans les centres médicalisés"


bonjour
Si un modo  8) ne fait pas le transfert vers le forum français general  8)
ouvrez un topic là bas , ici vous êtes sur réalisations et projets finis , (vous y reposterez dans quelques mois  :smiley-mr-green:  )

LePoulpe

C'est ou le forum général svp ?

Artouste

#3
Jan 22, 2013, 02:44 pm Last Edit: Jan 22, 2013, 02:47 pm by Artouste Reason: 1

C'est ou le forum général svp ?

:smiley-mr-green:

http://arduino.cc/forum/index.php/board,33.0.html
et tu fais vous selectionnez new topic  8)

infobarquee

bonjour,
les bases sont bonnes sur le papier, mais tu ne pose pas tout.
quels sont les contraintes ou cahier des charges?

après :
1- comment entrer les données de passage
2- comment les lire, voir les parser
3- comment les afficher

ce qui en découle :
1- quelle carte utiliser
2- quel shield utiliser
3- quel support de stockage utiliser

le mieux est de faire un diagramme, facile a dire j'en fais très rarement :)

skywodd

Bonjour,

Il manque un bon paquet d'informations !
- Les pages web seront sur l'arduino ou sur un serveur externe ?
Si oui voir "webduino" et arduino "tinywebserver".
- Quel lecteur RFID utilisez vous ?
- Ou seront stocké la liste des tags autorisé ?
- De quel matériel disposez vous ?
...

Tu peut reprendre mon code (pour arduino 0023 + lecteur RFID parallax) comme base de réflexion :
version simple :
http://skyduino.wordpress.com/2012/03/15/arduino-systeme-douverture-de-porte-rfid-version-serie/

version complète :
http://skyduino.wordpress.com/2011/12/17/arduino-lecteur-rfid-a-ecran-lcd-avec-stockage-du-tag-valide-en-eeprom-externe-i2c/
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

LePoulpe

Les pages web seront sur l'arduino
la liste des tag seront sur la page web
nous disposons de arduino uno.

Désolé pour le temps de reponse, nous sommes uniquement present le mardi.

LePoulpe

J'ai regardé ton programme, il est génial, cependant il y a une liste de tag autorisés, mais comment ajouté une liste de tags non autorisés ?
Merci.

B@tto

Par définition s'il n'est pas dans la liste c'est qu'il n'est pas autorisé ...
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

LePoulpe

Mais les tags non autorisés doivent apparaitre sur le site web, pour savoir quelle personne non autorisé a voulu franchir la porte.

B@tto

Bah de toute façon tu dois loguer les tags autorisés, de la même manière tu pourras loguer les tentatives d'intrusion !

24/01/13  23:24:35 Tag n°123445 Autorisation accordée
24/01/13  23:26:15 Tag n°325895 Autorisation accordée
24/01/13  23:28:11 Tag n°597897 Autorisation refusée, identification non répertoriée
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

skywodd


Mais les tags non autorisés doivent apparaitre sur le site web, pour savoir quelle personne non autorisé a voulu franchir la porte.

Google -> "buffer circulaire" ;)
Et pour le temps -> Time.h
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

LePoulpe

Bonjour, voici notre programme pour reconnaitre les pastilles
Code: [Select]
/*
Example 15.2
read RFID tag, if it matches a preset tag, set a digital pin high for 10 seconds
tronixstuff.com/tutorials > Chapter 15
*/

int data1 = 0;
int ok=-1;
// define the tag numbers that can have access
int yellowtag[14] = {
1,11,1,1,12,224,151,161,255,2,154,-1,-1,-1}; //  my yellow tag. Change this to suit your own tags, use example 15.1 sketch to read your tags
int redtag[14] = {
1,11,1,1,12,227,163,190,255,147,110,-1,-1,-1}; // my red tag...
int newtag[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
int okdelay = 500; // this is the time the output will be set high for when an acceptable tag has been read
int notokdelay = 500; // time to show no entry (red LED)
void setup()
{
  Serial.flush(); // need to flush serial buffer, otherwise first read from reset/power on may not be correct
  pinMode(3, OUTPUT); // this if for "rejected" LED
  pinMode(4, OUTPUT); // this will be set high when correct tag is read. Use to switch something on, for now - an LED.
  Serial.begin(9600); // for debugging
}

boolean comparetag(int aa[14], int bb[14])
//  compares two arrrays, returns true if identical - good for comparing tags
{
  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 - a read but no match, -1, no read attempt made
  if (comparetag(newtag,yellowtag)==true)
  {
    ok++;
  }
  if (comparetag(newtag,redtag)==true)
  {
    ok++;
  }
}

void readTag()
// poll serial port to see if tag data is coming in (i.e. a read attempt)
{
  ok=-1;
  if (Serial.available() > 0) // if a read has been attempted
  {
    // read the incoming number on serial RX
    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=Serial.read();
      newtag[z]=data1;
      Serial.println(data1);
      newtag[z]=data1;
    }
    Serial.flush(); // stops multiple reads
    // now to match tags up
    checkmytags(); // compare the number of the tag just read against my own tags' number
  }
  //now do something based on tag type
  if (ok>0==true) // if we had a match
  {
    digitalWrite(4, HIGH);
    delay(okdelay);
    digitalWrite(4, LOW);
    ok=-1;
  }
  else if (ok==0) // if we didn't have a match
  {
    digitalWrite(3, HIGH);
    delay(notokdelay);
    digitalWrite(3, LOW);
    ok=-1;
  }
}

void loop()
{
  readTag(); // we should create a function to take care of reading tags, as later on
  // we will want other things to happen while waiting for a tag read, such as
  // displaying data on an LCD, etc
}



Les pastilles rouges et jaunes sont autorisés, comment insérés les pastilles suivantes pour qu'il ne sois pas autorisés ?
Bleu : 1
11
1
1
12
227
164
224
255
59
78
-1
-1
-1

Vert : 1
11
1
1
12
224
151
103
255
190
104
-1
-1
-1

Violet : 1
11
1
1
12
224
152
118
255
162
27
-1
-1
-1

Car il faut que les passages apparaissent sur la page web, meme s'il ne sont pas autorisés, donc comment integrer les codes des 3 pastilles dans le programme Arduino.
Avec ce systeme, les aide soignant seront obliges de marquer chaque nouveau code de pastille (lors de l'arrivé d'un nouveau patient), comment eviter la reprogrammation du code Arduino au aide soignant et automatiser le tout. Merci beaucoup   :)

fdufnews

Quote
comment insérés les pastilles suivantes pour qu'il ne sois pas autorisés

B@tto te l'a dit, si un tag n'est pas dans la liste des tags autorisés alors cela veut dire qu'il n'a pas accès donc il est inutile de l'enregistrer à l'avance. D'ailleurs comment enregistrer quelque chose qui ne devrait pas exister car il faut bien interdire l'accès aux badges inconnus. Cela n'empêche pas de conserver la valeur des badges qui ont été lus dans un tableau que tu crées dynamiquement pour mémoriser TOUTES les tentatives de passages.


Go Up