Разработка модуля идентификации персонала для систем контроля и управления доступом

Модуль идентификации как программно-аппаратный комплекс, состоящий из контроллера, набора различных считывателей и программного обеспечения. Сравнительный анализ биометрических методов идентификации персонала. Исследование схемы питания контроллера.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 04.12.2019
Размер файла 3,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Введение

В основе работы любого защищенного объекта лежит необходимость регулировать допуск к какой-либо территории. Для решения этой задачи можно использовать как автономные модули идентификации, так и системы контроля и управления доступом. Автономные модули управляют только одной точкой доступа, а также требуют предварительной записи в память модуля ключей всех пользователей или использовать «мастер-ключ», который позволяет переключать режимы работы модуля между записью новых ключей и контролем доступа. Системы контроля и управления доступом управляют множеством точек доступа и позволяют переключать режимы работы подключенных модулей идентификации удаленно, посылая специальный сигнал. Встроенные в такие системы модули зачастую опираются на какой-либо один конкретный метод идентификации. С развитием вычислительной техники появилась возможность разработать модуль более широкого применения, сочетающий в себе несколько независимых методов идентификации. Целью данной выпускной квалификационной работы была определена разработка модуля, который объединяет в себе несколько методов идентификации персонала. Преимуществами такого решения является возможность использовать один протокол для управления замками и работы с системой, вне зависимости от типа и протокола работы считывателей.

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

В соответствии с заданием на выпускную квалификационную работу можно выделить следующие задачи:

- выбрать блоки регистрации для методов идентификации в соответствии с заданием;

- разработать структуру модуля идентификации;

- разработать схему сопряжения с блоком RFID;

- разработать схему сопряжения со сканером отпечатка пальца;

- разработать схему сопряжения со считывателем Touch Memory;

- разработать программу для программирования ключей модуля при помощи компьютера;

- промоделировать схемы сопряжения в Proteus.

- разработать алгоритм работы модуля;

- разработать программное обеспечение модуля для работы с Touch memory;

- разработать программное обеспечение модуля для работы с RFID;

- разработать программное обеспечение модуля для связи с системой контроля и управления доступом;

- протестировать работу модуля.

1. Анализ методов идентификации персонала

1.1 Анализ биометрических методов идентификации персонала

Изначально, биометрию для идентификации начали использовать сотрудники правоохранительных органов и служб государственной безопасности. В наше время биометрические средства контроля можно встретить в повседневной жизни (например, в составе смартфонов, ноутбуков, автомобилей). [1]

Для определения параметров эффективности СКУД на основе биометрической идентификации используют следующие показатели:

- FAR - коэффициент ложного пропуска;

- FMR - вероятность, что система неверно сравнивает входной образец с несоответствующим шаблоном в базе данных;

- FRR - коэффициент ложного отказа;

- FNMR - вероятность того, что система ошибётся в определении совпадений между входным образцом и соответствующим шаблоном из базы данных;

- График ROC - визуализация компромисса между характеристиками FAR и FRR;

- Коэффициент отказа в регистрации (FTE или FER) - коэффициент безуспешных попыток создать шаблон из входных данных (при низком качестве последних);

- Коэффициент ошибочного удержания (FTC) - вероятность того, что автоматизированная система не способна определить биометрические входные данные, когда они представлены корректно;

- Ёмкость шаблона - максимальное количество наборов данных, которые могут храниться в системе. [3]

Начнём рассмотрение биометрических методов с идентификации по отпечатку пальца. Ещё в древности люди пытались использовать отпечатки ладоней для заключения сделок или обличения преступников, но полномасштабно изучение физиологических особенностей человека для идентификации началось в 1880 году с труда шотландского врача Генри Фоулдса (Henry Faulds) о многообразии и уникальности отпечатков пальцев. В этой работе он предложил использовать отпечатки пальцев для идентификации преступников. Позднее, в 1900 году, Эдвард Генри и Фрэнсис Гальтон представили классификацию отпечатков пальцев, что помогло развитию дактилоскопии. [2]

Первый департамент идентификации был создан ФБР в 20х годах ХХ века. Он представлял из себя хранилище идентификационных данных о преступниках для правоохранительных органов США.

В качестве следующего метода идентификации, рассмотрим идентификацию по радужной оболочке глаза. Идея, лежащая в основе данного метода, была предложена офтальмологом Фрэнком Берчем в 1936 году. Силами технологий середины ХХ века не представлялось возможным реализовать данную идею, но к ней вернулись в конце 80х, начале 90х годов. В 1990 году Джон Даугман разработал практический алгоритм кодирования структуры радужной оболочки глаза. Далее он продолжил развивать этот метод.

Ещё один способ распознавания человека - идентификация по очертаниям лица. Ещё в XIX веке полицейские использовали фотографии или рисунки, сделанные по словесным описаниям, для поимки преступников. Но в то время нельзя было однозначно идентифицировать человека по таким данным, пока в 1971 году A.J. Goldstein, L.D. Harmon, A.B. Lesk не публикуют статью «Identification of human faces». В этой статье они выделяют 22 относительных маркера на человеческом лице, по которым можно произвести автоматическую идентификацию. В дальнейшем это исследование позволило создать компьютерные программы для идентификации лиц.

Последний метод биометрической идентификации, который будет рассмотрен в данной работе - это метод идентификации по рисунку вен на ладони. Первые сканеры отпечатка ладони появились в 1974 году. Их использовали в основном для контроля доступа, отслеживания времени входа/выхода и посещаемости, для идентификации людей.

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

