цифровая электроника
вычислительная техника
встраиваемые системы

 

Arduino и RFID-считыватель

Автор: Mike(admin) от 25-08-2014, 06:55

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


Arduino и RFID-считыватель

В данном материале мы подключим плату Arduino Uno и RFID-считыватель EM-18 для того, чтобы управлять реле и светодиодом.


При включении считыватель передает радиочастотные сигналы. Когда метка будет поднесена к считывателю, она получит эти сигналы с помощью своей внутренней антенны. Затем радиочастотные колебания будут преобразованы в энергию, которой хватит для передачи данных от метки к считывателю. Кроме того, считыватель по последовательному каналу связи передаст идентификатор (ID) метки внешнему устройству. Сегодня доступен широкий ассортимент модулей считывателей, и наиболее распространенным и простым в использовании является EM-18. Этот модуль считывает пассивные RFID-метки и отправляет ID в микроконтроллер Arduino.


Для начала нам нужно поместить в Arduino следующий код:



    int count = 0;
    void setup()
    {
    Serial.begin(9600);
    }
    void loop()
    {
    if(Serial.available())
    {
    count = 0; // сбрасываем считыватель
    // Продолжаем считывать байт за байтом из буфера, пока он не станет пустым
    {
    char input = Serial.read();
    Serial.print(input);
    count++; //
    delay(5); //
    }
    Serial.println();
    Serial.print("Tag Length : ");
    Serial.print(count);
    Serial.println(" Bytes");
    }
    }

Затем подключим Arduino Uno и EM-18 следующим образом:


Arduino и RFID-считыватель

Далее следует открыть последовательный монитор, приблизить метку к считывателю и получить ID метки. Этот ID (например, 51005F46642C) будет нужен нам для следующего скетча.


Сейчас нам нужно сделать так, чтобы система реагировала только на полученный ID. Чтобы проверить это, подключим к Arduino реле и светодиод (вывод D12 на светодиод, D13 на реле):


Arduino и RFID-считыватель

Arduino и RFID-считыватель

И зальем следующий код:



#define RELAYPIN 13
#define WARNLEDPIN 12
char tag[] ="51005F46642C"; // Заменить своим ID
char input[12];	// Переменная для хранения полученных ID
int count = 0;	// счетчик для навигации по массиву символов input[]
boolean flag = 0;	// Переменная для хранения состояния совпадения ID
void setup()
{
Serial.begin(9600);	// инициализация последовательного порта
pinMode(RELAYPIN,OUTPUT);	// выход реле
pinMode(WARNLEDPIN,OUTPUT); // светодиод для сигнализации неправильного ID 
}
void loop()
{
if(Serial.available())// проверяем, пришли ли данные с RFID-считывателя.
{
count = 0; // обнуляем счетчик
/* Продолжаем считывать байт за байтом из буфера, пока он не станет пустым
или 12-й байт будет прочитан */
	while(Serial.available() && count < 12)
{
input[count] = Serial.read(); // Читаем 1 байт данных и записываем в массив input[]
count++; // инкрементируем счетчик
delay(5);
}
/* Когда счетчик достигает значения 12, останавливаем процесс и сравниваем каждое значнение
массива input[] с нашим записанным значением */
if(count == 12) //
{
count =0; // обнуляем счетчик
flag = 1;
/* перебираем все значения */
while(count<12 && flag !=0)
{
if(input[count]==tag[count])
flag = 1; // при совпадении устанавливаем переменную flag в 1
else
flag= 0;
/* при несовпадении устанавливаем переменную flag в 0 и
прекращаем сравнивание */
count++; // инкрементируем счетчик
}
}
	if(flag == 1) // Если flag = 1, значит метка соответствует
{
Serial.println("Access Allowed!");
digitalWrite(RELAYPIN,HIGH);
delay (5000);
digitalWrite (RELAYPIN,LOW);
}
else
{
Serial.println("Access Denied"); // Неверное сообщение от метки
digitalWrite(WARNLEDPIN,HIGH);
delay(5000);
digitalWrite(WARNLEDPIN,LOW);
}
/* заполняем массив значением 'F' для перезаписи его элементов, чтобы
подготовить их для следующего цикла чтения */
for(count=0; count<12; count++)
{
input[count]= 'F';
}
count = 0; // обнуляем счетчик
}
}

Теперь каждый раз при считывании нужного ID на 5 секунд будет срабатывать реле. Ее можно задействовать для управления нагрузкой. При несовпадении ID будет загораться светодиод.




© digitrode.ru


<Via>


Теги: Arduino, RFID




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий