шаблоны сайт визитка joomla
Скачать шаблоны Joomla 3.5 бесплатно
Вы находитесь здесь:Главная»Учебные материалы»Arduino Scetch»Магнитный ключ RFID-RC522

Магнитный ключ RFID-RC522

RFID в названии этой штуки означает технологию радиоидентификации, то есть ничего конкретно не означает. Зато из спецификаций следует, что она совместима с распространенными RFID карточками с протоколом MIFARE.

Скорее всего, вы неоднократно встречались с такими карточками. Чаще всего — в виде офисного пропуска. Другой яркий пример — бесконтактные билеты для прохода в метро.

Базовый принцип действия довольно прост для понимания. В карточке и в считывателе есть антенны, при этом сигнал считывающего устройства (суть электромагнитное поле) одновременно служит источником питания для карточки. Т.е. и в части энергетики, и в части передачи данных это очень похоже на ставшие сверхпопулярными беспроводные зарядки.

Сами же карточки, в зависимости от модификации, могут нести в себе от нескольких десятков байт до нескольких килобайт данных (в том числе — уникальный серийный номер). Также, в зависимости от модификации, карточка может быть укомплектована криптографической защитой информации.

RFID-модуль 13.56 МГц с SPI-интерфейсом. В комплекте к модулю идет 2 RFID-метки — в виде карты и брелока.

VUPN6326 5

Характеристики модуля RC522:

1. Потребляемый ток в активном состоянии:13-26mA/DC 3.3V;
2. Потребляемый ток в состоянии ожидания:10-13mA/DC 3.3V;
3. Ток в режиме сна:<80uA;
4. Пиковое потребление:<30mA;
5. Рабочая частота:13.56MHz;
6. Поддержвиаемые типы карт: MIFARE S50, MIFARE S70, MIFARE UltraLight, MIFARE Pro, MIFARE DESfire;
7. Размер: 40mm?60mm;
8. Температура, при которой работает модуль: от -20 до +80 С*;
9. Температура, в которой надо хранить модуль: от -40 до +85 С*;
10 .Относительная влажность воздуха: от 5% до 95%;
11. Модуль интерфейсов и параметров SPI;
12. Скорость передачи данных: максимум 10Мбит/с;
13. Основан на микросхеме MFRC522.

Данный модуль может быть использован для различных радиолюбительких и коммерческих применений, в том числе контроля доступа, автоматической идентификации, робототехники, отслеживания вещей, платежных систем и т.д.

 

Подключение модуля:

Модуль RC имеет 8 выводов (написаны по порядку расположения на модуле):

  • SDA (NSS) — выбор ведомого SPI;
  • SCK — тактовый сигнал, SPI;
  • MOSI — данные от ведущего к ведомому, SPI;
  • MISO — данные от ведомого к ведущему, SPI;
  • IRQ — линия прерываний;
  • GND — Земля;
  • RST — Линия сброса. Ни в коем случае не подключать к пину RESET на Arduino! Данный пин цепляется на цифровой порт с PWM;
  • VCC — Питание. Необходимо 3.3V;

Для подключения к Arduino Uno необходимо воспользоваться следующей распиновкой:

  • SDA - 10 pin;
  • SCK - 13 pin;
  • MOSI - 11 pin;
  • MISO - 12 pin;
  • IRQ - N/C;
  • Gnd - Gnd;
  • RST - 9 pin;
  • 3.3v - 3.3v.

Схема подключения магнитного ключа:

RFID  522png

Тестовый скетч с использованием магнитного ключа:

Два пина (SS и RST) допускают произвольное подключение и конфигурируются в коде. При этом по умолчанию в коде примера забита конфигурация для Arduino Uno, а если у вас Mega и вы подключали по агитке из ридми или таблички в начале примера, то, разумеется, промахнетесь.

