КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Стационарные RFID-считыватели бесконтактных карт на 125 КГц и 13,56 МГц

Общие сведения:

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

В данной статье все примеры составлены на основе считывателя на 125 кГц, однако они полностью справедливы и для считывателя на 13,56 МГц. 

Для работы со считывателем необходимо установить библиотеку Wiegand. При необходимости, ознакомьтесь с нашей инструкцией по установке библиотек в Arduino IDE.

Спецификация

  • Рабочее напряжение: 9-15 В постоянного тока
  • Потребляемый ток: < 100 мА
  • Рабочая частота: 125 кГц / 13,56 Мгц
  • Интерфейс: WG26 / WG34 (выбор перемычкой внутри считывателя)
  • Дальность считывания: до 10 см
  • Габариты: 74х114х18 мм
  • Рабочая температура: -20...70 °С

Обозначение выводов:

ОбозначениеЦветОписание
VccкрасныйПлюс питания
GNDчёрныйМинус питания
D0зеленыйПодключение к контроллеру
D1белыйПодключение к контроллеру
BEEPжёлтыйВключение зуммера при подключении к GND
LEDкоричневыйВключение светодиода при подключении к GND

Выбор типа интерфейса

Считыватель поддерживает работу с двумя типами интерфейса: Wiegand-26 и Wiegand-34.  Различаются они длиной передаваемого пакета. Первый состоит из 24 бит кода и 2 бит контроля на четность, второй - из из 32 бит кода и 2 бит контроля на четность. Для переключения между WG26 и WG34 необходимо переставить перемычку, находящуюся под задней крышкой устройства, при этом никакие дополнительные изменения в коде вносить не нужно. 

В библиотеку Wiegand встроена функция getWiegandType() , позволяющая определить используемый тип интерфейса (подробнее в примере ниже). 

Подключение:

СчитывательКонтроллер
D0D2 
D1D3
BEEPD4
LEDD5
GNDGND
Vcc+ питания (9-15В)

Обратите внимание, что в случае некоторых контроллеров необходимо использовать другие выводы, поддерживающие прерывания. Например, для Piranha ULTRA: D0 подключается к 8 выводу, а D1 - к 9.

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

#include <wiegand.h>      //  Подключение библиотеки wiegand
WIEGAND wg;               //  Создание объекта считывателя

void setup() {
  Serial.begin(9600);     //  Открытие порта передачи данных в последовательный порт
                          
                          //  Номера выводов, к которым подключен считыватель. Обратите внимание, что указываемые выводы должны поддерживать прерывания.   
  wg.begin(2, 3);         //  2, 3 для контроллеров Arduino UNO, Nano, Mini, Mega, Piranha UNO.
                          //  8, 9 для Piranha ULTRA 
}

void loop() {
  if(wg.available())                      
  {
    Serial.print("DECIMAL = ");
    Serial.print(wg.getCode());            //  Вывод полученного номера десятичной системе счисления
    Serial.print(", Type W");
    Serial.println(wg.getWiegandType());   //  Вывод используемого интерфейса 
  }
}

wg.begin(pinD0, pinD1) устанавливает номера выводов, в которым подключён считыватель, где pinD0 - пин, к которому подключен D0 считывателя, а pinD1 - пин,  к которому подключен D1.

Управление зуммером и светодиодом

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

Например, в приведённом ниже скетче, после поднесения метки с номером, указанным в константе, на 2 секунды включится зуммер и светодиод. 

#include <wiegand.h>          //  Подключение библиотеки wiegand
WIEGAND wg;                   //  Создание объекта считывателя

#define ledOnboard 5          //  Светодиод (встроенный в считыватель) подключен к 5 выводу контроллера
#define zummer 6              //  Зуммер (встроенный в считыватель) подключен к 6 выводу контроллера

///////////////////НАСТРОЙКИ///////////////////////
const int openTime = 2000;    //  Время, на которое включается светодиод и зуммер
long masterKey = 7966357;     //  Номер карты, на которую сработает считыватель

///////////////////////////////////////////////////

void setup() {
  pinMode(ledOnboard, OUTPUT);     //  Устанавливаем вывод светодиода как выход
  pinMode(zummer, OUTPUT);         //  Устанавливаем вывод зуммера как выход
  digitalWrite(ledOnboard, HIGH);  //  ВЫКЛючаем светодиод (для включения необходимо подать МИНУС на вывод)
  digitalWrite(zummer, HIGH);      //  ВЫКЛючаем зуммер (для включения необходимо подать МИНУС на вывод)
  Serial.begin(9600);              //  Инициализация монитора последовательного порта
                                   //  Номера выводов, к которым подключен считыватель. Обратите внимание, что указываемые выводы должны поддерживать прерывания.   
  wg.begin(2, 3);                  //  2, 3 для контроллеров Arduino UNO, Nano, Mini, Mega, Piranha UNO.
                                   //  8, 9 для Piranha ULTRA 
}

void loop(){
  if(wg.available()){
    long id = wg.getCode();             //  Получаем номер карты со считывателя и записываем в переменную 
    Serial.print("id = "); Serial.println(id);   //  выводим номер на монитор 
    if (id == masterKey){               //  id карты совпало с заданной в скетче
      digitalWrite(ledOnboard, LOW);    //  Включаем светодиод
      digitalWrite(zummer, LOW);        //  Включаем зуммер
      delay(openTime);                  //  Задержка
      digitalWrite(ledOnboard, HIGH);   //  Выключаем светодиод
      digitalWrite(zummer, HIGH);       //  Выключаем зуммер
    }
  }
}

Вывод считанного номера на LCD дисплей

Следующий пример позволяет выводить прочитанные с метки данные на LCD дисплей, подключённый к контроллеру по шине I2C. 

LCD дисплей I2CКонтроллер
SCLSCL
SDASDA
Vcc5V
GNDGND

Мы подключили LCD дисплей по шине I2C к выводам контроллера SCL и SDA. Если вы используете Trema shield, подключайте дисплей напрямую к колодке I2C.

#include <wiegand.h>                  //  Подключаем библиотеку считывателя
#include <wire.h>                     //  Подключаем библиотеку для работы с шиной I2C
#include <liquidcrystal_i2c.h>        //  Подключаем библиотеку для работы с LCD дисплеем по шине I2C

LiquidCrystal_I2C lcd(0x27,16,2);     //  Объявляем  объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2)
WIEGAND wg;                           //  Создаём объекта считывателя

void setup() {
  lcd.init();                 //  Инициируем работу с LCD дисплеем
  lcd.backlight();            //  Включаем подсветку LCD дисплея
  lcd.setCursor(0, 0);        //  Устанавливаем курсор в позицию (0 столбец, 0 строка)
  lcd.print("RFID 125kHz");   //  Выводим текст "RFID 125kHz", начиная с установленной позиции курсора
  lcd.setCursor(0, 1);        //  Устанавливаем курсор в позицию (0 столбец, 1 строка)
  lcd.print("ID: ");          //  Выводим текст "ID: ", начиная с установленной позиции курсора
    
  Serial.begin(9600);  
                              //  Номера выводов, к которым подключен считыватель. Обратите внимание, что указываемые выводы должны поддерживать прерывания.   
  wg.begin(2, 3);             //  2, 3 для контроллеров Arduino UNO, Nano, Mini, Mega, Piranha UNO.
                              //  8, 9 для Piranha ULTRA 
}

void loop(){
  if(wg.available()){
    long id = wg.getCode();   //  Получаем номер карты со считывателя и записываем в переменную 
    Serial.print("id = "); Serial.println(id);   //  выводим номер на монитор 
    lcd.setCursor(4, 1);      //  Устанавливаем курсор в позицию (4 столбец, 1 строка)
    lcd.print(id);            //  Выводим считанный номер 
  }  
}

Ссылки




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями