Устройство электронной печати на базе микроконтроллера MSP430
В наше время на мировом рынке систем ограничения доступа в офисные и производственные помещения идет активное вытеснение механических замков электронными и электронно-механическими. Уже получили распространение «замки-невидимки» с дистанционным управлением, замки с блокировкой/разблокировкой от встроенной в ключ и замок RFID-системы. Тем не менее, в большинстве российских, особенно государственных, учреждений, по-прежнему используются механические замки различной степени сложности и архаичный метод аутентификации - опечатывание с помощью пластилина. Недостатки, присущие этому методу, очевидны: легкость изготовления поддельной печати; невозможность фиксации момента времени открытия/опечатывания; невозможность быстрой замены печати в случае ее утраты и т. д.
Чтобы повысить индивидуальный уровень защиты помещения, не прибегая к установке дорогих запорных систем с кодовой аутентификацией, было разработано недорогое устройство электронной печати - замена «пластилиновому» методу. Использование данного устройства не требует замены или какой-либо доработки существующего механического замка в данном помещении.
Принцип действия и алгоритм работы электронной печати заключается в следующем: в процессе опечатывания корпус устройства накладывается на замочную скважину, блокируя ее входное отверстие. Установка устройства производится на две металлические втулки, размещенные сверху и снизу относительно замочной скважины, в верхние части которых вмонтированы постоянные магниты Nd-Fe-B. Это единственный способ доработки наружной поверхности корпуса замка.
Магниты выполняют двойную функцию: осуществляют фиксацию и удержание корпуса электронной печати на скважине замка; являются элементами датчика присутствия устройства, реализованном на цифровом омниполярном датчике Холла А3212 компании Allegro Microsystems Inc. При установке устройства на металлические втулки происходит его активация. При этом в течение 7 секунд индицируется сгенерированный псевдослучайный цифровой код печати и начинается отсчет времени. При нажатии на контрольную кнопку происходит индикация кода печати и интервала времени с момента опечатывания. Для перезапуска устройства достаточно его снять и снова поставить.
Алгоритм работы электронной печати состоит в следующем:
1. Печать снята с корпуса замка - выход датчика Холла «0 р 1», микроконтроллер - в SLEEP-peжиме. Каждую секунду происходит прерывание от интервального таймера.
В подпрограмме обработки прерывания _interrupt void watchdog_timer (void) реализуются следующие функции:
- генерация последовательности пяти псевдослучайных чисел (функция rand);
- запись значений минут и часов в соответствующие ячейки;
- выход из подпрограммы прерывания в SLEEP-peжим.
2. Устройство активизировано - выход датчика Холла «1 р 0», генерация прерывания. В подпрограмме обработки прерывания _interrupt void port1_ISR (void) происходит:
- останов таймера;
- запись последних пяти сгенерированных псевдослучайных чисел в буфер sens;
- отображение на LED индикаторе числа «печати» из буфера sens;
- обнуление и запуск таймера;
- выход из подпрограммы прерывания в SLEEP peжим.
3. При нажатии на кнопку контроля - генерация нового прерывания _interrupt void port2_ISR (void):
- останов таймера;
- отображение в течение 3 секунд на LED индикаторе числа «печати» из буфера sens;
- отображение в течение 3 секунд интервала времени с момента установки печати; формат отображения времени «00 минут: 00 часов» (0...59 минут, 0...99 часов).
- перезапуск таймера (с точки останова);
- выход из подпрограммы прерывания в SLEEP-peжим.
Для обеспечения режима минимального энергопотребления устройства LED-индикатор используется в режиме динамической индикации.
Предлагаемый алгоритм работы электронной печати позволяет не только определить факт несанкционированного доступа в помещение (при съеме/установке устройства генерируется новая пятиразрядная последовательность псевдослучайных чисел), но и интервал времени от момента несанкционированного вскрытия до момента контроля.
Программный код для микроконтроллера MSP430F1232 написан на языке Си. Здесь нужно отметить некоторые особенности программы:
1. Регистр статуса микроконтроллера переводится в режим LPM3 [1];
_BIS_SR(GIE+LPM3_bits);
2. Сторожевой таймер переводится в режим интервального таймера с управлением от внешнего кварцевого генератора 32,768 кГц;
WDTCTL=WDTPW+WDTCNTCL+WDTSSEL+WDTTMSEL;
//Ft=32768/32768=1Hz
IE1=WDTIE;
//Разрешение прерывания от интервального таймера.
3. Для отсчета временных интервалов используется Таймер А.
4. Функция rand() основана на генерации рекуррентной последовательности и возвращает равномерно распределенное псевдослучайное число в интервале значений 0...32767. Эта функция описана в файле <stdlib.h>.
С целью улучшения статистических свойств и уменьшения вероятности повторения начальных значений rand(), при перезапуске программы (например, при замене источника питания) вводится дополнительный временной случайный фактор - генерация значений rand() происходит в подпрограмме обработке событий интервального таймера WDT. Вот так она выглядит:
//Ежесекундное прерывание от интервального таймера;
//Запись значений минут и часов в соответствующие ячейки;
//Генерация новых случайных чисел;
#pragma vector=WDT_VECTOR
_interrupt void watchdog_timer(void)
{
unsigned int g=0;
unsigned char n=0;
//Отсчет времени
sec1++;
if(sec1>9)
{sec10++; sec1=0;}
if(sec10>=6)
{min1++; sec10=0; sec1=0;}
if(min1>9)
{min10++; min1=0;}
if(min10>=6)
{ch1++; min10=0; min1=0;}
if(ch1>9)
{ch10++; ch1=0;}
if(ch10>9)
{ch10=0; ch1=0;}
//****генерация новых случайных чисел*****
for(n=0; n<=4; n++)
{
g=rand()&0x000F; //Функция возвращает значение от 0 до F
if(g==0x000A)g=1;
if(g==0x000B)g=2;
if(g==0x000C)g=3;
if(g==0x000D)g=0;
if(g==0x000E)g=5;
if(g==0x000F)g=9;
sens1[n]=g;
}
}
5. Порты подключения: P1.0 р датчик Холла, P2.5 р кнопка контроля.
Для генерации псевдослучайных чисел можно также воспользоваться материалами статьи [2].
Принципиальная схема электронной печати приведена на рисунке 1.
Рис. 1. Принципиальная схема электронной печати
Как уже отмечалось выше, светодиодный пятиразрядный семисегментный индикатор КИПС 27А-5/8 с общим катодом используется в режиме динамической индикации. Микроконтроллер вырабатывает бегущий «0» на катодах, в результате чего в каждый момент времени активным оказывается только один разряд индикатора.
Конструкция электронной печати представляет собой корпус из ABS пластика, в дно которого вмонтированы две металлические пластины, положение которых соответствует опорным втулкам с магнитами. Рядом с одной из пластин расположен интегральный датчик Холла А3212 компании Allegro Microsystems Inc., воспринимающий магнитный поток от «своего» магнита. Плата с электронной схемой, пятиразрядным светодиодным индикатором и батарейным отсеком (два элемента ААА по 1,5 В), расположена внутри корпуса поверх металлических пластин. На внешней поверхности корпуса расположен экран индикатора и кнопка мониторинга.
Опытная эксплуатация устройства в течение двух лет показала его устойчивость к внешним электромагнитным помехам (работа станков в соседнем помещении), экономичность (частота смены батареек один раз в 5-6 месяцев) и удобство в эксплуатации.
В настоящее время планируется ввести опцию индикации разряда батарей, функцию передачи по радиоканалу информации о факте и моменте вскрытия помещения, а также передачу кода печати на контрольный пункт охраны на расстояние 15...20 м.
Литература
1. Семейство микроконтроллеров MSP430х1хх. Руководство пользователя//М., Библиотека КОМПЭЛ, 2004 г.
2. А. Купченко Реализация генератора случайных чисел на микроконтроллере MSP430.//Компоненты и технологии ╧3, 2009 г.
Получение технической информации, заказ образцов, поставка - e-mail: mcu.vesti@compel.ru
Ваш комментарий к статье | ||||