И всё-таки она вертится!!!
Jul. 8th, 2009 03:35 amСвершилось, я доделал проект, который забросил около года назад. В своё время по совету
dark_simpson я купил промышленный ридер RFID меток. Но вот незадача, интерфейс у него был Wiegand, а мне нужно было его читать на компе. В результате нужно было ваять схему сопряжения. Я нашёл рабочий проект, как это сделать. Но вот незадача: там используется процессор AT90S1200, который давно снят с производства, и который даже у меня есть, но мне нечем его прошить. В результате я попытался перенести код на Attiny2313 (они частично совместимы, по крайне мере по ногам). Но он "влоб" вот так в своё время не заработал. Ну и я забил на него. Теперь я снова к нему вернулся. И даже задал вопрос по переносу кода в сообществе http://community.livejournal.com/ru_radio_electr/603084.html . Но я понял, что если сам не раскурю код, и не пойму в чём косяк, то никто за меня это не сделает. Ну я воспринял пожелания из сообщества, и вчера на ночь глядя начал вкуривать код.
Совет! Если вам не спиться ночью, то возьмите и просмотрите вдумчиво вникая в каждую строчку чей-нибудь код на ассемблере, желательно RISС-архитектуры. При чём идеально, чтобы многие аппаратные функции в коде были реализованы программно.
Оказывается в процессоре AT90S1200 нет UARTa! И он реализован программно, на фантастически быстрой скорости 1200 бит/сек (смеюсь). Я уснул примерно на третьей странице реализации юарта, прочитал перед этим ещё шесть. При чём так с листочками в руках и уснул. Собственно я не зря курил код. Ибо автор оставил "пасхальное яйцо" в коде - закомментировав важную строчку (гад, но это программисту сразу станет видно). С этим комментарием код компилируется, но не работает. Собственно про перенос кода я напишу позже, в сообщество
ru_radio_electr, кому интересно, там и посмотрит.
Так сложились звёзды, что у меня есть макетная платка с tiny2313, как будто специально созданная для данного случая (до этого я её так и не использовал). Прекрасно питается БП от модема US Robotics, имеет на боту преобразователь интерфейсов. Немного покурив схему, я её значительно упростил, выкинув ненужные мне элементы.
Собрал буквально из того что было под рукой. Но вот не задача, сам ридер питается от 12 вольт, а БП от момеда даёт 18 вольт, или после КРЕНки у меня +5 вольт. Пролистал книженцию к ридеру, и о удача! В ней написано, что он может работать от 18 вольт! Эврика! Смотрю после диодного моста как раз у нас 18 вольт, и там кондёр уже стоит - чистая постояннка. И вывел эти 18 вольт на плату. Чтобы не попутать - подписал. Подключил ридер - он пропищал, что работает - уже хорошо, что дым не пошёл. Небольшие проблемы вызвала прозвонка диодов (ночь на дворе, да и в руки шашек давно не брал), но я справился с этим, то же течёт от плюса к минусу (и срать что у нас двигаются отрицательно заряженные электроны). Ну в общем я собрал его достаточно быстро, что мне несвойственно.
Собственно, включаю, запускаю, и опа, усё работает. Я кипятком себе все ноги ошпарил! Программа отдавала коды всех карточек, которые я ей скармливал. Кстати на фотке карточка со старой работы, которую я нагло зажал.
Кстати я не сказал, как же я убедился в работоспособности программы микроконтроллера. Да достаточно просто. Я запустил данную программу, и там есть кнопки зажигания светодиодов, и я просто мерял мультиметром - "горит" ли светодиод. Оказалось что горит :). Вот такие пироги, теперь можно приступать к сборке эмулятора по посту товарища
scanwidget, о котором я говорил постом ниже.
З.Ы. Справедливости ради - сайт проекта, по которому я делал данное устройство: http://www.circuitcellar.com/avr2004/DA3616.html
Совет! Если вам не спиться ночью, то возьмите и просмотрите вдумчиво вникая в каждую строчку чей-нибудь код на ассемблере, желательно RISС-архитектуры. При чём идеально, чтобы многие аппаратные функции в коде были реализованы программно.
Оказывается в процессоре AT90S1200 нет UARTa! И он реализован программно, на фантастически быстрой скорости 1200 бит/сек (смеюсь). Я уснул примерно на третьей странице реализации юарта, прочитал перед этим ещё шесть. При чём так с листочками в руках и уснул. Собственно я не зря курил код. Ибо автор оставил "пасхальное яйцо" в коде - закомментировав важную строчку (гад, но это программисту сразу станет видно). С этим комментарием код компилируется, но не работает. Собственно про перенос кода я напишу позже, в сообщество
Так сложились звёзды, что у меня есть макетная платка с tiny2313, как будто специально созданная для данного случая (до этого я её так и не использовал). Прекрасно питается БП от модема US Robotics, имеет на боту преобразователь интерфейсов. Немного покурив схему, я её значительно упростил, выкинув ненужные мне элементы.
Собрал буквально из того что было под рукой. Но вот не задача, сам ридер питается от 12 вольт, а БП от момеда даёт 18 вольт, или после КРЕНки у меня +5 вольт. Пролистал книженцию к ридеру, и о удача! В ней написано, что он может работать от 18 вольт! Эврика! Смотрю после диодного моста как раз у нас 18 вольт, и там кондёр уже стоит - чистая постояннка. И вывел эти 18 вольт на плату. Чтобы не попутать - подписал. Подключил ридер - он пропищал, что работает - уже хорошо, что дым не пошёл. Небольшие проблемы вызвала прозвонка диодов (ночь на дворе, да и в руки шашек давно не брал), но я справился с этим, то же течёт от плюса к минусу (и срать что у нас двигаются отрицательно заряженные электроны). Ну в общем я собрал его достаточно быстро, что мне несвойственно.
Собственно, включаю, запускаю, и опа, усё работает. Я кипятком себе все ноги ошпарил! Программа отдавала коды всех карточек, которые я ей скармливал. Кстати на фотке карточка со старой работы, которую я нагло зажал.
Кстати я не сказал, как же я убедился в работоспособности программы микроконтроллера. Да достаточно просто. Я запустил данную программу, и там есть кнопки зажигания светодиодов, и я просто мерял мультиметром - "горит" ли светодиод. Оказалось что горит :). Вот такие пироги, теперь можно приступать к сборке эмулятора по посту товарища
З.Ы. Справедливости ради - сайт проекта, по которому я делал данное устройство: http://www.circuitcellar.com/avr2004/DA3616.html



