lunes, 3 de octubre de 2016

NFC RC522 RFID Shield Arduino



ARDUINO
RFID CARD READER
CONTROL DE ACCESO


Instalar sketch lector de codigos tarjeta

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9    //Pin 9 para el reset del RC522
#define SS_PIN 10   //Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); //Creamos el objeto para el RC522

void setup() {
Serial.begin(9600); //Iniciamos la comunicación  serial
SPI.begin();        //Iniciamos el Bus SPI
mfrc522.PCD_Init(); // Iniciamos  el MFRC522
Serial.println("Lectura del UID");
}

void loop() {
// Revisamos si hay nuevas tarjetas  presentes
if ( mfrc522.PICC_IsNewCardPresent()) 
        {  
  //Seleccionamos una tarjeta
            if ( mfrc522.PICC_ReadCardSerial()) 
            {
                  // Enviamos serialemente su UID
                  Serial.print("Card UID:");
                  for (byte i = 0; i < mfrc522.uid.size; i++) {
                          Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                          Serial.print(mfrc522.uid.uidByte[i], HEX);   
                  } 
                  Serial.println();
                  // Terminamos la lectura de la tarjeta  actual
                  mfrc522.PICC_HaltA();         
            }      
}
}

Pasar tarjetas por el lector para obtener codigos


Abrir sketch " Control de Acceso" y cambiar codigos para luego subirlo a Arduino Uno

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9    //Pin 9 para el reset del RC522
#define SS_PIN 10   //Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); ///Creamos el objeto para el RC522

void setup() {
Serial.begin(9600); //Iniciamos La comunicacion serial
SPI.begin();        //Iniciamos el Bus SPI
mfrc522.PCD_Init(); // Iniciamos el MFRC522
Serial.println("Control de acceso:");
}

byte ActualUID[4]; //almacenará el código del Tag leído
byte Usuario1[4]= {0xB5, 0x8B, 0x48, 0x77} ; //código del usuario 1
byte Usuario2[4]= {0x93, 0xD9, 0x39, 0x45} ; //código del usuario 2
void loop() {
// Revisamos si hay nuevas tarjetas  presentes
if ( mfrc522.PICC_IsNewCardPresent()) 
        {  
  //Seleccionamos una tarjeta
            if ( mfrc522.PICC_ReadCardSerial()) 
            {
                  // Enviamos serialemente su UID
                  Serial.print(F("Card UID:"));
                  for (byte i = 0; i < mfrc522.uid.size; i++) {
                          Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                          Serial.print(mfrc522.uid.uidByte[i], HEX);   
                          ActualUID[i]=mfrc522.uid.uidByte[i];          
                  } 
                  Serial.print("     ");                 
                  //comparamos los UID para determinar si es uno de nuestros usuarios  
                  if(compareArray(ActualUID,Usuario1))
                    Serial.println("Acceso concedido...");
                  else if(compareArray(ActualUID,Usuario2))
                    Serial.println("Acceso concedido...");
                  else
                    Serial.println("Acceso denegado...");
                  
                  // Terminamos la lectura de la tarjeta tarjeta  actual
                  mfrc522.PICC_HaltA();
          
            }
      
}
}

//Función para comparar dos vectores
 boolean compareArray(byte array1[],byte array2[])
{
  if(array1[0] != array2[0])return(false);
  if(array1[1] != array2[1])return(false);
  if(array1[2] != array2[2])return(false);
  if(array1[3] != array2[3])return(false);
  return(true);
}


Una ves subido a Arduino abrimos en herramientas Monitor de sistema y listo





lunes, 12 de septiembre de 2016

Sketch Arduino FFH
Multitareas con Led 2 y Tarea paralela con Led 13

/**
 * Sketch 5 FFH. Tres máquinas de estado
 * Agregando otro FFH sketch Buton eniende led 13
 * LED attached from pin 13 to ground
 * pushbutton attached to pin 2 from +5V
 * 10K resistor attached to pin 2 from ground
 */
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;

int ledUnoPin = 7;
int ledDosPin = 8;
int ledTresPin = 9;
int ledUnoEstado = LOW;
long temporizadorUno = 0;
int intervaloUno = 1000;

int ledDosEstado = LOW;
long temporizadorDos = 0;
int intervaloDos = 100;
int ledTresEstado = LOW;
long temporizadorTres = 0;
int intervaloTres = 200;

void setup() {
  pinMode(ledUnoPin, OUTPUT);
  pinMode(ledDosPin, OUTPUT);
  pinMode(ledTresPin, OUTPUT);
  pinMode(ledPin,OUTPUT);
  pinMode(buttonPin, INPUT);
}
void loop() {
  
// read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else
    // turn LED off:
    digitalWrite(ledPin, LOW);
  // máquina uno
  if (millis() - temporizadorUno > intervaloUno) {
    if (ledUnoEstado == HIGH) {
      ledUnoEstado = LOW;
    }
    else {
      ledUnoEstado = HIGH;
    }
    digitalWrite(ledUnoPin, ledUnoEstado);
    temporizadorUno = millis();
  }  
  
  // máquina dos
  if (millis() - temporizadorDos > intervaloDos) {
    if (ledDosEstado == HIGH) {
      ledDosEstado = LOW;
    }
    else {
      ledDosEstado = HIGH;
    }
    digitalWrite(ledDosPin, ledDosEstado);
    temporizadorDos = millis();
  }
// máquina Tres
  if (millis() - temporizadorTres > intervaloTres) {
    if (ledTresEstado == HIGH) {
      ledTresEstado = LOW;
    }
    else {
      ledTresEstado = HIGH;
    }
    digitalWrite(ledTresPin, ledTresEstado);
    temporizadorTres = millis();
  }  
}