Ключ от всех дверей 2

В последнее время часто приходится таскать с собой несколько домофонных ключей (aka iButton).

По-началу их было всего два и меня это не сильно напрягало, но вскоре в связку добавилась ещё пара таблеток.
И как на зло, они все были одинаковые на вид/цвет/вкус, поэтому приходилось подбирать ключ методом тыка, тупя у двери.
И вот, в один прекрасный день, я решил, что с этим надо что-то делать. Либо подписывать все ключи, но от связки это не избавляет, либо — искать альтернативу.

Эмулятор
К счастью альтернатива оказалась, в буквальном смысле, под рукой.
Маленький эмулятор ключей на базе ATTiny13V-10SSU. Сделан он был в начале лета, эксперимента ради.
После пары испытаний, валялся без дела у меня в ящике, как инопланетное оружие в зоне 51. Главное его достоинство заключается в том, что ему не нужно внешнее питание. При работе эмулятор питается от домофона, что избавляет от возни с батарейками.

По размеру вся конструкция не больше рублевой монетки. Можно прицепить к связке ключей. На верхней части разместился переключатель для выбора ключа из памяти. Это обычный тройной ДИП-переключатель.

Выбор ключа реализован довольно оригинально. Тут балом правит двоичная система. Три переключателя. Каждый из них может быть в двух состояниях: включен (1) и выключен (0). Всего получается 8 комбинаций — 8 ключей. Если повернуть ключик так, чтобы диод (на фотке не видно) находитля слева, то переключатели будут идти в обычном порядке — «старший >> младший». Да, на первый взгляд это кажется какой-то неоправданно сложной фигней, но на деле, очень быстро запоминается.

В качестве альтернативного управляющего элемента можно заюзать крутилку, подключенную к АЦП. Сделать шкалу с номерами ключей «1 — 8» и какой-нибудь компактный переменный резистор. Но такая конструкция работает менее надежно. При испытаниях она не могла открыть два из трех домофонов, а ключик с переключателем нормально работал на всех.

Коды в память эмулятора можно запихивать двумя способами. Зашить в EEPROM память ещё на этапе прошивки, или собрать что-то типа док-станции для перенастройки девайса. Дело в том, что кроме того, что прикидываться Ай-батоном, этот эмулятор умеет еще одну штуку. По команде 0x00 он выдает компу всю свою EEPROM память — 64 байта. А по команде 0xFF принимает 64 байта и записывает их себе в EEPROM. Физически это обычный 1-Wire.

То есть, чтобы перезаписать EEPROM память новыми кодами нужно подать ресет, выкинуть на линию команду 0xFF, и скинуть 64 байта новой EEPROM. А для чтения памяти — ресет, 0x00 и прочитать 64 байта. Эти команды прописаны в самом начале кода, и их можно заменить на другие. 0 и FF были взяты просто для теста.

Аппаратная часть эмулятора проста до безобразия:

Главная особенность схемы — питание. В этом плане эмулятор полностью повторяет настоящий iButton, питаясь во время работы от линии связи (Dq на схеме). Со стороны домофона нам обеспечена подтяжка в пару килоом (это в лучшем случае) от которой ключ питается. Это предъявляет очень важное требование к устройству — как можно более низкое потребление. При частоте 1.2 МГц и питании примерно 3V (очень примерно, т.к. зависит от мастера — домофона) получается потребление приблизительно 500 мкА.

С другой стороны, при передаче данных, линия прижимается к земле — нужно где-то запасать энергию. Для этого в схеме есть конденсатор C1 и диод D1, который не дает кондеру разряжаться, когда линия прижимается к земле.

На схеме указан диод Шоттки, и не спроста. Если поставить обычный диод, то из-за большого падения напряжения на нем (около 0.6В), напряжение на ножке PB0 будет слишком высоким. По даташиту оно не должно превышать Vcc+0.5V, а с простым диодом будет Vcc+0.6V или больше. Диод Шоттки, кроме маленького падения напряжения (0,1-0,2В) обладает другим полезным свойством — очень быстро закрывается и открывается.

Конденсатор выбирался чисто экспериментально. Пробовал разные варианты от 220nF до 10uF. Надежнее всего устройство работало с кондером в 1uF, его и оставил. При большей ёмкости тоже работало нормально, а вот меньше 1uF начинались глюки.

Алгоритм работы ключика, в переводе с ассемблера, выглядит примерно так:

  • Инициализируем всю периферию. Отключаем, за ненадобностью, компаратор и вешаем подтяжку на те пины, куда подключен переключатель.
  • Тупим 50мс. На всякий случай. За это время конденсатор должен полностью зарядиться, питание стабилизироваться, а подтяжка — подняться. Конечно, значение 50 мс взято с большим запасом.
  • Читаем переключатель и соображаем, с какого адреса нам начинать чтение. В EEPROM хранятся полные коды ключей, т.е. все 8 байт. Читаем нужный код из EEPROM в оперативку.
  • Ждем RESET импульса на линии 1-Wire. Как только ресет подан, отвечаем PRESENSE.
  • После этого ловим с линии код команды, которую нам сообщает домофон. Если это команда 0x00 или 0xFF значит от нас что-то хотят (записать память или прочитать) — переходим к соответсвующим функциям. Если код другой, значит с нами хочет говорить домофон.
  • Домофон настойчиво требует данные. Выдаём ему код из оперативки. Все 64 бита.
  • Переходим к шагу 4. На тот случай, если домофон захочет прочитать ключ ещё раз. Для верности.

После основного алгоритма идут процедуры чтения и записи EEPROM. Там всё просто: при чтении сначала извлекается байт из EEPROM, потом эмулятор даёт его прочитать. А при записи принимается байт и записывается в EEPROM. И так, пока не будет записана/прочитана вся оперативка (64 байта).

Посмотреть код

Также всё есть в архиве + куча комментариев. Так-что разобраться можно. Так-же тут не описан протокол 1-Wire — его описание было в другом посте.