grammar-nazi
Date: 2009-07-08 07:08 am (UTC)Re: grammar-nazi
Date: 2009-07-08 09:32 am (UTC)no subject
Date: 2009-07-08 09:32 am (UTC)no subject
Date: 2009-07-08 09:30 am (UTC)Весь считыватель был сделан на ATmega8. Она на своих портах генерила противофазные меандры 125 кГц, антенна питалась прямо от портов (там организуется последовательный колебательный контур, амплитуда на антенне при резонансе порядка 100 В). Тракт приема был сделан на LM358, одна половинка - усилитель, другая - компаратор. Прошивку писал на asm, в декодере совсем не много хитростей: главное - ловить синхросимволы, ну и контрольная сумма считается отдельно по строкам и столбцам. Считанный код выдавал в компьютер по RS-232 и еще реализовывал второй выход в формате Wiegand (на плате этого нет). Вот фото платы более подробно:
no subject
Date: 2009-07-08 09:34 am (UTC)no subject
Date: 2009-07-08 09:54 am (UTC)no subject
Date: 2009-07-08 10:22 am (UTC)no subject
Date: 2009-07-09 12:36 am (UTC)no subject
Date: 2009-07-09 04:07 pm (UTC)AN678 - RFID Coil Design
AN710 - Antenna Circuit Design for RFID Applications
Я делал обычные рамочные антенны, без всяких изысков типа печатных антенн или антенн с ферритовыми сердечниками. А вообще главное тут - настроить антенный контур на рабочую частоту и получить достаточную добротность. Диаметр антенны, если грубо, соответствует дальности считывания. Антенны делал разного размера, число витков для каждого варианта уже не скажу за давностью лет, но резонанс достигался с емкостью порядка 1 нФ, индуктивность подобрать несложно. Контролировать резонанс удобно по расположению "пичка" на осциллограмме напряжения на антенне. При резонансе он должен быть точно на вершине:
no subject
Date: 2009-07-09 09:18 pm (UTC)no subject
Date: 2009-07-09 09:57 pm (UTC)AN710 - это часть документа 51115F.pdf "microID® 125 kHz RFID System Design Guide". Хотя принципы проектирования антенны такие же и на другой частоте.
Сама по себе катушка - это еще не всё. В ридере она обычно включена в состав последовательного колебательного контура, а в транспондере - параллельного. Поэтому для настройки антенны эмулятора нужно собрать параллельный колебательный контур и настроить его на несущую по максимальной амплитуде напряжения. Что касается нагрузки, то при настройке она не нужна, так как сделает резонанс менее острым. Обычно же нагрузкой контура является сам транспондер, который питается от этого же контура. Ну и при передаче кода он дополнительно подгружает контур, модулируя его добротность.
Вот еще хороший мануал - EMAN1099B.pdf "RFID Made Easy" от EM-Marin.
Ну и есть книга Klaus Finkenzeller "RFID Handbook".
no subject
Date: 2009-07-09 10:19 pm (UTC)Собственно, я нашёл две схемы эмуляторов (я потом напишу пост более подробно). Один я нашёл достаточно давно http://mrl.cz/projects/rfid/rfid.pdf . Я просто достал автора этого проекта. Он хоть и чех, и общаемся мы на английском, но он уже выслал мне все фотографии и прошивки :). Гляньте - там схема внутри, как раз как вы говорите. Транзистор, кстати, нельзя заменить на КТ315?
Вторая схема гораздо интереснее, с которой я и веду эксперименты. Это устройство описанно тут http://scanwidget.livejournal.com/32928.html . Но чтобы не лазать по куче ссылок, покажу схему, которая приведена прямо в исходном коде:
В идеальном варианте это должно работать без внешнего питания. Но не хочет. Я не отрицаю, что мог ошибится с Fuse-битами, хоть и очень мало вероятно.
Тут задача вообще интересная, как бы сделать эмулятор, но в то же время самообразоваться в области конструирования антен, устройства RFID-меток и прочее. Я вам очень признателен за помощь. Вы случаем не используете какие-либо online-меседжеры?
no subject
Date: 2009-07-10 08:30 am (UTC)Что касается второго эмулятора, то его работоспособность сомнительна. В любом случае, начинать надо по шагам: сначала запитать ATtiny85 от внешнего источника, подать на CLKI тактовую частоту от ридера, переопределить выходы на другие порты, подключить к ним катушку и добиться нормальной работы. Затем перейти на тактирование, а затем и питание от катушки.
Online-меседжеры не использую, и так Интернет очень сильно мешает работать.
no subject
Date: 2009-07-10 08:35 am (UTC)http://picasaweb.google.com/micahjd/RFID#5248658518260327522
Без них - это просто рисовка, трюк, типа эмулятор из двух деталей. Надежность считывания будет никакая. Такие конденсаторы имеются внутри чипов EM4102 и подобных.
no subject
Date: 2009-07-10 11:47 am (UTC)no subject
Date: 2009-07-10 12:34 pm (UTC)А что имелось в виду "у самой микросхемы тоже есть конденсатор"? Паразитная емкость выводов? Так она на 2 порядка ниже нужной.
no subject
Date: 2009-07-10 05:09 pm (UTC)И последний вопрос: можете ли подсказать, что почитать про формат посылки в стандартных офисных карточках. Как она выполненна, какие байты что значат (я думаю там очень похоже на one-wire DS1990A). Интересует формулы рассчёта контрольной суммы и т.п.
Очень признатален за помощь, очень приятно что вы тратите своё время на помощь мне.
no subject
Date: 2009-07-10 08:21 pm (UTC)Паразитные емкости вычислять теоретически - дело неблагодарное, лучше пойти от обратного: сразу подобрать емкость, чтобы она вместе с паразитными обеспечила резонанс на нужной частоте. Можно взять КПЕ от радиоприемника, обычно там емкость меняется примерно от 30 до 300 пФ. Параллельно включить постоянный конденсатор порядка 1.3 нФ и настроить контур в резонанс, контролируя осциллографом напряжение на нем. Если будет не хватать пределов - нужно заменить постоянный конденсатор другим, чуть меньше или чуть больше. Можно и без КПЕ, а просто тыкая параллельно разные емкости. Для настройки проще всего использовать поле ридера.
Я настраивал контур для самого ридера, поэтому ATmega и была генератором. Ну а сгенерировать любую частоту проще всего с помощью таймера 1:
На выводе OC1A будет меандр 125 кГц (пин должен быть настроен на вывод).
А что такое "стандартные офисные карточки"? Я слабое представление имею об офисах, никогда там не работал.
no subject
Date: 2009-07-10 08:51 pm (UTC)Как раз перерыл весь дом в поисках конденсатора, такое ощущение что я их в своё время выбросил :(. Попробую купить нескольких типонаминалов завтра. Расскажу об экспериментах.
По поводу офисных карточек, у вас как раз лежит на столе. Суть такова, что их используют для попадания внутрь некоторых офисов (ну или иных обьектов). Как я понимаю, внутри просто ПЗУ, которое отдаёт свои данные и всё. Вот и хочется понять что за тип карт, и какой формат данных.
no subject
Date: 2009-07-10 08:51 pm (UTC)no subject
Date: 2009-07-10 09:43 pm (UTC)Без кассы деталек сложно заниматься электроникой. И донорскую плату сейчас найти сложно: везде SMD, а такие конденсаторы не маркированы.
Если речь идёт о той карточке, с которой я работал, то там протокол EM-Marin. Описание есть, к примеру, в datasheet на EM4100. В начале посылки передается 9 единичных бит. Затем 10 строк данных по 5 бит. 4 бита собственно данные, а 5-й бит - бит четности строки. Завершает всё это передача строки, состоящей из битов четности столбцов, а 5-й бит последней строки - нулевой.
no subject
Date: 2009-07-12 05:41 pm (UTC)А передача и впрям очень похожа на one-wire. Я тут вопрос задал по этой теме http://community.livejournal.com/ru_radio_electr/607198.html :). Кстати уже кажется нашёл ответ, почему не наблюдаю такой картины - я же не подаю меандр!
no subject
Date: 2009-07-12 08:18 pm (UTC)no subject
Date: 2009-07-12 08:27 pm (UTC)no subject
Date: 2009-07-12 09:37 pm (UTC)no subject
Date: 2009-07-10 05:21 pm (UTC)no subject
Date: 2009-07-10 07:57 pm (UTC)no subject
Date: 2009-08-15 01:45 am (UTC)no subject
Date: 2009-08-15 07:38 pm (UTC)По существу. Я несколько лет назад довольно много писал для журналов "Схемотехника", "Компоненты и технологии", "Электронные компоненты", "Радиохобби", сейчас продолжаю писать в "Радиолюбитель". И понял такую вещь. Из пальца тему не высосешь (если это не обзор и не перевод). Чтобы получилась статья, нужно что-то сделать. Это всё вместе с написанием занимает столько времени, что оплата за статью просто ничто по сравнению с самым дохлым заказом любой электронной поделки. А в журнал "Хакер" вообще не представляю, что можно написать. Хорошо еще, что пока нет журналов "Жулик" или "Серийный убийца".
no subject
Date: 2009-08-15 07:44 pm (UTC)no subject
Date: 2009-08-16 08:29 am (UTC)no subject
Date: 2009-08-15 08:02 pm (UTC)Работы много. А если уже известное вжевать начинающему, то пишется за вечер.
Да, и кто там жаловался что за разработку никто не платит??? ;)
no subject
Date: 2009-08-16 08:27 am (UTC)За разработку сейчас не платят, но это кризисное. Кстати, журналы тоже в последнее время не платят, по крайней мере, наши местные.
no subject
Date: 2009-08-16 08:31 am (UTC)Да? А у меня в связи с кризисом заработок только вырос :/
no subject
Date: 2009-08-16 02:10 pm (UTC)no subject
Date: 2009-08-17 05:56 am (UTC)Но утверждать, что в РЭ нельзя заработать денег в таком случае нельзя.
no subject
Date: 2009-08-17 06:06 am (UTC)no subject
Date: 2009-08-14 06:44 pm (UTC)no subject
Date: 2009-08-14 07:21 pm (UTC)no subject
Date: 2009-08-14 10:02 pm (UTC)no subject
Date: 2009-08-15 01:44 am (UTC)no subject
Date: 2009-08-15 08:58 am (UTC)no subject
Date: 2009-08-14 09:50 pm (UTC)http://upload.caxapa.ru/RFID125_sch.pdf
no subject
Date: 2009-08-14 10:01 pm (UTC)no subject
Date: 2009-08-14 10:15 pm (UTC)