Эмулятор ключей iButton » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Каршеринг в Москве - это Просто, Удобно и Недорого.
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Популярные материалы
    Случайная книга
    Эмулятор ключей iButton
    Автор публикации: alex Просмотров: 12236 Добавлен: 6-09-2012, 08:29 Комментарии: 0

         В настоящее время электронные ключи iButton и аналогичные настолько широко распространены, что многие постоянно носят с собой несколько штук от замков, ограничителей доступа и устройств сигнализации. Разработанное автором устройство представляет собой эмулятор ключей iButton, оно позволяет записать в память и воспроизвести код восьми разных ключей. Используя это устройство, можно не носить с собой все ключи.
         Основой устройства является микроконтроллер PIC16F84A, и оно моделирует работу самой простой микросхемы из серии iButton — DS1990A. Другие микросхемы iButton эмулировать сложнее из-за наличия встроенной в них памяти. Использование эмулятора позволяет делать виртуальные копии ключей, но при этом у него нет главного преимущества ключей iButton — энергонезависимости. Если контроллер электронного замка использует только серийный номер iButton, то эмулятор будет работать и с ключами на основе других микросхем — DS1991—DS1996. Устройство успешно проверено в работе с различными электронными замками и показало высокую надежность.
         Описание работы электронных ключей на основе микросхемы DS1990A (далее ключ) можно найти в [1]. Чтобы эмулировать ключ, необходимо воспроизвести его эквивалентную электрическую часть и алгоритм работы. Микроконтроллер PIC16F84A имеет все возможности для решения этой задачи. Внутренняя EEPROM объемом 64 байта позволяет хранить восемь кодов ключей по 8 байт каждый. Устройство можно условно разделить на две части: считыватель кода и эмулятор. Для упрощения конструкции для них использован один разъем, по форме и габаритам совпадающий с корпусом F5 MicroCan.
    Эмулятор ключей iButton

         Схема устройства показана на рис. 1. Микроконтроллер работает по программе, коды которой приведены в таблице. В ней же указана его конфигурация.
         Была выбрана тактовая частота микроконтроллера 10 МГц, позволяющая реализовать требуемые временные параметры для входных и выходных сигналов В режиме считывания кода ключа резистор R4 подключен к линии питания +5 В через линию порта RA0, а информационный сигнал поступает на линию порта RA4. В режиме эмуляции линия порта RA4, соединенная с линией порта RB0, образует выход и вход ключа соответственно. С помощью резистора R13 имитируется ток, "потребляемый" ключом (около 5 мкА). Стабилитрон VD1 и резистор R12 выполняют защитные функции.
    Эмулятор ключей iButton

         Элементы светодиодного индикатора HG1 с общим анодом подключены к разным портам, что не очень удобно с точки зрения разработки программы, но позволяют подключать непосредственно к печатной плате провода для внутрисхемного программирования микроконтроллера. Питание устройства — от одного гальванического элемента (напряжение 1,5 В) типоразмера АА. Максимальный потребляемый ток — 75 мА. Для питания микроконтроллера DD1 и светодиодного индикатора HG1 применены повышающий преобразователь напряжения на транзисторах VT1, VT2 и стабилизатор напряжения DA1.
         Программа эмулятора реализует следующие функции: чтение кода ключа с сохранением в памяти, извлечение из памяти номера ранее сохраненного и его "воспроизведение". Наиболее сложной оказалась задача правильно реализовать функцию MASTER RESET, т. е. установку в исходное состояние. Дело в том, что разные считыватели по-разному обнаруживают "прикладывание" ключа. В некоторых на приемном контакте установлено напряжение +5 В, и они реагируют на кратковременный спад этого напряжения при подключении ключа. Другие опрашивают контакт периодически. Есть и такие, у которых на контакт поступает минусовое напряжение, и они определяют подключение ключа по нулевому уровню напряжения.
    Эмулятор ключей iButton

         Поэтому применен следующий прием: прерывания запрещаются, a T0IF (разряд переполнения таймера) проверяется программно одновременно с проверкой наличия плюсового напряжения в одном цикле. Это позволяет определить, когда происходит принудительный сброс или питание на ключ подано при первом прикосновении. Также для повышения надежности считывания данных от ключа использована программная проверка флага прерывания от RB0, но не в обработчике прерываний, а в самой программе:
    btfss INTCON, INTF
    goto ...
    .....
    вместо:
    btfsc PORTB,RB0 goto ....
         Если прерывания от RB0 запретить, то разряд INTF в регистре INTCON можно анализировать программно, что дает несколько преимуществ Во-первых, на входе блока прерываний установлен триггер Шмитта. Это существенно повышает помехоустойчивость в случае неустойчивого контакта. Во-вторых, использование программного чтения флага прерывания позволяет асинхронно определить начало фронта с помощью программного опроса состояния входа и спада импульса благодаря установке флага прерывания. Это облегчает задачу синхронизации устройства с мастером. После обнаружения подключения программа формирует импульс присутствия и переходит к приему команды от замка. Если это команда READ ROM (ЗЗН), то эмулятор начинает выдачу кода семейства ключа, серийного номера и контрольной суммы. После прочтения "ключа" целевым устройством эмулятор выключают. Программа написана на языке ассемблера MPASM и отлажена в среде MPLAB IDE v8.10.
    Эмулятор ключей iButton

         После включения эмулятора на индикаторе HG1 отображается цифра 0. Последовательно нажимая на кнопку SB1 "Номер", выбирают номер текущей записи от 0 до 7. В этом режиме можно выбирать номер записи и сохранить в памяти под этим номером код нового ключа. Так, после выбора, например, номера 0 прикладывают к считывателю ключ (рис. 2). Кратковременно высвечивается символ "Р" (Program), что означает успешную запись кода ключа в память под этим номером. Следует обратить внимание, что контроль содержимого памяти не осуществляется, поэтому новая запись всегда стирает предыдущую запись без предупреждения.
         Эмуляцию ключа начинают после выбора номера записи с нажатия на кнопку SB2 "Старт". При этом на индикаторе высвечивается "тире" (элемент G). Теперь можно приложить устройство к считывателю замка взамен стандартного ключа.
    Эмулятор ключей iButton

         В устройстве применены резисторы МЛТ, С2-33 (R4—R12), остальные — для поверхностного монтажа Р1-12, PH1-12 типоразмера 0805. Оксидные конденсаторы — импортные малогабаритные, С5 — К10-17, остальные — керамические для поверхностного монтажа типоразмера 0805. Кнопки SB1 и SB2 — с самовозвратом SDTX размерами 6x6 мм и высотой 9,5 мм. Если применить кварцевый резонатор в корпусе с тремя выводами и встроенными конденсаторами, конденсаторы С1 и СЗ не устанавливают. Трансформатор намотан на магнитопроводе К10x6x4,5 из феррита 2000НМ. Каждую обмотку наматывают вдвое сложенным проводом, соединяя затем конец одного провода с началом другого. Обмотка I содержит 10x2 витков, а обмотка II —70x2 витков провода ПЭВ-2 0.2.
         Для изготовления печатных плат применен односторонне фольгированный стеклотекстолит толщиной 1,5 мм. Всего печатных плат две, сборку начинают с платы, на которой размещены элементы преобразователя напряжения и светодиодный индикатор (рис. 3). Сначала собирают преобразователь напряжения, стабилизатор и проверяют их работоспособность. После подачи питания на конденсаторе С2 должно быть напряжение около 9 В, а на выходе стабилизатора DA1 — 5 В. Если преобразователь не работает, возможно, придется поменять местами выводы одной из обмоток трансформатора. Кнопки устанавливают со стороны печатных проводников. У светодиодного индикатора отгибают выводы под прямым углом, немного укорачивают и припаивают к печатным проводникам как элемент для поверхностного монтажа. Затем впаивают резисторы R5—R11 и межплатные перемычки из оголенного провода. Эти резисторы и перемычки выполняют функцию соединителей двух плат.
    Эмулятор ключей iButton

         Затем монтируют плату, на которой установлен микроконтроллер (рис. 4). Его предварительно программируют. Но возможно и внутрисхемное программирование, для этого к плате припаивают провода от программатора. Элементы для поверхностного монтажа устанавливают со стороны печатных проводников. Аккуратно соединяют две платы этажеркой (рис. 5) так, чтобы печатные проводники были на внешней стороне, а перемычки и выводы резисторов попали в соответствующие отверстия. Общая высота сборки, замеренная по внешним поверхностям плат, не должна превышать 10 мм.
    Эмулятор ключей iButton

         Сборку помещают в пластмассовый корпус-кассету BAT/HOLDER АА2 SBH-321AS, предназначенный для двух элементов типоразмера АА, а именно на место одного элемента (рис. 6). Движковый выключатель питания уже встроен в указанный корпус. Конструкция контактного устройства показана на рис. 7. В корпусе 1 делают отверстия для индикатора, толкателей кнопок и делают отверстие под потайной винт М2,5. Само устройство состоит из внешнего элемента 2 (стакан из латуни с толщиной стенок 1 мм), изолятора 3 толщиной 2 мм (полистирол) и центрального элемента 4 (латунь) толщиной 2,5 мм с резьбой М2,5 в центре. Перед сборкой под внешний элемент 2 и крепежный винт прокладывают оголенные провода 5, которые соединяют с соответствующими элементами на плате. Срез под углом 45° на центральном элементе 4 предназначен для соединения с ключом, код которого считывают. Внешний вид эмулятора показан на рис. 8.
         Дальнейшим усовершенствованием конструкции может быть применение более мощного микроконтроллера, например PIC16F628A. Это позволит увеличить объем памяти для хранения кодов шестнадцати ключей. При этом, используя одну из линий порта, например, RA3 и десятичную точку на индикаторе, можно отображать номера больше 9. Взамен повышающего преобразователя и гальванического элемента на 1,5 В возможно применить батарею питания на 12 В — А27 или А23. Это позволит упростить конструкцию, но надежность работы при этом снизится, поскольку емкость этих батарей существенно меньше, чем одного элемента АА.
    Материал взят из: Журнала Радио 2010 №7

    В архиве исходный код на ASM и прошивка

    emulibutton.rar [12,72 Kb] (cкачиваний: 782)

    Комментарии