127 thoughts on “Ключ от всех дверей 2”

    1. Ну, если я, например, был бы на работе то можно еще, будучи на работе (или в машине) переключить эмулятор со склада на подъезд. Проблема отрицательной температуры решена))) Меня, например именно компактность девайса порадовала очень. Думаю с подобным переключателем самое то.

    2. Да, на самом деле, когда я его делал — хотел собрать девайс как можно меньшего размера. :)

      А переключатель и правда удобный. Только цифры на нем стерлись со временем.

      1. День добрый! Вопрос к автору. Всё собрал, прошил контроллер, правда отдельно, не в устройстве, впаял, ничего не работает, попробовал снова прочитать контроллер -не читается, пишет неисправно устройство. Так с двумя микросхемами, может что то нужно поменять? Не подскажите?

  1. А нельзя ли сделать так, чтобы ключ последовательно выдавал все заложенные в него коды? Тогда отпадет необходимость в переключателе. Так вроде бы работают некоторые универсальные ДУ

    1. Думаю можно. Вот только домофон при «неправильном» ключике постоянно «ругаться» будет. Придется эмулятор убирать из лузы и снова подносить. Что-то такая система мне ситуацию с изначальным с кучей ключей напоминает.

      1. Да ну и пусть себе ругается :) Он пока ругается не пытается еще раз считать ключ? Если внутрисхемно быстро отключить ключ от линии и по новой зацепить и выдать следующий по порядку, то, возможно, даже и сработает и можно будет перебором быстро подбирать нужный не отпуская руки. Только пока схемка будет отключена и разряжена нужно будет где-то запоминать на каком ключе остановились… но опять же — все зависит от поведения домофона, надо бы изучить.

        Кстати, вот уже второй раз тут обсуждаются ключи 1-Wire с двумя выводами, а кто в курсе, как безконтактные работают? какой там интерфейс?

        1. В безконтактных RFID технология. Там передатчик (в замке) и приемник с чипом (в ключе). Передатчик генерит сигнал, приемник его ловит и запасает энергию, которая навелась на антенну (тоже паразитное питание). Потом выбрасывает в эфир ответ.

          В округе ничего, что могло-бы работать на RFID, пока не замечено. Как только появится — буду изучать :)

          А про перебор ключей — я тоже думал. У нас домофон опрашивает линию раз в пол секунды. Если заметит чужой ключ (у которого номер не совпадает, но CRC в порядке) — выдаёт Err, злобно пиликает, и следующий опрос совершает только через пару секунд. Если CRC не подходит (обмен нарушен), то отмалчивается и продолжает попытки считать ключ. Так что вариант не самый хороший. Хотя, да, надо изучить еще раз работу домофона, может и можно что-то придумать.

          Насчте того, где хранить данные при переборе. Можно и в оперативке :) От RESET импульса кондер не успеет разрядится, а значит МК не перезагрузится.

    2. У нас на работе, например, считывает код три раза подряд, а если код не совпал, или неправильный, то пиликает и отрубается на несколько секунд.
      Дома — читает непрерывно, и даже сругавшись на неправильный ключ продолжает читать — с этим приятно иметь дело, хоть брутфорсер пиши :)

      В общем, беда в том, что они, заразы, все разные, и придумать что-то универсальное сложно. А колупаться с каждым новым домофоном и изобретать новые схемы выдачи ключей — это на любителя занятие )

      С рабочим вот, к примеру, вообще с ходу не соображу, как перебор сделать. Вполне возможно, что и никак.

      1. А если тому [который на работе], выдавать каждый код по три раза? Хотя это уже решение под один домофон.

        Можно анализировать время между запросами на чтение. Если больше какого-то значения, значит домофон в это время ругался на неправильный ключ — можно подавать следующий. А если меньше — просто еще раз проверяет.

        Ну и, как совсем простой вариант: приделать на девайс кнопку «ещё», при нажатии на которую он начнет выдавать следующий ключ из памяти.

        1. Да, забыл сказать — ему если ключ не понравился, он не просто молчит, он, зараза, ещё и питание отбирает на эти несколько секунд. Так что тут разве что ионистор поможет на питании. Но ионистор, который удержит питание несколько секунд, заряжаться при поднесении ключа будет ещё дольше.
          Короче, сурово домофон сделан. Очень правильно с точки зрения безопасности :)

          Можно в принципе держать ионистор всё время заряженным (со спящими режимами контроллера поиграться — может и получится), или вообще батарейку присобачить, но как-то это всё, по-моему, несколько через чур ради одного несчастного домофона :)

            1. В принципе да.
              Да и ионистор, даже не очень большой, может несколько дней держать питание (если в power-down моде), и может даже будет успевать достаточно подзаряжаться при использовании ключа.
              Но лично меня, наверное всё же заломает ждать полминуты, пока эта зараза подберёт код. Проще уж самому ключ на связке найти )

      2. Перебора не получится, учитывая что там надо перебирать 64 (ЕМНИП) бита. Даже если предположить что скорость перебора несколько миллионов\миллиардов ключей в секунду (что не есть правда), то всё равно выходит порядка миллиона лет =)

        1. Ну, во-первых перебирать нужно не все 64, а только 48 бит. Но, согласен — это дофига много.

          А перебирать мы собирались не все возможные комбинации, а только те ключи, которые зашиты в память. Чтобы избавиться от переключателя.

    3. Если вы о полном переборе, то вариантов там очень очень много, а передаётся медленно. А если только 6, то много домофонов после нескольких (3-5) неправильных ключей, задержку достаточно большую фигачат.

    4. Не знаю как сейчас, но раньше можно было обмануть многие домофоны, скормив им ключ, содержащий FF (или 00, не помню). Штука в том, что все «прописанные» ключи хранятся в памяти домофона, но памяти в нём гораздо больше чем обычно бывает ключей. «Остаток» памяти забит как раз FF, поэтому такие ключи отлично подходили.

    1. А че? Нормально он работает. Сколько я им летом щелкал — ничего страшного не сделалось. Только, он по-началу при переключении щелкал, а теперь немного стерся, и переключается почти беззвучно. Но контакт всё-равно хороший.

  2. В качестве переключателя удобнее использовать не движковый, а переключатель с крутилкой, у которого на выходе сразу формируется двоичный код. Как пример вот это: ERD710BM06Z (по каталогу Вольтмастера).

    1. Еще стоит вопрос о доступности в разных радиотоварах. У нас в городе например такой полезняшки нет((( А вот подобные переключатели и в DIP и поверхностного монтажа.

  3. «На схеме указан диод Шоттки, и не спроста. Если поставить обычный диод, то из-за большого падения напряжения на нем (около 0.6В), напряжение на ножке PB0 будет слишком высоким. По даташиту оно не должно превышать Vcc+0.5V, а с простым диодом будет Vcc+0.6V или больше. Диод Шоттки, кроме маленького падения напряжения (0,1-0,2В) обладает другим полезным свойством — очень быстро закрывается и открывается.»

    А если вообще без диода и через «паразитное питание»? Диоды ATtiny выдержат (40мА мах, по документации), а ток ограничен, как вы говорите, 3V/2k=1.5mA.

    1. 5V, а не 3. Но вообще да. Можно положиться и на защитный диод, но это не очень хорошая инженерная практика, уж очень он слабо документирован.

      И вроде там было 10мА постоянки, и даже не помню точно, в каком месте я это вычитал.

    2. Сейчас отключил от схемы диод и испытал на своем домофоне — работает. Значит внутренние диоды на что-то годны.

      Испытания проводил не на мелком ключике (жалко мне его), а на специально собраной «отладочной плате». Схема там такая-же, только МК новой версии — ATTiny13A.

        1. Там ток всего 500 мкА. Замерял только-что тестером — 550 мкА, при резисторе 3к, и питании 5В. Так что ничего им не станет.

          Надо протестировать на других домофонах. И если все ОК — выкинуть из схемы диод.

          1. На любых домофонах будет 500 мкА — это же потребление контроллера, оно от резистора не зависит )
            Ну разве что если там напряжение отличается, тогда цифра может плавать, но не сильно.

            Тут вот ещё о чём стоит помнить: когда ключ подносишь к домофону, конденсатор разряжен и при резисторе в 3К через диод пойдёт 5В/3К = ~1,7 мА. В данном случае, конечно, не велика разница, но бывает так, что такие переходные режимы оказываются фатальны, поэтому о них всё же стоит помнить.

  4. Это называется «сложное техническое решение простой административной задачи». Все эти домофоны легко прописывают в себя нужную таблетку. Достаточно найти человека, который за этот домофон отвечает, и договориться с ним о прописывании именно твоей собственной таблетки — и не нужно париться с переключателями :)

    У меня сейчас на брелоке ровно одна таблетка (прописанная в семь, насколько мне помнится, систем идентификации) и один брелок проксимити, прописанный пока только в двух местах. Чрезвычайно удобно.

    1. Это называется «люди развлекаются» :)
      Ну нравится нам поковыряться иногда, спаять чего-нибудь. Задачки опять же интересные в процессе иногда возникают. Хобби.
      (Я тоже себе такой эмулятор таблетки когда-то паял, и тоже на тини13, кстати ))

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

      1. Не, я понимаю, как хобби всё имеет право на существование. Сам иногда развлекаюсь хитрыми способами, связанными с паяльником :)
        Я на изначальный посыл статьи отреагировал — «таблеток накопилось много, с этим надо что-то делать». Создание эмулятора — далеко не самый оптимальный способ решения этой задачи :)

        1. «К счастью альтернатива оказалась, в буквальном смысле, под рукой.
          Маленький эмулятор ключей на базе ATTiny13V-10SSU. Сделан он был в начале лета, эксперимента ради»

          Он просто валялся без дела. :)
          Да и зашить несколько кодов в EEPROM гораздо проще, чем искать тех, кто запихнет код моего ключика в нужные домофоны. Даже если нашлись — еще надо уговорить. А когда уговоришь — надо дождаться, пока они это сделают.

    1. Кстати да.
      У моей подруги ключ с кодом 9B 00 00 FF FF FF FF 01 открывает все подъезды в её доме.
      А вот на соседний дом уже не действует.
      Самое интересное, что это ключ она купила, когда потяряла свой. И не за какой униврсальностью не гонялась.

      В принципе, если есть несколько универсальных кодов для разных типов домофонов, то можно запихнуть их в эту таблеточку и невозбранно ходить всюду.

  5. «на некоторых моделях домофонов в новой чистой памяти домофона (предназначенной для хранения ключей жильцов) все биты установлены в 1 (т.е. забиты FF-ами).
    И если ключ будет выдавать тоже единицы, то программа подумает, что в чистой памяти тоже хранятся коды ключей и они совпадают с тем, что записано в нашем универсальном ключе и дверь откроется :)))»
    Полная статья: http://robocraft.ru/blog/arduino/124.html

    1. В некоторых моделях (например, в той, что в моем доме) стоят микросхемы памяти 24Cxx — EEPROM память. А они, действительно, изначально забиты единичками.

      Но это не всегда так. Да, и не все домофоны настолько тупые.

      1. Да ладно! Домофоны же это антивандально-антибомжистские штуки скорей, чем какое-то средство безопасности. Попасть в дом и не имея такого ключа, в принципе, не сложно. Соответственно, в их функцию вполне может не входить «защита от сторонних самодельных ключей». На кой чёрт им это? Ну, к слову, я не встречал домофона, который бы не велся на это.

        1. >>Соответственно, в их функцию вполне может не входить “защита от сторонних самодельных ключей”. На кой чёрт им это?
          Самодельных — да, а вот когда начинают продавать их за относительно небльшие деньги, то уже…

  6. Заметил интересную штуку:
    Если подтягивающий резистор (тот, что со стороны домофона) слишком большой, то девайс может глючить. Если такая фигня происходит, то стоит поставить кондер на большую ёмкость.

    Вот, к примеру, что происходит при кондере 1uF и резисторе 4.7к :
    RESET + PRESENSE
    Передан байт 0x33
    Прочитан байт 0x01
    Прочитан байт 0x00
    Прочитан байт 0x00
    Прочитан байт 0x00
    Прочитан байт 0x0C
    Прочитан байт 0x00
    Прочитан байт 0x00
    Прочитан байт 0x06

    Или что-то типа этого:
    RESET + PRESENSE
    Передан байт 0x33
    Прочитан байт 0x00
    Прочитан байт 0x00
    Прочитан байт 0x00
    Прочитан байт 0x04
    Прочитан байт 0x80
    Прочитан байт 0x00
    Прочитан байт 0x00
    Прочитан байт 0x00

    Короче, какая-то неведомая, почти рандомная чушь.

    Тоже самое, но с кондером в 10uF (SMD 1206):
    RESET + PRESENSE
    Передан байт 0x33
    Прочитан байт 0x01
    Прочитан байт 0xE8
    Прочитан байт 0x28
    Прочитан байт 0xCC
    Прочитан байт 0x8E
    Прочитан байт 0x00
    Прочитан байт 0x00
    Прочитан байт 0xCE

    Вот, это уже нормальный код, который зашит в EEPROM моего эмулятора.

        1. Диод шоттки, подойдет любой (ток там мизерный). Более того, вчера выяснилось, что его роль могут взять на себя защитные диоды, встроенные в МК.

          Резистор на 1R0 — это перемычка. Я её поставил только для того, чтобы вевести линию RESET на край платы. Так удобнее припаивать проводок для прошивки. Т.е. пользы от него никакой — можно выкинуть.

  7. Я очень сильно брежу?
    Заряд конденсатора: q=CU;
    На данной схеме кондёр — 1 мкФ, напряжение — 3В т.е заряд на нём — 3мкКл;
    Определение ампера через заряд: I=q/t;
    Потребляемый ток 500 мкА, время разрядки кондёра — t=q/I=0,006 с
    Т.е если наш контроллер продолжает работать до последнего, то, при частоте 1MHz, он отработает 6000 тактов.
    Хотябы примерно верный ход рассуждений?

    1. Только напряжение там 5В, пахать он будет где-то до 1.7В, значит 3.3мкКл, плюс подзарядка идёт постоянно во время работы шины.

      А вообще, конечно, можно ещё дополнительно попробовать уменьшить потребление — частоту поменьше, idle режим во время ожидания шины и так далее.

  8. Начинаю постигать сию науку и, по сему, отважусь спросить: какие FUSE биты ставить при программировании? И ещё, если не сложно, как , при программировании, записать ключь?

    1. Фьюзы на этот раз трогать не нужно совсем :)
      Он у нас по умолчанию зашит на 9.6МГц с делителем на 8. Что и дает 1.2МГц.

      А ключи записываются в еемпом. Ключ пишем полностью, все 8 байт. Самый первый будет находится по адресам 0x00 — 0x08. И так-далее.

  9. Добрый вечер. Попытался проверить работу устройства на Arduino прошитым для работы с 1990а, но
    Arduino не видит ключика на Tiny 13V. Скажите должен ли работать ключик если подать на него
    внешнее питание 5 вольт?

    1. Да. Можно работать и от паразитного и от внешнего питания (просто подать на Vcc).

      Проверьте переключатель на ключике.

      Если будет работать на внешнем питании, но не будет на паразитном — стоит увеличить емкость конденсатора (1206 бывают и на 10мкФ).

      Еще надо посмотреть, какой подтягивающий резистор стоит со стороны Arduino. У меня стабильно работало при 3к.

        1. Да, без переключателя будет нулевая ячейка. В таком случае он будет выдавать одни FF. Но если Arduino заточена именно на работу с ключами 1990A, то она забракует этот код. Ибо не совпадает код семейства и CRC.

          Можно запихнуть в еепром «нормальный» код, и посмотреть — что будет.

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

                    1. У меня сразу не заработал по двум причинам: Мастер зачем-то хотел явный импульс единицы, т.е. задержку в 5 мкс между своим запросом и ответом «присутствие». И уже после считывания ключа опять подавал опросный импульс и требовал на него «присутствие. Т.е. первая посылка после включения проходит таки, а потом ключ зависает надолго, т.к. запросы продолжает считать стробами данных и пока их не будет 8+64 заново присутствие не обозначит… :)

    1. И автомобильный аккумулятор, чтоб этот приемник реже заряжать :)
      Как раз щелкнуть переключателем на такой малышке не проблема, а вот таскать за собой gps+батарею+МК уже проблема — гораздо сложнее + их заряжать надо + ждать пока приемник координаты найдет.

    2. Имхо можно еще интереснее сделать — все тоже самое, только вместо кольца сделать 2 толстые короткие иглы — удобно тыкать как в розетку так и в таблетку.
      И алгоритм немного изменить: если в течении 1 сек не будет команд, значит от нас ничего не хотят, тогда выдать команду считывания, принять 8 байт в оперативку, убедится, что это ключ (есть код семейства, плюс если флеша хватит — можно и crc проверить — правильный/нет). Если ключ — записать в выбранную ячейку eeprom.
      Но диод придется в схеме оставить. И наверное придется резистор между одной из иголок и схемой повесить — чтоб МК (его порт) большим током не сжечь, если питание окажется мощным.

      Нафига это надо? Чтоб программировать эмулятор в полевых условиях:
      Приложил к иголкам таблетку, подал на иголки любое питание, подождал пару сек — и ключ скопирован.
      Да, будут проблемы с питанием, но если нужно — найдется. В конце концов проще питание найти чем комп с программатором и паяльником.

      1. Впрочем, тини12 может адресовать регистровый файл как память. Что даёт нам как минимум 16 байт памяти из нижней части регистрового файла. Так что, может и будет работать. нам ведь всего 8 байт нужно.

  10. А домофон себя как нибудь идентифицирует в линию? типа серийного номера у него спросить можно?
    если да, тогда можно попробовать сделать привязку ключа к этому серийнику/идентификатору, и ненужен переключатель…

  11. Здравствуйте всем у меня вопрос как откоректировать ером я прошил контроллер но хотел откоректировать ером я загрузил ером с контроллера вот что получилось test.eep
    :10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
    :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
    :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
    :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
    :00000001FF
    что мне надо откроректировать или подскажите редактор где это удобно сделать за подсказку я напишу программу котороя будет делать это автоматом и выложу сюда если надо ключ для примера
    мой
    01 BC B3 62 01 00 00 7A
    и еще чтоб было понятнее
    01 E8 28 CC 8E 00 00 CE
    покажи как внести спасибо за ответ и понимание прошивал AVR 910 а от сюда нет удобного редактора прошивок так как шил CodeVisionAVR

    1. Записать можно в любом hex редакторе типа WinHEX.
      Ключ размещается в EEPROM вот так:
      :01E828CC8E0000CEFFFFFFFFFFFFFFFFFFFFFFFF00
      :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
      :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
      :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
      :00000001FF
      Это будет ключ №1. Следующий размещается в таком-же порядке, следом за первым.

  12. Все спасибо разобрался напишу программу под это дело и выложу суда
    Да сам если честно тупанул не посмотрев меню CodeVisionAVR называется EDIT и там легко все коректируеться.

  13. Народ подскажите FUSE вроде прошил новый контроллер и все было по умолчанию но не работает не от внешнего питания не от конденсора и диода. Подскажите плюз просто может а заводе не так биты выставили :)

  14. Вот мой FUSE не кто не поможет мне кажеться что не правльно стоит деление на 8 и сторожевой бит
    у Меня вот так стоят биты :
    CKSEL0=0
    CKSEL1=1
    SUT0=0
    SUT1=1
    CKDIV8=0
    WDTON=1
    EESAVE=1
    RSTDISBL=1
    BODLEVEL0=1
    BODLEVEL1=1
    SPMEN=1

  15. Опередили немного меня.
    Я только собрался творить подобное и вот…
    Спасибо, всё сделано очень красиво.
    У меня есть мысль использовать переключатель на 4 группы.
    Но так как весь EEPROM задействован, добавить 8 ключей во FLASH.
    Например те, которые используются постоянно + вездеходы.

  16. у меня вопрос к аудитории и к автору. Мне нужен умелец или умельцы для создания небольшого приборчика в основе которого лежит принцип детекции движения по кругу и остановки маленького (1-2мм)шарика. приборчик с использованием скорее всего датчика Хола.Необходимо отражение времени от начала движения до его остановки.Приму серьезные и реальные предложения.

  17. Ребята, подскажите в каком порядке загонять ключ в еепром?
    На моей таблетке так:
    слева DB, справа 01
    сверху 6-и байтный код 00 00 03 09 15 4D

    Записывать в еепром надо как?
    Так:
    DB 00 00 03 09 15 4D 01
    или так:
    D4 51 90 30 00 00 BD 10
    или вот так:
    4D 15 09 03 00 00 DB 01

  18. Вернее не сверху, а снизу, если смотреть на таблетку.
    Получается вот так:
    DB 01
    00 00 03 09 15 4D

    Я еще раз изучил статью, где описан протокол, и все равно не понял.
    Думается мне правильный вариант это:
    01 4D 15 09 03 00 00 DB
    Кому не трудно, уточните пожалуйста.

    Вопросы к автору:
    1. Я буду использовать ATtiny13A. С внутренними генераторами я еще не работал, везде кварцы у меня. Соответственно вопрос такой: надо ли калибровать или что там делают? И какова задержка при старте?

    2. Потребляет 13А на частоте 1МГц в обычном режиме очень мало, нужно ли его гонять на 9,6МГц с делителем? Так ли важна частота? Или можно настроить фьюзами на 1МГц?

    3. Что делать с фьюзами супервизора? На какую напругу настроить?

    4. Может на ресет поставить номинал побольше, это должно еще сэкономить?

    5. Как ключ выдерживает пьянки, гулянки, обнималки, в т.ч. с собаками и кошками? Может надо поставить сапрессор от харда с шины +5В и резистор сотню-две ом в разрыв контакта таблетки?

    6. Можно ли в будущем доработать девайс так, чтобы вместо команды 0хFF, нажимать кнопку и считывать оригинальный ключ просто при подключении внешнего питания и манипуляции с ресетом соотв. на базе Вашего кода?

    З.Ы. Сильно не ругайте, за возможно тупые вопросы, но я начинающий и меня это волнует.

  19. Приветствую!
    Кто какими программатором и программой пользуется при прошивке tiny13?
    Сам пользуюсь программатором AVR910 и программой AvrProg — но она шьет только, если выбрать в опциях tiny26 (если выбрать tiny13, — прошивать отказывается) :-). Да и то прошивает через раз.
    Вот и подумываю над приобретением программатора, который будет надежно шить tiny13.

    1. Я пользуюсь Громовым и Uniprof. 100500 раз думал о том, что надо выкинуть его и сделать USB программатор, но видимо пока не пересяду на ноут или не спалю COM порт, ничего не изменится :)

  20. класная вещ!спасибо тому кто этот аппарат придумал. но я новичёк в это и не понимаю как его запрограммировать. если кто знает объясните пожалуйста поподробнее что и как,буду очень признателен!!!! за ранее большое спасибо

  21. Конструкцию можно сделать проще и универсальней)))
    У контроллера 6!!! выводов
    Когда контроллер проснулся он точно знает через какой вывод его запитали уже есть индекс в массиве ключей
    Я в свое время делал диэлектрический шестигранник вроде гайки 6 к 6 электродам по периметру подключались выводы контроллера на выводы питания контроллера подключ конденсатор питание осуществлялось через внутренние диоды контр.
    Так при касании брелоком считывателя один из выводов попадал на сигнальный/питающий а один или два на общий
    Выбирается соотв маска в регистр управления портом ключ из массива и вуаля
    Я на одну грань вешал iButton и Cyfral ключи
    В принципе если 6 ключей мало то на каждый вывод можно выводить по несколько ключей типа: ткнул кл1, ткнул кл2, 3 ИМС стоит копейки ресурса eeprom для счетчика должно хватить на долго.

      1. Состыковал 1 wire, записанный код на Tiny13 через ПониПрог читает, а команда 0хFF не работает. Что делать?

        До этого уже писали:
        pavik говорит:
        26 Декабрь 2011 в 9:08
        Не работает команда 0xFF — не записываются 64 байта.
        В коде ошибка — нет перехода на метку comp_write.

  22. Вопрос не совсем по брелкам, но тем не менее по 1-wire…
    Необходимо сделать логгер с использованием датчика температуры DS18B20, работающего как раз по этой шине. Требования довольно жесткие: работа в течении года от батарей и счет времени с приемлемой точностью (уход не более нескольких минут за все время работы). Сначала планировал использовать ATMega32 с часовым кварцем 32768 Гц, но анализ даташита DS18B20 показал, что длительность синхронизирующего импульса со стороны мастера при передаче единицы не должна быть больше 15 микросекунд… Но при тактовой частоте в 32 килогерца минимальный период между командами контроллера будет около тридцати с небольшом микросекунд. В общем-то не проблема использовать большую тактовую частоту, хоть 16 МГц. Но на ряд возникающих вопросов я не нашел прямого ответа.
    Чем вообще обусловлен выбор кварца 32768 Гц для подсчета времени? Стабильней ли он чем более высокочастотный кристалл, или же его выбирают только из-за меньшего необходимого делителя частоты и меньшего потребления энергии девайсом на малой частоте?
    И второй вопрос: есть ли практика наблюдения за потреблением энергии контроллерами на разных частотах при использовании режима сна «Idle» и пробуждением от прерывания таймера?
    Я рассуждаю так: снижение тактовой частоты однозначно снижает потребление энергии, однако при этом МК находится в активном режиме(анализируя, заснуть ли ему опять или выполнить полезную работу) пропорционально дольше, чем в режиме сна, когда он ожидает прерывания таймера и когда значение тактовой частоты важно только для самого таймера и возможно, других неспящих устройств. Следовательно, при использовании высокочастотного кварца потребление определяется в основном режимом «Idle», а пребывание в активном режиме(и энергопотребеление) сокращается за счет скорости работы. Видимо увеличение потребления энергии будет незначительным и им можно пренебречь даже поставив кварц 12-16МГц вместо 32кГц?

  23. Товарищи, такой вопрос.
    Во-первых, можно взять ATtiny13 без V? Хватит ему питающего напряжения? У меня в городе тайни13-ссу стоит 25 рублей, а тайни13в-10ссу — под сотню. Домофонный ключ — дешевле.
    Во-вторых, как можно считать обычный ключик и забить его в память нашего универсального? У меня на ключе ничего не написано.
    Спасибо.

  24. Хотя, второе не так важно: можно забить ключ «вездеходами».
    Вот ещё:
    В документации на домофон написано, что он работает с ключами DS-1990. На ключе — RW-1990. Подойдёт ли мне эта схема?

  25. Нужно сделать так, чтоб уже приложенный ключь посылал каждые 1-3 минуты один и тот же ключь,пока сделал на реле — громоздко. Я так понимаю, нужно изменить прошивку, но в программировании я никак :(
    dcoder — можно изменить код под это условие?

  26. А как на счет гравитации в качестве переключателя ?
    например монетка или шарик внутри чтобы контакты перемыкили,
    4 ключа точно без проблем можно сделать, а если подумать то и 8 не проблема 45 градусов на ключь не много…

  27. Конечно, спасибо огромное товарищу Dcoder за этот девайс, который разжег во мне интерес к мк. Очень долго не мог въехать куда и в каком формате тарить ключи. Ключ никак не хотел отдавать считывателю свои заветные цифры . По осцилографу, при поднесении эмулятора, после резета была однократная серия импульсов (похожих на presence и «чего то там» еще :-) ), а дальше -Тишина….. Покурив форум понял что он не читается командой «search rom». Отсюда вопрос к уважаемому Dcoder и другим энтузиастам. Не могли бы вы допилить прошивку так, чтобы эмулятор отдавал свой код и по этой команде.

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