Исследование компании Acuity Market Intelligence, проведённое в 2010 году показало, что более 70% компаний на мировом рынке биометрических технологий используют технологии идентификации по отпечатку пальца. На втором и третьем местах стоят идентификация по очертаниям лица (13,7%) и идентификация по радужной оболочке глаза (7%). Системы, основанные на идентификации по отпечатку пальца, имеют хорошее соотношение показателей точности, надёжности, быстроты идентификации и стоимости владения (приобретение и эксплуатация системы). Главным конкурентом систем, основанных на идентификации по отпечатку пальца, являются системы, основанные на идентификации по капиллярному рисунку пальца. Капиллярный рисунок так же неповторим, а стоимость его сканеров сравнима со стоимостью сканеров отпечатка пальца. [2]

Проведём сравнение методов по критериям, описанным в начале данного пункта. Для начала сравним методы по критериям FAR и FRR. Система считается тем точнее, чем меньше эти коэффициенты. Сами коэффициенты рассчитываются путём применения методов математической статистики. Коэффициенты FAR и FRR для распознавания по отпечатку пальца, лицу, рисунку вен и радужной оболочке глаза приведены в таблице 1.

Таблица 1. Коэффициенты FAR и FRR для различных методов идентификации

Биометрический метод идентификации

FAR

FRR

Отпечаток пальца

0,001%

0,6%

Распознавание лица 2D

0,1%

2,5%

Распознавание лица 3D

0,0005%

0,1%

Радужная оболочка глаза

0,00001%

0,016%

Рисунок вен

0,0008%

0,01%

Для определения качества работы системы недостаточно использовать только показатели FAR и FRR. Например, если в качестве источника идентификационной информации использовать ДНК, то данные коэффициенты стремятся к нулю, но при этом такие показатели как скорость обработки данных и цена системы возрастают до неприемлемых размеров. То есть, для комплексного анализа качества системы необходимо учитывать и такие показатели как:

- возможность подделки биометрических данных;

- стабильность (неизменность с течением времени) биометрических данных;

- скорость аутентификации;

- возможность бесконтактной работы;

- стоимость реализации способа идентификации.

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

Таблица 2. Возможность фальсификации биометрических данных

Биометрический метод идентификации

Фальсификация

Отпечаток пальца

Возможна

Распознавание лица 2D

Возможна

Распознавание лица 3D

Проблематично

Радужная оболочка глаза

Безуспешна

Рисунок вен

Невозможно

Неизменность биометрических данных понятие довольно условное: некоторые данные могут быть изменены вследствие получения травмы или медицинского вмешательства. Искажения могут носить как временный характер (например порез на пальце может временно исказить снимок отпечатка пальца и система не сможет его распознать), так постоянный характер (например после серьёзной пластической операции системы, использующие распознавание по лицу, не смогут распознать «новое» лицо данного пользователя). Так же, проблемы с доступом появятся, если источник идентификационной информации будет утрачен (потеря кисти или пальца, потеря глаза). Параметры неизменности биометрических данных представлены в таблице 3.

Таблица 3. Неизменность биометрических характеристик

Биометрический метод идентификации

Неизменность характеристики

Отпечаток пальца

Низкая

Распознавание лица 2D

Низкая

Распознавание лица 3D

Высокая

Радужная оболочка глаза

Высокая

Рисунок вен

Средняя

Ещё один не маловажный параметр системы контроля и управления доступом - это скорость аутентификации. Скорость аутентификации зависит от скорости снятия биометрической характеристики, объёма данных, необходимых для идентификации, алгоритма реализации метода, вычислительных мощностей, отведённых для распознавания. Так, для распознавания лица, как правило, системе требуется выделить отличительные черты лица, по которым затем составляется идентификатор для сравнения с идентификаторами, хранящимися в системе. Это требует больших вычислительных мощностей.

Идентификация по отпечатку пальца в этом плане потребует гораздо меньших мощностей, так как алгоритм распознавания по отпечатку пальца не использует для анализа весь снимок отпечатка, а только определённые его участки, на основании данных из которых так же формируется идентификатор для сравнения с базой идентификаторов в модуле. Параметры скорости аутентификации для разных методов приведены в таблице 4.

Таблица 4. Скорость аутентификации при использовании различных методов идентификации

Биометрический метод идентификации

Скорость аутентификации

Отпечаток пальца

Высокая

Распознавание лица 2D

Средняя

Распознавание лица 3D

Низкая

Радужная оболочка глаза

Высокая

Рисунок вен

Высокая

Возможность идентификации на расстоянии позволяет использовать биометрические средства идентификации на объектах с ужесточённым санитарно-гигиеническим контролем (например объекты медицинского назначения, пищевой промышленности, исследовательские институты и лаборатории). Кроме того, возможность идентификации объекта на расстоянии ускоряет процесс распознавания, что актуально для крупных СКУД. Кроме того, идентификация на расстоянии может помочь правоохранительным органам в служебных целях. Так же, ведутся разработки по бесконтактному считыванию отпечатка пальца, но пока не удалось получить стабильно работающую систему. Возможность бесконтактной идентификации для разных методов представлена в таблице 5.

Таблица 5. Возможность бесконтактной идентификации

Биометрический метод идентификации

Бесконтактная идентификация

Отпечаток пальца

Безуспешна

Распознавание лица 2D

На большом расстоянии

Распознавание лица 3D

На среднем расстоянии

Радужная оболочка глаза

На большом расстоянии

Рисунок вен

На близком расстоянии

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

Таблица 6. Стоимость реализации различных биометрических методов

Биометрический метод идентификации

Стоимость

Отпечаток пальца

Низкая

Распознавание лица 2D

Средняя

Распознавание лица 3D

Высокая

Радужная оболочка глаза

Высокая

Рисунок вен

Средняя

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

1.2 Анализ не биометрических способов идентификации персонала.

В этой части работы будут рассмотрены преимущества и недостатки таких методов как использование пароля, RFID (Radio Frequency Identification), использование Touch Memory.

Пожалуй, самым старым методом не биометрической идентификации является использование пароля. Ещё в древние времена появилась необходимость убедиться в достоверности полученных данных от того или иного лица. Для этого использовались кодовые слова или замысловатые печати. С развитием технологий кодовые слова превратились в набор символов, который нужно было ввести в правильной последовательности для получения доступа к тому или иному объекту (например шифр для открытия сейфа). В наше время пароли перекочевали в цифровой мир и повсеместно используются для прохождения подтверждения личности в повседневной жизни. Парольная идентификация не очень пригодна для использования в составе СКУД, так как паролем могут завладеть третьи лица (подсмотрев или выпытав его из носителя пароля). Это является критическим недостатком, поэтому в разработке модуля не будет использоваться данный метод.

Рассмотрим метод радио частотной идентификации (RFID). Данная технология берёт начало в 1973 году, когда был зарегистрирован первый патент на перезаписываемую активную RFID метку. Позднее, по просьбам фермеров, была разработана пассивная метка, которую вживляли коровам, чтобы отследить приём лекарств и передвижение. Эти метки работали на частоте 125кГц и положили начало первому стандарту. Метки получали энергию от электромагнитного поля считывателя для передачи информации. Со временем частотный диапазон был расширен до 13,56МГц, так как эта частота не использовалась в большинстве стран мира. Переход на высокую частоту позволил увеличить скорость считывания кода из метки и дальность передачи данных. В наше время высокочастотные RFID метки применяют для контроля доступа, в платёжных системах и бесконтактных smart-картах. В начале 90х инженеры IBM разработали ультравысокочастотную метку. Эти метки позволили ещё больше увеличить дальность срабатывания и скорость передачи данных, но компания IBM не хотела использовать наработки в этой области в коммерческих целях. Лишь после покупки прав на данную технологию компанией Intermec данная технология начала активно применяться. Позднее, на основе этой технологии, разработали системы отслеживания продуктов в системе поставок. [4]

В работе планируется использовать пассивные метки высокочастотного диапазона и считыватель для них. Существуют модели меток, внутри которых хранится только уникальный заводской номер метки. При попадании метки в поле считывателя, она передаёт записанную на ней информацию в контроллер, где полученный идентификатор сравнивается со списком известных идентификаторов. В работе будет достаточно использовать этот номер как идентификатор для получения доступа.

В качестве контактного способа идентификации можно использовать микросхемы Touch Memory серии DS1990A. Данные микросхемы используются, например, в домофонах в качестве ключей. Это возможно благодаря тому, что в микросхеме хранится уникальный 48 битный серийный номер. Его можно использовать в качестве идентификатора для получения доступа. Кроме того, связь между считывателем и контроллером реализуется при помощи простого однопроводного интерфейса 1-Wire. Дешевизна и надёжность ключей, простота реализации связи считывателя с модулем дают нам основание применить данную технологию в разрабатываемом модуле. [5]

Таким образом, были выбраны следующие методы идентификации для реализации в модуле: идентификация по отпечатку пальца, RFID, идентификация по Touch Memory.

2. Выбор считывателей для модуля

Для идентификации по Touch Memory была выбрана схема электронного ключа Dallas Semiconductors DS1990A (далее DS1990A). Это самая простая схема семейства, которая обладает только уникальным кодом, прописанным в неё при производстве, который невозможно изменить. Контактор ля схем данного семейства соединяется с контроллером по однопроводному интерфейсу 1-Wire.

Для считывания RFID карт был выбран модуль MFRC-522, который может работать с RFID картами стандарта MIFARE. Данное семейство карт работает в диапазоне 13,56 МГц, что позволят осуществлять более быстрый обмен данными между картой и считывателем. Данный считыватель может быть соединён с контроллером по интерфейсу SPI.

В качестве блока идентификации по отпечатку пальца был выбран модуль Adafruit Optical Fingerprint Sensor (Adafruit OFS). Данный модуль легко подключить к микроконтроллеру, так же, он имеет встроенную память для хранения 162 шаблонов отпечатков пальцев, связь с контроллером осуществляется по последовательному интерфейсу UART.

3. Требования к разрабатываемому модулю

На основе технического задания были сформированы характеристики разрабатываемого модуля идентификации:

- Модуль поддерживает два режима работы: режим записи ключей и режим контроля доступа.

- переключение между режимами работы модуля осуществляется через специальную утилиту, установленную на центральном компьютере системы;

- обмен данными между модулем идентификации и утилитой происходит по интерфейсу RS485;

- питание модуля идентификации от блока питания постоянного напряжения 12В;

- память, достаточная для хранения 100 ключей пользователей.

4. Разработка структуры модуля

Согласно выбранным методам идентификации были выбраны соответствующие модули регистрации. Для метода RFID был выбран считыватель карт MFRC522, в качестве ключа Touch Memory была выбрана схема DS1990A, в качестве считывателя отпечатка пальца был выбран модуль Adafruit Fingerprint Sensor. Схема MFRC522 поддерживает связь с контроллером по интерфейсу SPI, схема DS1990A соединяется с контроллером через контактор по интерфейсу 1-Wire LAN, модуль считывания отпечатка пальца Adafruit Fingerprint Sensor соединяется с контроллером по UART. Связь модуля идентификации с системой контроля и управления доступом осуществляется по UART. Структура модуля представлена на рисунке 1.

Рисунок 1. Структура модуля идентификации

Под основной системой понимается ПК с установленной на нём программой для управления модулем.

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

Зарегистрированные ключи Touch Memory и RFID хранятся в памяти контроллера, зарегистрированные отпечатки пальца хранятся в памяти считывателя.

Разработка алгоритма работы модуля.

В разрабатываемом модуле идентификации можно выделить 4 структурных блока: модуль работы с Touch Memory (DS1990A), модуль работы с MFRC522, модуль работы с Adafruit Fingerprint Sensor и модуль работы с системой контроля и управления доступом (СКУД). Эти модули практически не связаны друг с другом, поэтому их разработку можно производить параллельно. Модули последовательно опрашиваются контроллером. При обнаружении ключа на одном из считывателей или команды от СКУД, контроллер входит в соответствующую подпрограмму для распознавания ключа (в рабочем режиме), или для записи ключа (в режиме записи), или для обработки команды от СКУД. Такой подход прост в реализации, но исключает параллельную обработку информации, что может привести к потере данных. Оценим время для получения идентификатора схемы DS1990A. Для оценки будем сравнивать затраченное на обмен время с количеством машинных циклов процессора (на частоте 16МГц время машинного цикла составляет 62,5нс). Алгоритм работы модуля представлен на рисунке 2.

Рисунок 2. Алгоритм работы модуля

По протоколу обмена 1-Wire обмен данными начинается с процедуры инициализации, состоящей из последовательности импульсов Reset-Presence. Импульс Reset выдаётся мастер-устройством и длится 480мкс, в ответ, через 15-60мкс после получения импульса Reset, DS1990A выдаёт импульс Presence длинной 60-75мкс. В худшем случае на эту последовательность импульсов понадобится затратить 480+60+75=615мкс. После получения импульса Presence контроллер передаёт команду из 8 бит чтобы прочитать серийный номер схемы. Передача одного бита занимает один таймслот, величина которого равна 60-120мкс. Таким образом, передача 8 бит данных может занять до 960мкс. Временная диаграмма этого процесса представлена на рисунке 3 [12].

Рисунок 3. Временная диаграмма инициализации

После этого начинается чтение данных из DS1990A. Синхронизация чтения происходит в начале каждого тайм-слота путём того, что контроллер подаёт на линию импульс длинной 15мкс, в ответ на что схема DS1990A либо поддерживает низкий уровень на линии (чтение 0), либо линия возвращается в исходное состояние (чтение 1). Временные диаграммы процессов чтения и записи для DS1990A представлены на рисунке 4 [12].

Рисунок 4. Временные диаграммы процессов чтения и записи

Считывание одного бита происходит в рамках одного тайм-слота, значит на чтение 64 бит серийного номера схемы потребуется до 7680мкс. Итого процесс обмена данными (в сумме 72 бита) может затянуться на 9255мкс или на 9.255мс. За это время процессор мог бы выполнить 148080 машинных циклов. За секунду можно выполнить 108 таких циклов передачи и передать в сумме 7776 бит данных. Для сравнения, на скорости в 9600 бод по UART передаётся 7680 бит/с, а считыватель MFRC522 поддерживает скорость передачи данных по SPI до 10Мбит/с. То есть, можно сказать, что самая большая скорость работы у MFRC522.

Во время работы программы модуля, при поступлении команды от СКУД необходимо отложить выполнение текущей подпрограммы и выполнить приём информации от СКУД.

5. Выбор микроконтроллера и программных средств разработки

Исходя из алгоритмов работы, управляющим центром модуля идентификации должен быть микроконтроллер, т.е. микросхема, предназначенная для контроля над различными электронными устройствами. Существует множество различных семейств микроконтроллеров, например, микроконтроллеры компании Intel -- MCS 51, микроконтроллеры компании Atmel -- AVR.

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

Для обеспечения связи модуля идентификации с различными считывателями контроллер должен поддерживать ряд интерфейсов: для связи со считывателем отпечатка пальца - UART; для считывателя RFID - SPI, для связи контактора Touch Memoryс контроллером - 1-Wire.

Так же, для связи модуля с системой контроля и управления доступом предполагается использовать UART.

Во время поиска микроконтроллера были выбраны модели семейства ATmega8 компании Atmel. Так, ATmega 2560 поддерживает необходимый набор интерфейсов, обладает шестью таймерами-счётчиками (два восьми битных, четыре шестнадцати битных), поддерживает шесть внешних источника прерываний.

Найти готовую оценочную плату с ATmega 2560 не удалось, поэтому для первичного макета модуля был выбран отладочный модуль ATmega 328 Xplained Mini, который содержит в себе все необходимые средства для программирования контроллера через компьютер и для разработки макета модуля.

ATmega 328 Xplained Mini содержит загрузчик (bootloader), позволяющий пользователю загрузить свою программу в микроконтроллер без использования отдельных программаторов. Загрузчик соединяется с компьютером через USB интерфейс.

Выбор программных средств разработки.

Для программирования микроконтроллеров производства компании Atmel существует среда программирования Atmel Studio. Данная среда базируется на Visual Studio и позволяет писать программы для контроллера как на ассемблере, так и на языке C/C++, адаптированном для программирования контроллеров. Данная среда предоставляется вместе с отладочным модулем, при подключении платы к компьютеру происходит его автоматическое определение средой программирования. Для начала работы со средой необходимо создать новый проект. При создании проекта можно выбрать язык программирования (Assemblerили C/C++), если выбран язык C/C++, то для преобразования высокоуровневого кода в hex файл прошивки контроллера будет использоваться компилятор GCC. Так же, существует возможность преобразования файлов типа Arduino sketch в проекты Atmel Studio. После создания проекта необходимо выбрать средство отладки проекта (либо встроенный в плату отладчик, либо симуляция работы контроллера).

6. Разработка схем сопряжения модуля с модулями считывания ключей

6.1 Разработка схемы сопряжения модуля с Touch Memory

Рабочее напряжение выбранного нами процессора ATmega 2560 равно 5В. Если превысить этот уровень напряжения, то контроллер может выйти из строя. Так как контактор Touch Memory представляет собой два контакта, которые напрямую подключены к контроллеру, то для защиты входа контроллера от перенапряжения необходимо разработать схему, которая бы позволила защитить вход при подаче на него опасно высокого напряжения. Логическая схема подключения схемы защиты входа и контактора Touch Memory представлена на рисунке 5.

Рисунок 5. Логическая структура схемы сопряжения

Помимо защиты входа контроллера от перенапряжения, схема не должна понижать величину выходного сигнала порта контроллера ниже 2.8 В, так как это минимально допустимое напряжение для работы схемы DS1990A и схема не должна искажать логические уровни напряжения

Сначала необходимо ограничить ток, подаваемый на вход. Для этого используется токоограничивающий резистор. Внутренний резистор микроконтроллера и токоограничивающий резистор образуют делитель напряжения, значит значение сопротивления токоограничивающего резистора должно быть довольно большим (для большинства входов допустимы значения от 100 Ом до 10 кОм). Если к токоограничивающему резистору добавить конденсатор, то получится фильтр нижних частот (ФНЧ). При таком подходе нужно внимательно отнестись к выбору номиналов элементов схемы, так как от них будут зависеть параметры фильтра. Номиналы нужно подобрать так, чтобы контроллер не пропустил ни одного сигнала. Расчёт номиналов элементов происходит по следующей формуле:

,

где fс - частота среза фильтра, R - сопротивление резистора, С - ёмкость конденсатора.

При расчёте частоты работы схемы f будем исходить из длины тактового сигнала считывания Touch Memory (15мкс). Это время является половиной периода сигналаT, который должен проходить через фильтр. Учитывая, что частота обратно пропорциональна периоду, можно получить следующие данные:

f=1/T=1/(30*10-6)=33333.33Гц.

Максимальное значение ёмкости линии передачи для DS1990A равно 800пкФ. Ближайшее снизу к этому стандартное значение ёмкости равно 680пкФ. Исходя из этого значения, необходимо подобрать соответствующее значение сопротивления. Используя вышеуказанную формулу, получим:

.

Стандартное значение сопротивления, ближайшее к расчётному, равно 6,98кОм

Используя указанные значения номиналов элементов, можно собрать схему, показанную на рисунке 6.

Рисунок 6. Схема защиты с фильтром нижних частот

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

Рисунок 7. Схема защиты с ФНЧ и стабилитронами

6.2 Разработка схемы сопряжения модуля с MFRC522

Выбранный нами считыватель MFRC522 связывается с контроллером по интерфейсу SPI. ATmega 2560 имеет встроенный SPI контроллер, что позволяет нам напрямую подключить считыватель к контроллеру, но, для повышения надёжности схемы и защиты считывателя от неправильного подключения, необходимо разработать схему сопряжения для выходов MOSI, MISO, SCK, SS. Питание считывателя осуществляется от напряжения 3,3В. Логическая схема подключения считывателя RFID к контроллеру представлена на рисунке 8.

Рисунок 8. Логическая структура схемы сопряжения с RFID

Для защиты устройства и повышения надёжности схемы вставим на линии токоограничивающие резисторы. Для защиты от намеренного подключения стороннего устройства, выходной сигнал которого может вывести из строя контроллер, используем стабилитроны. Пример схемы подключения представлен ниже. Если на контакты разъёма J5 подать напряжение 12В, то разработанная схема ограничивает напряжение на выводах до 5В. Схема сопряжения портов SPI с MFRC522 изображена на рисунке 9.

Рисунок 9. Схема сопряжения портов SPI с MFRC522

6.3 Разработка схемы сопряжения модуля со сканером отпечатка пальцев

Выбранный нами считыватель Adafruit Fingerprint Sensor соединяется с контроллером через UART. У выбранного нами контроллера есть все необходимые для подсоединения считывателя выходы, значит считыватель можно подключить напрямую к контроллеру. Защита входов TX и RX контроллера осуществляется аналогично интерфейсу SPI. Схема сопряжения модуля со сканером отпечатка пальцев изображена на рисунке 10.

Рисунок 10. Схема сопряжения модуля со сканером отпечатка пальцев

6.4 Разработка схемы сопряжения модуля со СКУД

Так как взаимодействие модуля с системой происходит по интерфейсу RS485, то необходимо использовать контроллер MAX487, который поможет привести логические уровни сигнала UART к логическим уровням сигнала RS485. Для защиты выходов MAX487 использован специальный супрессор SM712 (VD5). Данная модель двухканального супрессора специально разработана для защиты входов устройств, использующих интерфейс RS485. Схема сопряжения модуля со СКУД представлена на рисунке 11.

Рисунок 11. Схема сопряжения модуля со СКУД

6.5 Разработка схемы питания модуля

Для питания контроллера необходимо напряжение 5В. Для того, чтобы избежать уменьшения напряжения питания из-за потребления тока контроллером, было принято решение использовать блок питания на 12В подключённый к контроллеру через интегральный стабилизатор напряжения LM7805, который понижает входное напряжение до 5В и может обеспечить ток до 1А. Для сглаживания входных и выходных пульсаций были применены конденсаторы, для защиты от не правильного подключения блока питания к схеме на входе LM7805 был установлен диод. Так же, в схеме присутствует индикаторный светодиод, который показывает, что модуль подключён к блоку питания. Схема питания контроллера представлена на рисунке 12.

Рисунок 12. Схема питания контроллера

Разработка электрической принципиальной схемы модуля.

Электрическая принципиальная схема модуля объединяет в себе схемы сопряжения со считывателями и схему питания, которые подключены к соответствующим выходам контроллера, а также схему подключения тактового генератора к контроллеру. Общая схема представлена на следующем рисунке.

На схеме присутствуют следующие разъёмы: J1 - штыревой разъём для подключения контактора Touch Memory, J2 - штыревой разъём для подключения Adafruit OFS; J3 - разъём для подключения модуля к системе (RS485); J4 - разъём питания (DS-201); J5 - штыревой разъём для подключения MFRC522; J6 - штыревой разъём для вывода управляющего сигнала для замка. Электрическая принципиальная схема модуля изображена в приложении 1, перечень элементов представлен в приложении 2.

