dlinyj: (Default)
[personal profile] dlinyj
Свершилось, я доделал проект, который забросил около года назад. В своё время по совету [livejournal.com profile] dark_simpson я купил промышленный ридер RFID меток. Но вот незадача, интерфейс у него был Wiegand, а мне нужно было его читать на компе. В результате нужно было ваять схему сопряжения. Я нашёл рабочий проект, как это сделать. Но вот незадача: там используется процессор AT90S1200, который давно снят с производства, и который даже у меня есть, но мне нечем его прошить. В результате я попытался перенести код на Attiny2313 (они частично совместимы, по крайне мере по ногам). Но он "влоб" вот так в своё время не заработал. Ну и я забил на него. Теперь я снова к нему вернулся. И даже задал вопрос по переносу кода в сообществе http://community.livejournal.com/ru_radio_electr/603084.html . Но я понял, что если сам не раскурю код, и не пойму в чём косяк, то никто за меня это не сделает. Ну я воспринял пожелания из сообщества, и вчера на ночь глядя начал вкуривать код.
Совет! Если вам не спиться ночью, то возьмите и просмотрите вдумчиво вникая в каждую строчку чей-нибудь код на ассемблере, желательно RISС-архитектуры. При чём идеально, чтобы многие аппаратные функции в коде были реализованы программно.

Оказывается в процессоре AT90S1200 нет UARTa! И он реализован программно, на фантастически быстрой скорости 1200 бит/сек (смеюсь). Я уснул примерно на третьей странице реализации юарта, прочитал перед этим ещё шесть. При чём так с листочками в руках и уснул. Собственно я не зря курил код. Ибо автор оставил "пасхальное яйцо" в коде - закомментировав важную строчку (гад, но это программисту сразу станет видно). С этим комментарием код компилируется, но не работает. Собственно про перенос кода я напишу позже, в сообщество [livejournal.com profile] ru_radio_electr, кому интересно, там и посмотрит.
Так сложились звёзды, что у меня есть макетная платка с tiny2313, как будто специально созданная для данного случая (до этого я её так и не использовал). Прекрасно питается БП от модема US Robotics, имеет на боту преобразователь интерфейсов. Немного покурив схему, я её значительно упростил, выкинув ненужные мне элементы.



Выкинутые элементы, помечены красными крестами



Собрал буквально из того что было под рукой. Но вот не задача, сам ридер питается от 12 вольт, а БП от момеда даёт 18 вольт, или после КРЕНки у меня +5 вольт. Пролистал книженцию к ридеру, и о удача! В ней написано, что он может работать от 18 вольт! Эврика! Смотрю после диодного моста как раз у нас 18 вольт, и там кондёр уже стоит - чистая постояннка. И вывел эти 18 вольт на плату. Чтобы не попутать - подписал. Подключил ридер - он пропищал, что работает - уже хорошо, что дым не пошёл. Небольшие проблемы вызвала прозвонка диодов (ночь на дворе, да и в руки шашек давно не брал), но я справился с этим, то же течёт от плюса к минусу (и срать что у нас двигаются отрицательно заряженные электроны). Ну в общем я собрал его достаточно быстро, что мне несвойственно.


Собранный ридер. Ррработает!


Собственно, включаю, запускаю, и опа, усё работает. Я кипятком себе все ноги ошпарил! Программа отдавала коды всех карточек, которые я ей скармливал. Кстати на фотке карточка со старой работы, которую я нагло зажал.


Программа отдаёт нам номер карты


Кстати я не сказал, как же я убедился в работоспособности программы микроконтроллера. Да достаточно просто. Я запустил данную программу, и там есть кнопки зажигания светодиодов, и я просто мерял мультиметром - "горит" ли светодиод. Оказалось что горит :). Вот такие пироги, теперь можно приступать к сборке эмулятора по посту товарища [livejournal.com profile] scanwidget, о котором я говорил постом ниже.

З.Ы. Справедливости ради - сайт проекта, по которому я делал данное устройство: http://www.circuitcellar.com/avr2004/DA3616.html

grammar-nazi

Date: 2009-07-08 07:08 am (UTC)
From: [identity profile] technobastard.livejournal.com
Ты крут. Только один grammar-nazi fix: исправь пожалуйста RISК на RISC, а то коробит как-то.

Re: grammar-nazi

Date: 2009-07-08 09:32 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Позор на мои седины. Спигем на опечатку, лады.
(deleted comment)

Date: 2009-07-08 09:32 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Ага, собственно что я и собираюсь сделать

Date: 2009-07-08 09:30 am (UTC)
From: [identity profile] leoniv.livejournal.com
А я года 4 назад тоже делал считыватель RFID карточек 125 кГц.



Весь считыватель был сделан на ATmega8. Она на своих портах генерила противофазные меандры 125 кГц, антенна питалась прямо от портов (там организуется последовательный колебательный контур, амплитуда на антенне при резонансе порядка 100 В). Тракт приема был сделан на LM358, одна половинка - усилитель, другая - компаратор. Прошивку писал на asm, в декодере совсем не много хитростей: главное - ловить синхросимволы, ну и контрольная сумма считается отдельно по строкам и столбцам. Считанный код выдавал в компьютер по RS-232 и еще реализовывал второй выход в формате Wiegand (на плате этого нет). Вот фото платы более подробно:


Date: 2009-07-08 09:34 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Очень круто. Но мне просто хотелось малой кровью собрать. Вот и получилось что делал так долго.

Date: 2009-07-08 09:54 am (UTC)
From: [identity profile] leoniv.livejournal.com
Если будут интересны подробности - пишите.

Date: 2009-07-08 10:22 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Хорошо, но я уже сделал на базе промышленного ридера. В силу своей лени стараюсь решить проблемы малой кровью. Но кстати, когда собрал, то вспомнил ваши наставления про корпус ;)

Date: 2009-07-09 12:36 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Скажите, а как вы рассчитывали катушку? Мне по ходу придётся сделать тоже самое, но для эмулятора.

Date: 2009-07-09 04:07 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Есть хорошие Application Notes от Microchip:
AN678 - RFID Coil Design
AN710 - Antenna Circuit Design for RFID Applications
Я делал обычные рамочные антенны, без всяких изысков типа печатных антенн или антенн с ферритовыми сердечниками. А вообще главное тут - настроить антенный контур на рабочую частоту и получить достаточную добротность. Диаметр антенны, если грубо, соответствует дальности считывания. Антенны делал разного размера, число витков для каждого варианта уже не скажу за давностью лет, но резонанс достигался с емкостью порядка 1 нФ, индуктивность подобрать несложно. Контролировать резонанс удобно по расположению "пичка" на осциллограмме напряжения на антенне. При резонансе он должен быть точно на вершине:


Date: 2009-07-09 09:18 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
AN710 - Antenna Circuit Design for RFID Applications даже распечатал сегодня днём. Правда при беглом просмотре не нашёл упоминания про 125 килогерц. Я хочу решить обратную задачу, не для ридера, а для эмулятора. У меня есть какой-то провод, вот и хочу под него рассчитать. А катушка при испытаниях должна быть нагружена?

Date: 2009-07-09 09:57 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Кстати, нашел свои записи для одной из антенн: 9 х 9 см, 83 витка провода 0.25. Емкость в контуре примерно 1 нФ (точное значение подбирал при настройке), плюс ограничительный резистор 100 Ом.

AN710 - это часть документа 51115F.pdf "microID® 125 kHz RFID System Design Guide". Хотя принципы проектирования антенны такие же и на другой частоте.

Сама по себе катушка - это еще не всё. В ридере она обычно включена в состав последовательного колебательного контура, а в транспондере - параллельного. Поэтому для настройки антенны эмулятора нужно собрать параллельный колебательный контур и настроить его на несущую по максимальной амплитуде напряжения. Что касается нагрузки, то при настройке она не нужна, так как сделает резонанс менее острым. Обычно же нагрузкой контура является сам транспондер, который питается от этого же контура. Ну и при передаче кода он дополнительно подгружает контур, модулируя его добротность.

Вот еще хороший мануал - EMAN1099B.pdf "RFID Made Easy" от EM-Marin.
Ну и есть книга Klaus Finkenzeller "RFID Handbook".

Date: 2009-07-09 10:19 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Просто неимоверное, мегагромаднейшее спасибо! То что надо. Собственно, по поводу последовательного и параллельного включения катушек, я понял только когда посмотрел документ. Внимательно почитаю, на сколько хватит мне знаний языка. Но это бесценно просто.

Собственно, я нашёл две схемы эмуляторов (я потом напишу пост более подробно). Один я нашёл достаточно давно http://mrl.cz/projects/rfid/rfid.pdf . Я просто достал автора этого проекта. Он хоть и чех, и общаемся мы на английском, но он уже выслал мне все фотографии и прошивки :). Гляньте - там схема внутри, как раз как вы говорите. Транзистор, кстати, нельзя заменить на КТ315?

Вторая схема гораздо интереснее, с которой я и веду эксперименты. Это устройство описанно тут http://scanwidget.livejournal.com/32928.html . Но чтобы не лазать по куче ссылок, покажу схему, которая приведена прямо в исходном коде:
* Basic schematic:
 *
 *              ATtiny85
 *              +--------------+
 *            --| RST      Vcc |--
 *    +- L1 ----| B3/CLKI  SCK |--
 *    +---------| B4      MISO |--
 *            --| GND     MOSI |--
 *              +--------------+
 *
 * L1 is about 1 mH. It and the AVR are the only components.
 * All other pins should be unconnected.

В идеальном варианте это должно работать без внешнего питания. Но не хочет. Я не отрицаю, что мог ошибится с Fuse-битами, хоть и очень мало вероятно.

Тут задача вообще интересная, как бы сделать эмулятор, но в то же время самообразоваться в области конструирования антен, устройства RFID-меток и прочее. Я вам очень признателен за помощь. Вы случаем не используете какие-либо online-меседжеры?

Date: 2009-07-10 08:30 am (UTC)
From: [identity profile] leoniv.livejournal.com
По первому эмулятору всё понятно и логично. Должен работать. Транзистор КТ315 применить можно.

Что касается второго эмулятора, то его работоспособность сомнительна. В любом случае, начинать надо по шагам: сначала запитать ATtiny85 от внешнего источника, подать на CLKI тактовую частоту от ридера, переопределить выходы на другие порты, подключить к ним катушку и добиться нормальной работы. Затем перейти на тактирование, а затем и питание от катушки.

Online-меседжеры не использую, и так Интернет очень сильно мешает работать.

Date: 2009-07-10 08:35 am (UTC)
From: [identity profile] leoniv.livejournal.com
Да, и лучше сразу добавить два конденсатора и настроить контур. Схема как здесь:
http://picasaweb.google.com/micahjd/RFID#5248658518260327522
Без них - это просто рисовка, трюк, типа эмулятор из двух деталей. Надежность считывания будет никакая. Такие конденсаторы имеются внутри чипов EM4102 и подобных.

Date: 2009-07-10 11:47 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Конденсатор паралельно катушке? Я так понимаю, что кроме индуктивности катушки есть ещё и другие параметры? Стоит попробовать поймать резонанс. Просто у самой микросхемы тоже есть конденсатор.

Date: 2009-07-10 12:34 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Да, параллельно, чтобы образовался контур. У катушки есть еще активное сопротивление, которое делает резонанс не столь острым, есть и паразитная емкость, которая суммируется с контурной. Поймать резонанс несложно, можно подключить постоянный конденсатор + переменный (или подстроечный) и добиться максимальной амплитуды напряжения на катушке. Я вообще обошелся подбором постоянных конденсаторов, взял чуть меньше, чем надо, а затемпараллельно тыкал конденсаторы небольшой емкости, наблюдая за амплитудой. Можно также ловить резонанс отматывая/доматывая витки катушки.
А что имелось в виду "у самой микросхемы тоже есть конденсатор"? Паразитная емкость выводов? Так она на 2 порядка ниже нужной.

Date: 2009-07-10 05:09 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Мои благодарности,я просто питаюсь даташитами, которые вы порекомендовали. С сожалением понимая, что мне нехватает знаний английского чтобы на 100% понимать всё что там написанно (ну не будешь же со словарём сидеть и каждое слово переводить). Прочитал уже два, в голове многое прояснилось. Думаю перелистать свои лекции по ТОЭ, и книжки по нему же, на тему резонанса напряжений и резонанса токов. По поводу катушки, вспомнилась теория длинных линий. Вот межвитковая ёмкость, она же тоже значительная . При чём ёмкостей столько же, сколько соотношений между витками (ну для трёх витков будет три ёмкости, а для четырёх будет уже 6 емкостей). Думаю она влияет на показания, и будет измерятся пикофарадами, если не десятками. И какие подстроечные/переменные конденсаторы вы посоветуете (номинал) для корректировки резонанса? И как вы настраивали контур - подключали генератор? Можно ли использовать поле ридера для настройки катушки или шучше сделать самому генератор? Если последнее, то вероятно буду его делать на АВР, и не могли бы вы в этом случае показать программу генерации 125 кГц (я так понимаю, что у вас она используется в ридере).

И последний вопрос: можете ли подсказать, что почитать про формат посылки в стандартных офисных карточках. Как она выполненна, какие байты что значат (я думаю там очень похоже на one-wire DS1990A). Интересует формулы рассчёта контрольной суммы и т.п.

Очень признатален за помощь, очень приятно что вы тратите своё время на помощь мне.

Date: 2009-07-10 08:21 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Я не думаю, что Вам нужно смотреть в словаре каждое слово. А посмотреть по слову на предложение ничуть не утомительно - словарик lingvo ведь всегда под мышкой :)

Паразитные емкости вычислять теоретически - дело неблагодарное, лучше пойти от обратного: сразу подобрать емкость, чтобы она вместе с паразитными обеспечила резонанс на нужной частоте. Можно взять КПЕ от радиоприемника, обычно там емкость меняется примерно от 30 до 300 пФ. Параллельно включить постоянный конденсатор порядка 1.3 нФ и настроить контур в резонанс, контролируя осциллографом напряжение на нем. Если будет не хватать пределов - нужно заменить постоянный конденсатор другим, чуть меньше или чуть больше. Можно и без КПЕ, а просто тыкая параллельно разные емкости. Для настройки проще всего использовать поле ридера.

Я настраивал контур для самого ридера, поэтому ATmega и была генератором. Ну а сгенерировать любую частоту проще всего с помощью таймера 1:

#define	F_CLK      16.0  //частота кварца, Мгц
#define	D_CLK     125.0  //выходная частота, Kгц

  TCCR1A = (1 << COM1A0);
  TCCR1B = (1 << WGM12) | (1 << CS10);
  OCR1A = (500.0 * F_CLK / D_CLK) - 0.5;


На выводе OC1A будет меандр 125 кГц (пин должен быть настроен на вывод).

А что такое "стандартные офисные карточки"? Я слабое представление имею об офисах, никогда там не работал.

Date: 2009-07-10 08:51 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Пожалуйста, можно ко мне на ты и с маленькой буквы :). А то слишком официально.

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

По поводу офисных карточек, у вас как раз лежит на столе. Суть такова, что их используют для попадания внутрь некоторых офисов (ну или иных обьектов). Как я понимаю, внутри просто ПЗУ, которое отдаёт свои данные и всё. Вот и хочется понять что за тип карт, и какой формат данных.

Date: 2009-07-10 08:51 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Имею в виду на этой фотке http://pics.livejournal.com/leoniv/pic/000set6z

Date: 2009-07-10 09:43 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Хамство в Интернет очень распространено, но сие не означает, что это норма.

Без кассы деталек сложно заниматься электроникой. И донорскую плату сейчас найти сложно: везде SMD, а такие конденсаторы не маркированы.

Если речь идёт о той карточке, с которой я работал, то там протокол EM-Marin. Описание есть, к примеру, в datasheet на EM4100. В начале посылки передается 9 единичных бит. Затем 10 строк данных по 5 бит. 4 бита собственно данные, а 5-й бит - бит четности строки. Завершает всё это передача строки, состоящей из битов четности столбцов, а 5-й бит последней строки - нулевой.

Date: 2009-07-12 05:41 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Да, это так. Но я себя буду чувствовать комфортнее, если вы будете называть меня на ты :).

А передача и впрям очень похожа на one-wire. Я тут вопрос задал по этой теме http://community.livejournal.com/ru_radio_electr/607198.html :). Кстати уже кажется нашёл ответ, почему не наблюдаю такой картины - я же не подаю меандр!

Date: 2009-07-12 08:18 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Ответил там. Что касается схожести с one-wire, то я таковой не вижу абсолютно.

Date: 2009-07-12 08:27 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Основное отличие что ванваре взаирмодействует с ридером, а тут нет. А так получается аналогично: стартовая инициализация - когда в ванваре идёт ключём засаживание линии на землю, означающее что он подключился, а в рфидах - посыл кучи едениц. Затем объём памяти одинаков - 64 байта. Аналогиями проще мыслить. Конечно, устройство из иной сферы. Но принцип похож.

Date: 2009-07-12 09:37 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Ну если мыслить совсем общими категориями, то все протоколы обмена похожи между собой :)

Date: 2009-07-10 05:21 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Кстати, по мои рассчётам резонансная ёмкость, в моём случае, при индуктивности катушки 1 мГн, должна составить 1,622 нФ.

Date: 2009-07-10 07:57 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Похоже. Но с учетом паразитных емкостей конденсатор нужен будет чуть меньшего номинала.

Date: 2009-08-15 01:45 am (UTC)
From: [identity profile] dlinyj.livejournal.com
А у вас нет желания писать статьи в Хакер по электронике? Там платят небольшую денюжку за них (примерно 150-200 дол за статью).

Date: 2009-08-15 07:38 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Получил по мылу коммент, но не знаю, как на него ответить. Пишут, что он скринится (что это такое?), и у меня нет прав для ответа.

По существу. Я несколько лет назад довольно много писал для журналов "Схемотехника", "Компоненты и технологии", "Электронные компоненты", "Радиохобби", сейчас продолжаю писать в "Радиолюбитель". И понял такую вещь. Из пальца тему не высосешь (если это не обзор и не перевод). Чтобы получилась статья, нужно что-то сделать. Это всё вместе с написанием занимает столько времени, что оплата за статью просто ничто по сравнению с самым дохлым заказом любой электронной поделки. А в журнал "Хакер" вообще не представляю, что можно написать. Хорошо еще, что пока нет журналов "Жулик" или "Серийный убийца".

Date: 2009-08-15 07:44 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Да, я спратал комментарий от посторонних глаз :). Ну Хакер конечно журнальчик своеобразный. Но я уже многократно говорил, что статьи в журнале носят образовательный характер. Когда делается некоторое устройство, пусть эмулятор тех же карточек, и когда человек реализует его, то уже пройдёт такой путь, что на кривую дорожку уже не встанет. У меня статьи про роботов, про логгер клавиатуры (по сути внимательно разбираем протокол работы клавиатуры, и учимся с ним работать - опять же образовательная статья). Мне не нужны схемы на 20 элементах. Как правило требуются поделки, простые для повторения. Считаю эталоном статью, про робота, едущего на свет (могу по всем статьям дать ссылки, а если трафик позволяет, то прямо PDF (50 мегабайт примерно каждый) журнала, чтобы понять что и как)). Робот представлял собой шасси с двумя двигателями, батарейками, двумя транзисторами и фототранзисторами - примитив, красиво, и просто для повторения.

Date: 2009-08-16 08:29 am (UTC)
From: [identity profile] leoniv.livejournal.com
Я подумаю, что можно напечатать.

Date: 2009-08-15 08:02 pm (UTC)
From: [identity profile] di-halt.livejournal.com
Статья статье рознь. Если надо сделать статью от профи для профи, то да. Надо и разработку провернуть, собрать, проверить, отладить.

Работы много. А если уже известное вжевать начинающему, то пишется за вечер.

Да, и кто там жаловался что за разработку никто не платит??? ;)

Date: 2009-08-16 08:27 am (UTC)
From: [identity profile] leoniv.livejournal.com
Уже известного хватит на пяток статей. А дальше? Я где-то год писал статьи. За это время успел написать про всё сделанное и изученное за предыдущую жизнь. Что писать дальше?

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

Date: 2009-08-16 08:31 am (UTC)
From: [identity profile] di-halt.livejournal.com
Изучать что то новое -- и себе полезно и будет что написать. Разобрался - описал. Я так делаю :) Пока недостатка в креативе не испытваю.

Да? А у меня в связи с кризисом заработок только вырос :/

Date: 2009-08-16 02:10 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Насчет возможностей заработка не все люди равны. Вот Вы нахальнее (это чувствуется даже по Вашему слогу), поэтому смогли зарабатывать. Но есть и такие, кто умеет работать, но не умеет продавать.

Date: 2009-08-17 05:56 am (UTC)
From: [identity profile] di-halt.livejournal.com
Ну дык. Конечно надо. Мне тоже в свое время пришлось этому научиться. Не пробьешь не продвинешься.

Но утверждать, что в РЭ нельзя заработать денег в таком случае нельзя.

Date: 2009-08-17 06:06 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Солидарен. Как говорится, если ты не на волне, это не значит что ты на ней не можешь быть. Нужно хотеть и стремиться это сделать.

Date: 2009-08-14 06:44 pm (UTC)
From: [identity profile] archon-oleg.livejournal.com
Схемой устройства не поделитесь? А-то у меня тоже есть желание сделать ридер...

Date: 2009-08-14 07:21 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Проще купить готовый, да и зачем он тебе. Это рудимент, уже отмирают эти карточки!

Date: 2009-08-14 10:02 pm (UTC)
From: [identity profile] archon-oleg.livejournal.com
Ну и пусть отмирают. Я ж не собираюсь на этом деньги делать:) Мне это так, чисто для себя)

Date: 2009-08-15 01:44 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Ну так чисто для себя, мучал бы на 13 МГц ;)

Date: 2009-08-15 08:58 am (UTC)
From: [identity profile] archon-oleg.livejournal.com
Может быть у тебя есть схема для такого ридера?:)

Date: 2009-08-14 10:01 pm (UTC)
From: [identity profile] archon-oleg.livejournal.com
Премного благодарен. Катушка насколько я понял подключается к TB1?

Date: 2009-08-14 10:15 pm (UTC)
From: [identity profile] leoniv.livejournal.com
Да. А TB2 - это питание.

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 21st, 2026 11:55 pm
Powered by Dreamwidth Studios