Иными словами, подключение ни по первому, ни по второму варианту, указанному в описании библиотеки, не помогло. Сначала я подумал, что у меня «мертвая плата». Поэтому, несмотря на позднее время, взял себя в руки и распаял гребенку на вторую (я запасливый и купил сразу три). Результат оказался аналогичным, несмотря на то, что я неоднократно проверял подключение по имеющимся на руках «распиновкам».

Воспользуемся готовой библиотекой и примерам, установим ее в Arduino IDE с помощью копирования в папкуarduino/libraries/RFID либо папки с проектом и зальем тестовый скетч:

#include <SPI.h>
#include "RFID.h"

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);

// Setup variables:
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;

void setup()
{
Serial.begin(9600);
SPI.begin();
Serial.println("12");
rfid.init();

}

void loop()
{

if (rfid.isCard()) {
if (rfid.readCardSerial()) {
if (rfid.serNum[0] != serNum0
&& rfid.serNum[1] != serNum1
&& rfid.serNum[2] != serNum2
&& rfid.serNum[3] != serNum3
&& rfid.serNum[4] != serNum4
) {
/* With a new cardnumber, show it. */
Serial.println(" ");
Serial.println("Card found");
serNum0 = rfid.serNum[0];
serNum1 = rfid.serNum[1];
serNum2 = rfid.serNum[2];
serNum3 = rfid.serNum[3];
serNum4 = rfid.serNum[4];

//Serial.println(" ");
Serial.println("Cardnumber:");
Serial.print("Dec: ");
Serial.print(rfid.serNum[0],DEC);
Serial.print(", ");
Serial.print(rfid.serNum[1],DEC);
Serial.print(", ");
Serial.print(rfid.serNum[2],DEC);
Serial.print(", ");
Serial.print(rfid.serNum[3],DEC);
Serial.print(", ");
Serial.print(rfid.serNum[4],DEC);
Serial.println(" ");

Serial.print("Hex: ");
Serial.print(rfid.serNum[0],HEX);
Serial.print(", ");
Serial.print(rfid.serNum[1],HEX);
Serial.print(", ");
Serial.print(rfid.serNum[2],HEX);
Serial.print(", ");
Serial.print(rfid.serNum[3],HEX);
Serial.print(", ");
Serial.print(rfid.serNum[4],HEX);
Serial.println(" ");
} else {
/* If we have the same ID, just write a dot. */
Serial.print(".");
}
}
}

rfid.halt();
}

 

Результат:

Скриншот 2014 06 18 01.16.16

Программный код для включения и выключения светодиода при подносе ключа:

#include <SPI.h>
#include <RFID.h>

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);

int count=0;
// Setup variables:
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  rfid.init();
  pinMode(8,OUTPUT);
}

void loop()
{

  if (rfid.isCard()) {
    if (rfid.readCardSerial()) {
      if ((rfid.serNum[0] == 18
        && rfid.serNum[1] == 130
        && rfid.serNum[2] == 144
        && rfid.serNum[3] == 85
        && rfid.serNum[4] == 85
        )&&(count==0)) {
        digitalWrite(8,HIGH);
        count=1;
        delay(1500);
      }
      else if((rfid.serNum[0] == 18
        && rfid.serNum[1] == 130
        && rfid.serNum[2] == 144
        && rfid.serNum[3] == 85
        && rfid.serNum[4] == 85
        )&&(count==1)){
        digitalWrite(8,LOW);
        count=0;
        delay(1500);
      }
    }
  }

  rfid.halt();
}

Другие материалы в этой категории: « Магнитный ключ RFID-RC255 Установка Arduino IDE в Windows »

Новости о нас

Расписание занятий для каждой сформированной группы по робототехнике на 2017-2018 учебный год. Подробнее
Учебный год начался, и у нас очередная радостная новость для вас, педагоги! В этом году... Подробнее
Наши учащиеся выступили на августовской конференции педагогов! Подробнее
Хочешь учиться в Толтеке по выгодной цене? Приводи друзей и получай большие скидки!... Подробнее
19 августа в ТРЦ Сити Молл с блеском прошел РобоКвест! Героями квеста стали более сотни... Подробнее

Наши партнеры

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo