Радиопульты Keeloq на Arduino устройствах

keeloqЕсть статья, собственно откуда я и взял криво написанные скетчи для связи двух устройств с шифрованием посылок по аналогии с протоколом Keeloq. Почему криво? и почему не обратился к автору статьи? Да потому что там нет регистрации, свои комментарии нужно оставлять через сеть в контакте. Нет у меня там аккаунта увы, так что если случаем найдете эту статью, смело исправляйте свои ошибки по нижеследующим скетчам.

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

Дабы решить проблему мне пришлось поверхностно ознакомиться все же с документацией на алгоритм шифрования Keeloq и исправлять кривой скетч. В часть посылки, которая шифруется был добавлен серийный номер устройства, который также идет без шифрования, то есть приемник вначале сверяет раскодированный серийник, тот ли это серийник или случайное число, а потом уже смотрит на счетчик синхронизации, иными словами послать случайно большое либо маленькое число уже не получится! Второе, что пришлось подправлять — это запись в ПЗУ счетчика синхронизации, которого ранее небыло и его перезапись в случае обнуления. Третье — случайная рассинхронизация брелка, что может быть в случае, если брелков докучи, а приемник один. Да бы алгоритм совсем уж был похож на килоговский можно еще добавить и третий аргумент для сверки — код нажатой кнопки, но для моих нужд это не понадобилось. Ниже скетчи приемника и передатчика, пользуйтесь на здоровье…

ПЕРЕДАТЧИКИ

Простой передатчик:

Продвинутая версия включает в себя управление питанием дуины и если использовать про мини, у которого отпаян стабилизатор, то будет потреблять всего 0.04мA в спящем режиме. Им я управляю всякой всячиной в своем умном дому.

Ниже скетч для него:

ПРИЕМНИКИ

Простой приемник:

И мое произведение исскуства ниже по курсу, собранное на такой же про мини, но без спящего режима. Можно регистрировать до 20и пультов (хотя сколько максимум я не проверял, можно и 200 наверное, пока хватает ПЗУ), скетч сам сохраняет и серийники зарегистрированных пультов и их синхро данные в соотвествующих массивах!

Регистрация происходит в первые 5 секунд нажатием на ресет продвинутого либо простого пульта, скетчи которых приведены выше. Ресивер ловит серийник, который не шифрован и регистрирует его в ПЗУ. Далее присваивает ему самое высокое синх число, которое изменяется сразу при последующем нажатии на ресет трансмиттера и начинается синхронизация счетчиков…

 

Библиотеки:

keeloqlib

low-power-master

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo