Наш канал в telegram

Считыватель магнитной полосы пластиковых карт на PIC16F628A

Итак, снова о пластиковых картах. В настоящее время существует очень много различных фирм, изготавливающих пластиковые карты и каждый желающий может спокойно себе такую изготовить. Информационная ёмкость карты сильно ограничена, но вполне достаточна, чтобы записать на неё, например, ваши имя/фамилию, логин, пароль или какой-нить номер. Для чего, спросите вы. Ну, как это, для чего, — для того, для чего пластиковые карты и придумали вообще — для использования в системах аутентификации. Можно использовать карту в качестве ключа для специального замка, для аутентификации при входе в Windows, для аутентификации в системе «умный дом», да много для чего. Составной частью любой такой системы аутентификации будет картридер, т.е. считыватель карт по нашему. О нём и пойдёт речь.

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

считывающая головка от магнитофона

Итак, нам понадобятся: считывающая головка от магнитофона (как на рисунке слева), тонкий лист текстолита, двухканальный операционник, контроллер PIC16F628A, ну и всякая рассыпуха, типа резисторов и конденсаторов.

Каркас для считывателя магнитной полосы

Начнём мы с изготовления каркаса. Для каркаса нужно вырезать из текстолита 1 кусок размерами 70х50 мм, 1-2 куска размерами 70х30 мм и ещё несколько кусков размерами 20х20 мм (столько, чтобы общая толщина сложенных друг на друга кусков, кроме первого, была примерно равна высоте считывающей головки).

Далее все куски надо сложить друг на друга, выровняв по двум сторонам. Должен получиться примерно такой слоёный пирог, как на рисунке справа. Теперь всю эту конструкцию нужно скрепить, — склеить или просверлить по углам дырки и стянуть винтами, или ещё как-нибудь (лучше всё же стянуть винтами, хотя бы на первое время, так будет удобнее добавлять/убавлять слои для подгона высоты).

Держатель головки считывателя магнитной полосы

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

Считыватель магнитной полосы в сборе

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

Ну вот, каркас готов, — можно переходить к схеме и печатной плате.

Схема считывателя магнитной полосы

Схема нашего кардридера приведена на рисунке слева.

  1. R1=R2=R9=1 кОм
  2. R3=R8=1,5 кОм
  3. R4=100 кОм
  4. R5=10 кОм
  5. R6=4,7 кОм
  6. R7=470 кОм
  7. С1=С2=1 мкФ
  8. С3=1 нФ
  9. С4=0,1 мкФ

Как видите, данный девайс можно условно разделить на две части: аналоговую и цифровую. Аналоговая часть состоит из считывающей головки и двухкаскадного усилителя, выполненного на сдвоенном операционнике LM358. Цифровая часть состоит из контроллера и преобразователя интерфейсов на микросхеме MAX232, позволяющего передать информацию от контроллера на компьютер или на другой контроллер по интерфейсу RS-232. Чтобы сильно не загружать схему, — обвязка MAX232 не нарисована, её можно посмотреть в даташите или вот здесь.

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

Полностью собранный девайс выглядит вот так:

самодельный картридер для пластиковых карт с магнитной полосой

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

Подробно про приём и декодирования F/2F частотно кодированных сигналов можно прочитать вот здесь (мы имеем дело как раз с такими сигналами и реализуем как раз такой алгоритм, как в той статье), а про то, где и в каком формате на карте обычно записывают данные — вот тут.

Скачать печатную плату (DipTrace 2.0)

Скачать исходники программы для контроллера (asm)

Скачать исходники программы для компьютера (C++ Builder)

Программа для компьютера декодирует записанные в log-файл с помощью программы RH_Com интервалы между импульсами (в hex-формате). Данная программа дана просто для примера, в ней реализовано декодирование только пятибитной кодировки, отсутствует контроль правильности считывания по чётности и LRC.

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

  • нет ли еще фотки от девайса?

    • Могу сделать, если сам девайс найду (валяется где-то). Что не видно?

      • не могу понять что делается при работе .как приближать карту?спасибо за отклик.

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

          • то есть головка передвижная,а читывающая часть снизу??

            • Головка — это и есть считывающая часть. Она передвигается только при настройке и только в одном направлении, — поперёк, чтобы потом, когда она окажется над картой — она была над нужной дорожкой этой карты. Далее она фиксируется винтами и больше не двигается.
              В работе передвигается только карта. Ты прижимаешь карту торцом к стенке и проводишь ей под этой головкой.

              • обязательно ли подключать device к onboard com порту?

                • к onboard com порту чего? Компьютера? Нет, можно и к переходнику USB-to-Com.

              • тут одна магнитная головка?

                • Да, одна.

                • на магнитной головке 4 ножки.из одного идет красный провод,от другого белый.другие две связаны ,и идет третий чорний провод.можете помочь разобраться с + — ом и с третьим проводом?

                • Фотку можешь сделать? В общем-то магнитная головка — это просто обмотка на сердечнике с зазором. Полярность не важна. В твоём случае видимо две головки в одной (одна на запись, одна на чтение, так обычно и бывает, потому и 4 контакта). 2 контакта вместе — это видимо общий. То есть подключать нужно общий и любой из двух других контактов. Можешь мультиком измерить сопротивление этих обмоток, заодно убедишься, что это действительно обмотки катушек.

  • Чёрный с красным.

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

      • Нет, приближают rfid-метки, а тут нужно равномерно провести картой под считывающей головкой, так чтобы головка проехалась по магнитной полосе от начала до конца. При этом вначале нужно подобрать правильный «вылет» магнитной головки, чтобы под ней проезжала именно нужная дорожка.

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

    • Да разные можно модели найти, например такую — MS 15RAA2 или такую — TC461, вот такую — YBBT62… Моделей — масса, все они по сути примерно одно и то же. Они сейчас далеко не во всех магазинах есть, но найти можно. Гугли интернет-магазины по запросу «аудиоголовка для кассетного магнитофона купить».

Добавить комментарий