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

 

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



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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