RFID

De WikiDSAA.
Aller à : Navigation, rechercher

Sommaire

Présentation

Installation

Arduino


Branchement du lecteur RFID à la carte Arduino :

- Arduino RX sur RFID TX (=SOUT) (à déconnecter lorsque upload du code sur la carte)
- Arduino GND sur RFID GND
- Arduino Digital pin 2 sur RFID enable
- Arduino +5V sur RFID Vcc pin.


  • Le code ci-dessous permet de lire quelle puce est passée devant le lecteur (ouvrir moniteur série et le régler sur 2400Baud), issu de Arduino.CC. Le lecteur lira la puce la plus près et non pas deux puces à la fois.
  • Le capteur RFID peut lire les puces à une distance maximale d'environ 8cm de face et d'environ 2cm sur la tranche
  • Les puces peuvent être lues à travers une table, du bois, du papier sans pour autant perdre en portée MAIS elles ne peuvent pas être lues à travers une couche de métal, aussi fine soit-elle.
int  val = 0; 
char code[10]; 
int bytesread = 0; 
 
void setup() { 
  Serial.begin(2400); // RFID reader SOUT pin connected to Serial RX pin at 2400bps 
  pinMode(2,OUTPUT);   // Set digital pin 2 as OUTPUT to connect it to the RFID /ENABLE pin 
  digitalWrite(2, LOW);                  // Activate the RFID reader
}  
 
void loop() { 
 
  if(Serial.available() > 0) {          // if data available from reader 
    if((val = Serial.read()) == 10) {   // check for header 
      bytesread = 0; 
      while(bytesread<10) {              // read 10 digit code 
        if( Serial.available() > 0) { 
          val = Serial.read(); 
          if((val == 10)||(val == 13)) { // if header or stop bytes before the 10 digit reading 
            break;                       // stop reading 
          } 
          code[bytesread] = val;         // add the digit           
          bytesread++;                   // ready to read next digit  
        } 
      } 
      if(bytesread == 10) {              // if 10 digit read is complete 
        Serial.print("TAG code is: ");   // possibly a good TAG 
        Serial.println(code);            // print the TAG code 
      } 
      bytesread = 0; 
      digitalWrite(2, HIGH);                  // deactivate the RFID reader for a moment so it will not flood
      delay(1500);                       // wait for a bit 
      digitalWrite(2, LOW);                  // Activate the RFID reader
    } 
  } 
}

Processing


Récupérer le code de la puce

Le code ci-dessous permet de récupérer les codes des puces lus par le lecteur RFID via le programme Arduino, afin de les utiliser avec Processing. Dans le cas suivant le code s'affiche sur le canvas processing.

// this snippet will write rfid tag IDs to Processing’s screen
import processing.serial.*;
 
 
Serial rfidPort; // The serial port
 
PFont fontA; // the font
 
void setup() {
 
  size(700,600);
  background(255);
 
  println(Serial.list()); // List all the available serial ports
 
  rfidPort = new Serial(this, Serial.list()[0], 2400);
  rfidPort.setDTR(true);
 
  fontA = loadFont("Courier-36.vlw");
  textFont(fontA, 36);
  textAlign(CENTER);
 
}
 
void draw() {
 
  while (rfidPort.available () > 0) {
 
    String inString = rfidPort.readStringUntil('\n');
    if (inString != null) {
 
      inString = trim(inString); // trim off any whitespace:
      print(inString);
      fill(0);
      text(inString,width/2,height/2);
    }
  }
}


Lancer des musiques grâce aux puces

Le code qui suit permet de lancer une musique précise en passant une puce devant le lecteur RFID. Concrètement chaque code de puce est associé à une musique (qui doit être placée dans le même dossier que votre fichier Processing au format .pde). En passant la puce devant le lecteur, on lance la musique associé à cette même puce (à la manière d'un jukebox).
La couleur de fond change également suivant la puce.

// start processing code
// this snippet will write rfid tag IDs to Processing’s output screen
import processing.serial.*;
 
import ddf.minim.*;
Minim minim;
AudioPlayer groove;
AudioPlayer letsgroove;
AudioPlayer war;
AudioPlayer xzixzi;
 
// The serial port:
Serial rfidPort;
PFont fontA;
 
void setup() {
  size(2560, 1440);
  background(255);
 
  minim = new Minim(this);
  letsgroove = minim.loadFile("letsgroove.mp3", 2048);
  groove = minim.loadFile("groove.mp3", 2048);
  war = minim.loadFile("war.mp3", 2048);
  xzixzi = minim.loadFile("xzixzi.mp3", 2048);
 
  // List all the available serial ports:
  println(Serial.list());
  rfidPort = new Serial(this, Serial.list()[0], 2400);
  rfidPort.setDTR(true);
  fontA = loadFont("Courier-36.vlw");
  textFont(fontA, 36);
  textAlign(CENTER);
}
 
void draw() {
  while (rfidPort.available () > 0) {
    String inString = rfidPort.readStringUntil('\n');
    if (inString != null) {
      inString = trim(inString); // trim off any whitespace
      print(inString);
      if (inString.equals("TAG code is: 4900EB3729")) {
        //change la couleur de fond et le texte
        background(255, 0, 0);  
        letsgroove.play();
        xzixzi.pause();
        war.pause();
 
        groove.pause();
      }else if(inString.equals("TAG code is: 4900EB4112")){
        background(0,255, 0);  
        letsgroove.pause();
        war.pause();
        xzixzi.pause();
 
        groove.play();
      }else if(inString.equals("TAG code is: 49000460A8")){
        background(0, 0, 255); 
        letsgroove.pause();
        groove.pause();
        xzixzi.pause();
 
        war.play();
      }else if(inString.equals("TAG code is: 4900EB4910")){
        background(0, 0, 255); 
        letsgroove.pause();
        groove.pause();
        war.pause();
 
        xzixzi.play();
      }
 
      fill(0);
      text(inString, width/2, height/2);
    } 
    else {
      background(255);
    }
  }
}

Projets

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils