domingo, 9 de octubre de 2016

Arduino uno +RFDI522 y Relay

CONTROL DE ACCESO CON TARJETA RFID522 Y SERVO




Pasos a seguir

  1. Unir la tarjeta RFID-RC522 con  Arduino Uno
  2. Unir el resto de las piesas con Arduino Uno
  3. Sketch  Arduino UNO

Conecciones del RFID-RC522 con Arduino UNO

Arduino UNO | RFID-RC522
 Pin 10          SDA
 Pin 13          SCK
 Pin 11          MOSI
 Pin 12          MISO
 -               IRQ
 GND             GND
 Pin9            RST
 3.3V            3.3V

Sketch para  Arduino UNO

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10 // RFID-RC522 SDA
#define RST_PIN 9 // RFID-RC522 RST
const byte servoPin  = 8;  // digital Pin - Servo
const byte buzzerPin = 7;  // digital Pin - Buzzer
Servo myServo;
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Colocar aqui los numeros de tarjetas autorizadas
// Al abrir el monitor dara el numero rechazado primero
long erlaubteKarten[] = { 1011520, 2492530, 171762080 };
byte erlaubteKartenCount = 3;
void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  pinMode(buzzerPin, OUTPUT);
  pinMode(servoPin, OUTPUT);
  myServo.attach(servoPin);
  myServo.write(0); //Servo en lugar inicio
}
void loop() {
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  long code=0;
   
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    code=((code+mfrc522.uid.uidByte[i])*10);
  }
  Serial.print(F("Tarjeta reconosida:"));
  Serial.print(code);
  if(PruefeKartenberechtigung(code) == true) {
    Serial.println(F(" [AUTORIZADO]"));
    KarteErkanntSound();
    myServo.write(90);
    delay(500);
    myServo.write(0);
    delay(100);
  } else {
    Serial.println(F(" [SIN AUTORIZACION]"));
    UnbekannteKarteSound();
  }
  delay(2000);
}
boolean PruefeKartenberechtigung(long KartenUUID) {
  boolean erlaubt = false;
   
  for(int i=0; i < erlaubteKartenCount; i++) {
    if(erlaubteKarten[i] == KartenUUID) {
      erlaubt = true;
    }
  }
  return erlaubt;
}
void UnbekannteKarteSound(void) {
  for (byte i=0; i<3; i++) {
    tone(buzzerPin, 500, 150);
    delay(200);
  }
}
void KarteErkanntSound(void) {
  tone(buzzerPin, 1000, 150);
  delay(200);
  tone(buzzerPin, 1500, 150);
  delay(200);
}