7. Разработка алгоритма работы модуля с Touch Memory

Согласно документации на схему DS1990A можно выделить следующий алгоритм работы модуля с Touch Memory. В начале контроллер должен подать низкий уровень сигнала на линию передачи данных чтобы выполнить функцию Reset для схемы DS1990A. Если схема присутствует на линии, то она ответит контроллеру подачей импульса низкого уровня на линию данных. После этого схема будет ожидать команду от микроконтроллера (контроллер должен подать команду на считывание id схемы). Биты байта по линии данных передаются младшим битом вперёд, передача одного бита занимает один таймслот. Каждый таймслот начинается с тактового импульса низкого уровня от контроллера, после чего, в зависимости от полярности бита, низкий уровень на линии либо поддерживается (передача 0), либо, через подтягивающий резистор, уровень на шине возвращается к питанию (передача 1). После получения команды от микроконтроллера, схема будет ожидать тактовые импульсы для передачи своего id контроллеру. Процесс передачи данных от схемы к контроллеру происходит по тем же правилам, что и передача команды (младшим битом вперёд, по таймслотам). В процессе передачи данных от DS1990A к контроллеру, контроллер выдаёт тактовые импульсы низкого уровня для определения начала таймслота передачи бита, после этого контроллер ждёт реакции от DS1990A. Если схема поддерживает низкий уровень на линии, то контроллер считает 0; если схема не поддерживает низкий уровень, то уровень сигнала на линии вернётся к напряжению питания и контроллер считает 1.

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

Если модуль находится в режиме записи ключей, то полученный ключ помещается в список ключей, который находится в памяти контроллера. Если память заполнена, то необходимо отправить сообщение об этом на компьютер системы контроля и управления доступом. В этом случае новый ключ записан не будет. Укрупнённая схема алгоритма представлена на рисунке 13.

Рисунок 13. Укрупнённая схема алгоритма работы модуля

8. Разработка программного обеспечения модуля для работы с Touch Memory

Перед началом исполнения программы нужно провести первичную инициализацию используемых переменных и ресурсов микроконтроллера. Из ресурсов контроллера программа использует прерывание по переполнению таймера/счётчик 1 (далее Т/С1) и внешнее прерывание по изменению сигнала на ножке 3 порта D (далее PD3). Порт D необходимо инициализировать на ввод информации. Т/С1 необходимо инициализировать как счётчик сигналов внутреннего источника без использования предделителя тактовой частоты (регистры TCCR1AиTCCR1B) и разрешить прерывания по переполнению Т/С1 (регистр TIMSK1) [6]. Так же, необходимо разрешить прерывания по нисходящему фронту на PD3 (регистр EICRA) [7]. Инициализация ресурсов контроллера показана на рисунке 14.

Рисунок 14. Инициализация ресурсов контроллера

Для контроля за считыванием кода с ключа Touch Memory был создан тип WaitState, который представляет собой специальный регистр. Описание данного типа представлено на рисунке 15.

Рисунок 15. Описание типа WaitState

Далее была заведена переменная state данного типа.

В начале программного цикла необходимо перевести PD3 в режим с подтягивающим резистором. Для этого используется функция setPullUpPD3(), представленная на рисунке 16.

Рисунок 16. Функция setPullUpPD3

Эта функция использует макросы clearBit и setBit, которые были написаны на ассемблере для очистки и установки бита в порту, так как средства языка AVRC не позволяют напрямую управлять битами порта. Данные макросы используют ассемблерные команды CBI (для очистки бита) и SBI (для установки бита).

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

Листинг макросов представлен на рисунке 17.

Рисунок 17. Макросы clearBit и setBit

Ключевое слово «_volatile__» показывает компилятору, что эти макросы не нужно оптимизировать, так как используемый компилятор AVRGCC может пропускать некоторые участки кода во время компиляции программы.

После установки PD3 в режим с подтягивающим резистором, вызывается основная процедура программы proc1. В начале этой процедуры происходит инициализация всех битов переменной state в 0, затем происходит установка бита waitResEndBit, который показывает наступление конца импульса reset. После этого происходит загрузка стартового значения в таймер, вызов функции для установления низкого уровня на PD3 и разрешаются прерывания. Листинг процедуры proc1 представлен на рисунке 18.

Рисунок 18. Процедура proc1

Функция clearPD3 переводитPD3 в режим выхода и устанавливает на выход 0. Листинг данной функции представлен на рисунке 19.

Рисунок 19. Функция clearPD3

Далее ожидается наступление прерывания от Т/С1, в котором проверяется значение бита waitResEndBit. Если бит установлен, то PD3 устанавливается как вход с подтягивающим резистором, бит waitResEndBit обнуляется и устанавливается бит waitPresPulsBit, который показывает ожидание начала ответного импульса presence от схемы DS1990A. После этого происходит разрешение прерываний по спаду сигнала на PD3(макрос fallEdgeInt1 хранит в себе нужное для этого значение) и загрузка стартового значения в Т/С1 для отсчёта времени ожидания импульса presence. Если за отведённое время ожидания импульс presenceне начался, то наступает прерывание по переполнению Т/С1, в котором происходит остановка Т/С1, возвращение к стартовому состоянию и повторная выдача импульса reset. Листинг описанных действий представлен на рисунках 20, 21.

Рисунок 20. Окончание выдачи Reset и начало ожидания Presence

Рисунок 21. Возвращение к стартовому состоянию

Если импульс presence начался, то наступает прерывание по спаду на PD3. В этом прерывании происходит остановка Т/С1 и проверка режима внешнего прерывания на PD3. Если установлено прерывание по спаду, то происходит смена режима внешнего прерывания на прерывание по фронту, обнуление бита waitPresPulsBit, установка бита waitPresPulsEndBit, который показывает ожидание конца импульса presence, и запуск Т/С1. В Т/С1 загружается стартовое значение для отсчёта времени ожидания конца импульса presence. Если за отведённое время импульс presenceне подошёл к концу, то происходит возвращение к начальному состоянию программы, как описано выше. Листинг описанного прерывания представлен на рисунке 22.

Рисунок 22. Ожидание окончания импульса Presence

Если наступило прерывание по фронту на PD3, то происходит проверка режима прерывания. Если установлен режим прерывания по фронту, то бит waitPresPulsEndBit обнуляется, прерывания по изменению сигнала на PD3 запрещаются, устанавливается бит waitBeforWriteBit, который показывает ожидание до начала выдачи команды чтения на схему DS1990A, и в Т/С1 загружается стартовое значение для отсчёта времени ожидания до начала выдачи команды.

Листинг данного прерывания представлен на рисунке 23.

Рисунок 23. Ожидание перед началом выдачи команды

После этого, по наступлению прерывания по переполнению Т/С1, если бит waitBeforWriteBit был установлен, происходит его обнуление, выдача восьми бит команды чтения из схемы DS1990A, остановка Т/С1 и установка бита readBit. Листинг этого прерывания представлен на рисунке 24.

Рисунок 24. Передача команды чтения

Далее происходит возвращение в основной программный цикл и проверка бита readBit. Если он установлен, то контроллер начинает приём информации от схемы DS1990A. Поток информации в процессе приёма делится на байты (рисунок 26). Для приёма байта информации используется функция receive.

В этой функции выдаётся сигнал синхронизации битов (для этого PD3 устанавливается в режим выхода и обнуляется на 7 мкс, затем вновь устанавливается в режим входа с подтягивающим резистором). Через 15 мкс после этого, информация с порта D считывается в буфер, а на буфер накладывается маска для выделения значения на PD3. Если на PD3 была выделена единица, то возвращаемое значение сдвигается на 1 бит влево и на место нулевого бита записывается единица. Если на PD3 был выделен ноль, то возвращаемое значение только сдвигается на 1 бит влево. Затем контроллер ожидает 63 мкс, чтобы завершить таймслот приёма бита. Эти действия повторяются 8 раз для приёма восьми бит и формирования байта. Листинг данной функции представлен на рисунке 27.

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

Рисунок 25. Таблица контрольных сумм

Изначально значение контрольной суммы равно нулю. Чтобы узнать следующее значение контрольной суммы, необходимо взять из массива элемент, адрес которого равен исключающему или между принятым байтом и текущим значением контрольной суммы. Для этого используется функция do_crc_8. Листинг данной функции представлен на рисунке 28. Полный листинг кода представлен в приложении 3.

Рисунок 26.Чтение ID из DS1990A

Рисунок 27. Функция receive

Рисунок 28. Функция do_crc_8

Разработка алгоритма работы модуля с MFRC522.

Согласно документации на схему MFRC522 можно выделить следующий алгоритм работы модуля с RFID. Вначале работы со считывателем, необходимо провести его инициализацию. Для этого в регистры TModeReg, TPrescalerReg, TReloadRegH, TReloadRegL, TxASKReg, ModeReg [8] необходимо записать инициализирующие значения. Далее необходимо выполнить Soft Reset считывателя. Для этого необходимо отправить в командный регистр соответствующую команду и ожидать окончание процедуры Soft Reset [8]. Чтобы понять, что процедура Soft Reset кончилась, необходимо считывать командный регистр и проверять значение четвёртого бита в нём. Если бит 4 равен 1, то Soft Reset не окончен и необходимо ждать до тех пор, пока этот бит не станет равен нулю [8]. Согласно документации, после Soft Reset происходит отключение антенны, поэтому, для коммуникации с картой, её необходимо снова включить. Для этого необходимо установить нулевой и первый биты регистра TxControlReg. [8]

Теперь считыватель готов к поиску карты и получению информации от неё. Для поиска карты считывателю необходимо транслировать через антенну команду WakeUp. Если в поле считывателя несколько карт, то происходит выбор одной из них. Затем, происходит инициализация внутреннего буфера считывателя и остановка выполнения всех текущих команд для начала приёма данных от карты. Вначале, UID считывается из карты в буфер, затем, если во время считывания не произошло коллизий, UID поступает в контроллер.

Далее, в зависимости от режима работы модуля, необходимо либо произвести сравнение считанного UID со списком сохранённых UID и принять решение об открытии запорного механизма, либо сохранить считанный UID. Укрупнённый алгоритм работы модуля с MFRC522 представлен на рисунке 29.

Рисунок 29. Укрупнённый алгоритм работы модуля с MFRC522

Разработка программного обеспечения модуля для работы с MFRC522.

Для удобства чтения кода, в начале программы при помощи макросов были прописаны названия всех регистров, список команд для взаимодействия с модулем и картами, список кодов ошибок и список типов карт.

Перед началом исполнения программы необходимо произвести инициализацию ресурсов контроллера. Данная программа работает с интерфейсом SPI, который в контроллере находится на альтернативных функциях пинов 2, 3, 4 и 5 порта В. Настроим как выходы пины 2, 3 и 5 (SS, MOSI и SCK соответственно); пин 4 настроим как вход (MISO). Для переключения этих пинов в режим SPI необходимо в регистре SPCR установить бит 6 и перевести контроллер в режим Master, установив бит 4 в том же регистре. Так же, для выбора скорости передачи данных, установим биты 0 и 1 регистра SPCR. Установка этих битов означает, что частота тактовых импульсов будет равна fosc/128, где fosc - это тактовая частота контроллера [9]. Инициализация ресурсов контроллера представлена на рисунке 30. Если в регистр данных SPDR попадают новые данные, то они автоматически начинают передаваться на slave-устройство, а на их месте появляются ответные данные для предыдущей посылки.

Рисунок 30. Инициализация ресурсов контроллера

