Ока в Новосибирске

Клуб Окаводов Новосибирска
Текущее время: 28 мар 2024, 15:42

Часовой пояс: UTC + 7 часов




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 29 мар 2017, 23:30 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11206
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
Переехал жить в другой дом и с удивлением обнаружил, что домофон в подъезде имеет ключи образца iButton (DS1990). В доме, где жил до этого, домофон уже давно открывался беспроводными RFID-метками, что дало мне возможность ознакомиться с целым пластом информации и даже приобрести не дорогой китайский копировщик для быстрого решения вопроса с ключами (посчитал, что самому собирать - дороже выйдет). Но оказалось, что в других домах, и даже в разных его подъездах, могут стоять домофоны не только разных систем, но и разных домофонных компаний! Это очень удивительно, хотя вполне логично.

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

Итак, заказал записываемые болванти тут (можно тут, или даже тут), встал вопрос: как их быстро и без особых заморочек запрограммировать? Не хотелось тратить время на поиски корпуса, травление платы, тратить время на сборку и прочее. И всё потому, что требовалось мне всего лишь изготовить несколько ключей-копий для своих родственников и пару ключей на запас - то есть запрограммировать несколько ключей и забыть об этом (возможно на долго).

На помощь пришла ардуино и вот эта ссылка. Использовал я правда не ардуино-нано, а ардуино-uno плату, но это не имеет никакого значения - светодиод на ней так же на 13м порту. По ссылке указана схема подключения как кнопки, так и самого iButton, но я внёс небольшие изменения:
Текст свернут
Вложение:
Комментарий к файлу: Схема-оригинал
b879e9.png
b879e9.png [ 210.07 КБ | Просмотров: 11584 ]

Вложение:
Комментарий к файлу: Изменённая схема
!b879e9.png
!b879e9.png [ 249.78 КБ | Просмотров: 11584 ]

Что я сделал? В оригинальной схеме по ссылке, кнопка подаёт на цифровой порт D6 положительный потенциал. В моей схеме эта кнопка замыкает порт D6 на массу. Резистор R1 можно не ставить, если провода до кнопки короткие (используется внутренний резистор подтяжки).

Что-бы эти изменения работали, потребовалось не много изменить скетч. Так же я обнаружил в нём ошибку, что если сначала прочитать ключ-источник и затем подать команду "w" с терминала (я использовал встроенный ардуиновский "Монитор порта"), то при подключении ключа-приёмника в него прописывался его же код. А если вместо "w" кратковременно нажать кнопку, то записывался код ключа-источника (как и положено).

Так же мне не понравился вывод итоговой информации, где не удобно было сравнивать: попытка записи какого именно кода была произведена, какой код был в ключе-приёмнике изначально и какой получился после записи - всего этого не было в исходном скетче. Сделал на скорую руку - вроде работает.

Еще мне совсем не понравился вывод считанного кода ключа в оригинальном скетче. Например, я привык, что HEX-вывод для 8 битных чисел всегда состоял из двух знакомест - например, FF для десятичного числа 255 или 0A для десятичного 10. Ну правда, код в первой строчке читается тяжелей (или не привычней?), чем код во второй строчке. Надеюсь, я не один в своих заключениях. В общем, привёл вывод к более привычному виду.

так было: 1:3D:1C:A7:E:0:0:EA
так стало: 01:3D:1C:A7:0E:00:00:EA

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

Вроде всё. Запрограммировал все 10 ключей. Спустился, проверил - работают все! И вот решил написать сообщение в форум, пока не забыл ничего. Потребуется еще что-то запрограммировать - будет шпаргалка куда чего подключать и какой код использовать. А может и еще кому-то пригодится! Проявлять перфекционизм, например, делать из этого целый проект, и в конце концов через 5 лет получить из него центр по копированию всего на свете, цели не стояло. Ибо это задача одного вечера - прописать необходимые ключи и снова забыть об этом на долгое время.

Кратко как работать:
Для обычного чтения ключа - просто подключить ключ и наблюдать в терминале (ваш сом-порт, скорость 115200) код ключа.
Для копирования - прикладываем ключ-источник и считываем его код. Затем коротко нажимаем кнопку (зажигается светодиод), или вводим в терминале команду "w" (ничего не зажигается), надёжно(!!!) прикладываем ключ-приёмник до момента, пока не произойдёт вывод информации о результате (3-5 сек). Запись происходит сразу же после прикладывания, так что ничего дополнительно нажимать не надо!!!

Если в ключ был прошит чужой код семейства (отличный от 01h), то для восстановления этого ключа нужно:
1. Выключить ардуину, включить
2. Приложить такой ключ к контактам, нажать и удерживать кнопку в течение 6 секунд.
3. В ключ должен прописаться так называемый "универсальный код". В чём его универсальность я так и не понял (мой домофон он не открыл), но факт в том, что код семейства у ключа снова должен вернуться в 01h, после чего в него уже можно будет записать любой другой код. Не забывайте про CRC, но об этом в оригинальной статье написано изрядно. В общем-то можно заставить скетч самостоятельно высчитывать crc ключа, код которого мы хотим принудительно записать в качестве "универсального", но на данный момент этого не требовалось и я этого делать не стал. Так-же не было цели сделать код компактным, быстродействующим, оптимизированным и прочее. Нужно было прописать новые ключи в кратчайший срок.


Вложения:
Комментарий к файлу: iButton connector со встроенным светодиодом. На цвета проводов не обращайте внимание - не совпадают!
EN_KB_Diagram_1_Wire_I_Button_Reader.png
EN_KB_Diagram_1_Wire_I_Button_Reader.png [ 9.21 КБ | Просмотров: 11574 ]
Комментарий к файлу: Плата UNO. Кнопка не подключена. Цифровой вывод D13 подключен к светодиоду, который находится в iButton connector
!!!!dOnMj.jpg
!!!!dOnMj.jpg [ 132.52 КБ | Просмотров: 11574 ]
Комментарий к файлу: Изменённый скетч
sketch_mar28a.zip [1.53 КБ]
Скачиваний: 830

_________________

Поблагодарить автора:
Контакты:
Телеграмм: alexSh154
Вконтакте
Одноквассники
Instagram
Skype: искать oka275 (в англ.раскладке)
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 7 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB