Arduino – Blokada dostępu RFID

RFID używamy na co dzień np. wchodząc do biura czy domu.  Tym razem na szybko była potrzebna, przed wdrożeniem całego systemu kontrola wejścia do pomieszczenia z serwerami. I tu przyszło z pomocą Arduino które poniewiera się po domu oraz czytnik RC-522 i przekaźnik.

Założenie całej konstrukcji, otworzyć drzwi osobą posiadającym odpowiedni znacznik RFID np. kartę lub brelok.

Potrzebne elementy:

– Arduino nano (lub odpowiednik)
– czytnik RFID RC-522
– karta RFID / brelok RFID
– przekaźnik,
– elektro zaczem (niestety to musiałem kupić)
– biblioteka RFID master

Opis połączenia czytnika RFID:

Moduł RC522 Arduino Nano, Uno Arduino Mega
SDA 10 53
SCK 13 52
MOSI 11 51
MISO 12 50
IRQ nie podłączać nie podłączać
GND GND GND
RST 9 9
3.3V 3.3V 3.3V

Opis połączenia przekaźnika:

Moduł przekaźnika Arduino Nano, Uno
VCC 5V
GND GND
IN D8

Wstępnie zmontowany układ

Jest to robocza wersjak która robiona była dla testu docelowo staneło to na wersji pro ze względu na gabaryty i zostało wmontowane w ramę drzwiową.

Kod dla jednego znacznika RFID

/*
* This sketch uses the MFRC522 library ; see https://github.com/miguelbalboa/rfid
* for further details and other examples.
* pobrano z www.tranzystor.pl
*/

#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
MFRC522 mfrc522(SS_PIN, RST_PIN);
String read_rfid;
String ok_rfid_1="d34a61a3"; // ID twojego znacznika
int lock = 8;

void setup() {
Serial.begin(9600);
while (!Serial);
SPI.begin();
mfrc522.PCD_Init();
pinMode(lock, OUTPUT);

}
void dump_byte_array(byte *buffer, byte bufferSize) {
read_rfid="";
for (byte i = 0; i < bufferSize; i++) {
read_rfid=read_rfid + String(buffer[i], HEX);
}
}

void open_lock() {
//Use this routine when working with Relays and Solenoids etc.
digitalWrite(lock,HIGH);
delay(500); // czas podtrzymania przekaźnika
digitalWrite(lock,LOW);
}

void loop() {

if ( ! mfrc522.PICC_IsNewCardPresent())
return;

if ( ! mfrc522.PICC_ReadCardSerial())
return;

dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println(read_rfid);
if (read_rfid==ok_rfid_1) {
open_lock();
}
}

Kod dla 2 znaczników RFID

/*
* This sketch uses the MFRC522 library ; see https://github.com/miguelbalboa/rfid
* for further details and other examples.
* pobrano z www.tranzystor.pl
*/

#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
MFRC522 mfrc522(SS_PIN, RST_PIN);
String read_rfid;
String ok_rfid_1="d34a61a3"; // ID twojego znacznika
String ok_rfid_2="2b2dc773"; // ID twojego znacznika
int lock = 8;
int lock2 = 8;

void setup() {
Serial.begin(9600);
while (!Serial);
SPI.begin();
mfrc522.PCD_Init();

pinMode(lock, OUTPUT);
pinMode(lock2, OUTPUT);
}

void dump_byte_array(byte *buffer, byte bufferSize) {
read_rfid="";
for (byte i = 0; i < bufferSize; i++) {
read_rfid=read_rfid + String(buffer[i], HEX);
}
}

void open_lock() {
digitalWrite(lock,HIGH);
delay(1000); // czas podtrzymania przekaźnika
digitalWrite(lock,LOW);
}

void close_lock2() {

digitalWrite(lock2, HIGH);
delay(1000); // czas podtrzymania przekaźnika
digitalWrite(lock2,LOW);
}

void loop() {

if ( ! mfrc522.PICC_IsNewCardPresent())
return;

if ( ! mfrc522.PICC_ReadCardSerial())
return;

dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println(read_rfid);
if (read_rfid==ok_rfid_1) {
open_lock();
}

Serial.println(read_rfid);
if (read_rfid==ok_rfid_2) {
close_lock2();
}
}

Post Author: swistak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Potwierdz, że nie jesteś botem. *

This site uses Akismet to reduce spam. Learn how your comment data is processed.