Согласно документации на MFRC522, для взаимодействия с блоком необходимо отправить адрес регистра, с которым будет происходить взаимодействие, при этом старший бит первого байта отвечает за режим передачи (если он равен 1, то будет производиться чтение данных по указанному адресу; если он равен 0 - то MFRC522 будет ожидать данные для записи по указанному адресу), а младший бит должен быть равен 0.[8]. Для взаимодействия с блоком MFRC522 по SPI используются функции WriteRegister, WriteRegisterBytes, ReadRegister, ReadRegisterBytes.

Функция WriteRegister последовательно передаёт адрес регистра, на который предварительно накладывается маска записи, и данные, которые необходимо записать по указанному адресу. Листинг данной функции представлен на рисунке 31.

Рисунок 31. Функция WriteRegister

Функция WriteRegisterBytes записывает несколько байт данных по адресу, который формируется аналогично с функцией WriteRegister. После передачи адреса передаётся последовательность байт для записи. Листинг данной функции представлен на рисунке 32.

Рисунок 32. Функция WriteRegisterBytes

Функция ReadRegister считывает байт данных по указанному адресу. Согласно документации, в начале передаётся адрес, на который наложена маска чтения, после этого MFRC522 передает данные, соответствующие предыдущему переданному адресу. Таким образом, в ответ на n-ый переданный байт адреса, приходят данные, находившиеся по адресу n-1. Листинг данной функции представлен на рисунке 33.

Рисунок 33. Функция ReadRegister

Функция ReadRegisterBytes позволяет считать массив байтов, которые находятся по указанному адресу (адрес передаётся в формате аналогичном функции ReadRegister). Листинг данной функции представлен на рисунке 34.

Рисунок 34. Функция ReadRegisterBytes

Перед началом работы с блоком MFRC522 необходимо произвести его инициализацию. Для этого используется функция Init. Регистры TModeReg и TPrescalerReg определяют режим работы таймера передатчика блока. Происходит установка таймера в режим автоматического запуска в конце передачи и выбор скорости передачи данных между картой и блоком MFRC522. В регистры TReloadRegH и TReloadRegL записывается 16-ти битное значение для перезагрузки таймера. Устанавливается шестой бит регистра TxASKReg, который переводит блок в режим ASK (Amplitude Shift Keying) модуляции выходного сигнала. Регистр ModeReg определяет основные настройки приёма и передачи. Так же, в этой функции происходит включение антенны при помощи функции AntennaOn. Листинг функции Init представлен на рисунке 35.

Рисунок 35. Функция Init

Для включения антенны в функции AntennaOn происходит проверка битов 1 и 0 регистра TxControlReg. Если они не установлены, значит антенна выключена и для её включения эти биты необходимо установить. Листинг данной функции представлен на рисунке 36.

Рисунок 36. Функция AntennaOn

После включения антенны нужно передать команду WakeUp на карту. Данная команда инициализирует карту для начала коммуникации. Она передаётся по цепочке функций. Сначала, вызывается функция WakeupA, которая с помощью функции TranscieveData передаёт команду WakeUp на карту. Так как вся коммуникация с картой происходит через функцию PCD_CommunicateWithPICC, в функции TransceiveData происходит её вызов. Если в поле блока MFRC522 присутствует карта, то по цепочке функций будет получен ответ STATUS_OK, который покажет, что в поле MFRC52 присутствует одна или несколько карт, готовых к передаче.

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

После считывания UID, необходимо проверить режим работы модуля. Если модуль находится в режиме контроля доступа, то необходимо сравнить считанный UID со списком сохранённых. Если было найдено совпадение, то необходимо произвести процедуру пропуска (выдать сигнал открытия запорного механизма, произвести задержку открытия и выдать сигнал закрытия запорного механизма). Если модуль находится в режиме записи ключей, то необходимо сохранить считанный UID в список зарегистрированных ключей. Полный листинг кода представлен в приложении 4.

Разработка алгоритма работы модуля с Adafruit OFS.

При поиске сканера отпечатка пальца во время анализа существующих решений были выявлены следующие проблемы: множество доступных сканеров либо предназначены для работы с конкретными СКУД и имеют закрытую структуру, либо являются частью комбинированных модулей, которые работают автономно и имеют в своём составе несколько типов считывателей. После долгих поисков подходящего сканера отпечатка пальца было принято решение остановиться на сканере Adafruit Optical Fingerprint Sensor. Руководство разработчика для данного сканера так же не доступно, но удалось найти библиотеку для работы с данным сканером через Arduino. В исходном коде данной библиотеки удалось найти команды для работы с этим считывателем и по исходному коду удалось восстановить алгоритм работы модуля.

Считыватель общается при помощи пакетов. Пакет содержит: старт код (2 байта), адрес считывателя (4 байта), тип пакета (1 байт), длину пакета (от 0 до 64) и данные (до 64 байт). Существуют следующие типы пакетов: командный пакет, пакет данных, пакет подтверждения, пакет окончания данных.

Для начала коммуникации со сканером необходимо отправить пакет с 4-х байтным адресом сканера и 4-х байтным паролем. По умолчанию сканер производит приём и передачу данных на скорости 9600 бод. Если адрес и пароль были отправлены верно, то считыватель ответит кодом ОК. После авторизации можно произвести настройку скорости передачи данных (при необходимости).

Для того, чтобы сканер считал отпечаток пальца необходимо отправить на него команду GETIMAGE (список команд и кодов представлен в приложении 4). Если удалось получить изображение пальца, то считыватель ответит кодом ОК. Если считыватель не смог распознать отпечаток пальца, то он ответит кодом NOFINGER. Если считыватель не смог распознать команду, то он ответит кодом PACKETRECIEVEERR. Если произошла ошибка снятия скана отпечатка пальца, то считыватель ответит кодом IMAGEFAIL.


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.