Сайт радиолюбителей Республики Коми.
Автомобильная сигнализация с радиоканалом, плавающим кодом и домашним комплектом для мониторинга состояния датчиков.
На главнуюГлавная

Автомобильная сигнализация функционально состоит из двух блоков: автомобильного и домашнего комплекта. Автомобильный комплект представляет собой функционально законченный блок, способный работать и без домашнего комплекта.

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

В предлагаемом варианте используются датчики, формирующие минусовой потенциал:

  • Автомобильный комплект обеспечивает управление механическими затворами дверей (один канал со сменой полярности), сиреной (выходной ток до 2А), фарами (один канал), светодиодом охраны.
  • Автомобильный комплект обеспечивает прием и выполнение команд от домашнего комплекта (постановка на охрану, постановка на охрану с выключенным датчиком удара, запрос эха, мигнуть фарами, подать короткий звуковой сигнал 80мс). Передача от домашнего комплекта осуществляется в некодированоом виде.
  • Автомобильный комплект обеспечивает прием и выполнение команд от брелка (постановка на охрану, постановка на охрану с выключенным датчиком удара, снятие с охраны). Передача от брелка осуществляется в кодированоом виде.
  • Аварийное снятие с охраны (во время звучания тревожного сигнала) и перевод сигнализации в режим программирования брелков осуществляется с помощью кнопки Valet. Потребление сигнализации в режиме охраны не более 4.5ма.

Домашний комплект обеспечивает передачу команд автомобильному комплекту (постановка на охрану, постановка на охрану с выключенным датчиком удара, запрос эха, мигнуть фарами, подать короткий звуковой сигнал 80мс).

Домашний комплект обеспечивает прием и отображение на дисплее ЖКИ информации от автомобильного комплекта:

  • Напряжения бортсети автомобиля.
  • Индикацию состояния датчиков (в случае срабатывания).
  • Индикацию реального времени.
  • Индикацию количества срабатываний датчика удара и время последнего срабатывания.
  • Индикацию времени до рестарта программы автомобильной сигнализации (в шестнадцатеричном виде). Рестарт происходит каждые 55минут, при этом состояние сигнализации не нарушается. При рестарте происходит передача информации о состоянии датчиков и напряжении бортсети автомобиля по радиоканалу.
  • Индикацию интегрального параметра качества канала (в шестнадцатеричном виде).
  • Индикацию и коррекцию текущего времени.

Автомобильный комплект состоит из:

AT89s8252

центральный процессор

ULN2003

драйвер силовых устройств

MCP3008

АЦП

TX20

передающий модуль

RR10

приемный модуль

DS1812

микросхема сброса процессора

 

В качестве модулей приема и передачи используется сверхрегенеративный радиомодуль для приема и TXH20 российской фирмы СМП для передачи. Применение сверхрегенеративного модуля в качестве приема продиктовано плохой стабильностью частоты брелков. В этих условиях супергетеродинные приемники не обеспечивают надежный прием сигналов от брелка, поскольку имеют более узкую полосу приема. Передача сигналов на домашний комплект не кодирована и осуществляется через последовательный порт процессора.

Диагностика механических датчиков осуществляется с помощью транзисторных оптронов LTV829, что позволяет работать с механическими датчиками любой полярности и обеспечивает гальваническую развязку цепей диагностики с цепями датчиков. Последовательно с оптронами включены светодиоды, обеспечивающие индикацию сработавшего датчика (применялись на стадии отладки). Выходные транзисторы оптронов подключены к выводам процессора. Автомобильный комплект имеет разъем программирования, обеспечивающий программирование процессора от компьютера по шине SPI.

Для уменьшения потребления при снятой с охраны сигнализации применена схема подачи питания на LTV829 и датчик удара (КП505, КТ3107). Элементы схемы подобраны так, что ток, протекающий через КТ3107 ограничивается на уровне 30ма. Управление светодиодом осуществляется с помощью полевого транзистора КП505.
Подача питания на передатчик осуществляется с помощью ключа на КТ973 транзисторе. Светодиод обеспечивает индикацию напряжения питания на передатчике.

В схеме применен стабилизатор LP2950, имеющий низкий ток утечки на землю. В сигнализации применены стандартные автомобильные разъемы. S1 – 11 контактный силовой разъем подачи питания и вывода силовых сигналов. S2 – разъем подключения механических датчиков. Подключение указанных разъемов стандартно и соответствует сигнализации Mongoose модель IQ. Исключение составляют выводы S2.1 и S2.8. Эти выводы незадействованы в штатном варианте и используются для подключения кнопки Valet.
Управления внешними силовыми цепями автомобиля (электрозамок, фары, сирена) осуществляется с помощью реле. Реле управляются силовым драйвером ULN2003. Все реле, показанные на схеме снабжены обратными диодами (на схеме не показаны).
Измерение напряжений (питания сигнализации и бортсети автомобиля) осуществляется с помощью 8 - канального АЦП MCP3008. Остальные каналы зарезервированы для работы с датчиком удара на ADXL250.

Модуль процессора состоит из процессора AT89s8252, микросхемы сброса DS1812 и кварца 11.059.000Гц. Внутренняя флэш-память данных используется для памяти констант брелков. В проекте используется два брелка, однако их количество может быть увеличено. Частота кварца выбрана для обеспечения стандартных скоростей последовательного порта и может быть изменена на обоих комплектах одновременно.

Однако в этом случае придется изменить константы приема сигналов от брелка в автомобильном комплекте. Резистор, включенный последовательно с DS1812 предназначен для исключения взаимного влияния цепей сброса в режиме программирования AT89s8252. Выводы портов Р1 и Р3 процессора подтянуты к источнику +5В через резисторы 47к.
Конфигурационная перемычка (P1.1) предназначена для переключения на датчик удара, собранный на микросхеме ADXL250. В данном проекте он не используется и вывод должен оставаться неподключенным. Модуль процессора использует следующие сигналы:

LED (P1.2)

выходной сигнал управления светодиодом охраны

Valet(P1.3)

входной сигнал от кнопки Valet

SS, MOSI, MISO, SCK (P1.4, P1.5, P1.6, P1.7)

сигналы шины SPI. Используются для программирования AT89s8252 и для чтения / записи MCP3008.

RES (P3.0, P3.3)

входной сигнал, прием последовательных данных от домашнего комплекта и от брелка

TXD (P3.1)

выходной сигнал, передача не кодированных последовательных данных на домашний комплект

SHOCK (P3.2)

входной сигнал от датчика удара

ZAG (P3.4)

входной сигнал от датчика зажигания

DVER (P3.5)

входной сигнал от датчиков дверей (все датчики имеют нормально разомкнутые контакты и соединены параллельно).

KAPOT (P3.6)

входной сигнал от датчика капота

ALARM (P3.7)

выходной сигнал подачи питания на оптроны механических датчиков и датчик удара

Per (P0.4)

выходной сигнал включения передатчика

OTKR(P0.3)

выходной сигнал на реле открывания дверей

ZAKR(P0.2)

выходной сигнал на реле закрытия дверей

FARY(P0.1)

выходной сигнал на реле включения фар

SIREN(P0.0)

выходной сигнал на силовой ключ включения сирены (КТ805, ток 2А)

 

Модуль АЦП предназначен для измерения напряжения питания сигнализации и для измерения напряжения бортсети автомобиля. В дальнейшем планируется использовать три канала для измерения аналоговых сигналов с датчика удара на ADXL250. Чтение АЦП осуществляется с помощью сигналов шины SPI (SS, MOSI, MISO, SCK). АЦП включен по стандартной схеме, взятой из DATASHIT на микросхему. Потенциометром устанавливается точное значение напряжения бортсети.

Модуль драйверов предназначен для управления силовыми промежуточными реле (фары, электрозамок), включения передатчика, включения силового ключа сирены. Используемая микросхема ULN2003 уже содержит в своем составе обратные диоды для гашения всплесков напряжения на обмотках реле. Однако, настоятельно рекомендуется подключать дополнительные диоды непосредственно (и вблизи) к обмотке реле для улучшения помехозащитны.

Для уменьшения тока, потребляемого сигнализацией включение силовых драйверов осуществляется низким логическим уровнем. Транзисторы КТ361 предназначены для инвертирования логического уровня.


Домашний комплект состоит из:

AT89с51

центральный процессор

PC2004

четырехстрочная ЖКИ панель

DS1307

часы реального времени

TX20

передающий модуль

RX20

приемный модуль

DS1812

микросхема сброса процессора

ULN2003

силовые ключи

 

Домашний комплект питается от сети переменного тока 220В. В домашнем комплекте применены радиомодули, собранные по супергетеродинной схеме RX20 и TX20 Российской фирмы СМП. Транзистор КТ3102, включенный на выходе RX20 является буфером, поскольку микросхема модуля имеет малый выходной ток. Микросхемы DS1812 предназначена для сброса процессора. Резистор, включенный последовательно с DS1812 предназначен для исключения взаимного влияния цепей сброса.

В схеме применены силовые драйверы ULN2003 для управления подачей питания на передатчик, подачи звуковых сигналов, управления внешним светодиодом (мигалка), управления подсветкой ЖКИ индикатора PC2004. Подача питания на передатчик осуществляется с помощью ключа на транзисторе КТ973 . Светодиод обеспечивает индикацию напряжения питания на передатчике.

Часы реального времени DS1307 включены по типовой схеме. Чтение и запись микросхемы осуществляется по интерфейсу I2C. Диоды обеспечивают напряжение на выводе 3 не выше 3.9В, поскольку при большем напряжении батареи (по отношению к питающим +5В) микросхема переходит в спящий режим при котором блокируется интерфейс I2C. В качестве звукового излучателя применена динамическая головка 0.25Вт, сопротивлением 8Ом.

В индикаторе PC2004 применена двухуровневая подсветка, уменьшающая яркость индикатора при не активности. Схема домашнего комплекта обеспечивает также управление внешним светодиодом с периодом мигания 350мс.

Функции кнопок:

№ кнопки

Основной режим

Режим коррекции времени

Кнопка 1 (P2.0)

Постановка на охрану

Обнуление секунд и выход в основной режим.

Кнопка 2 (P2.1)

Постановка на охрану с выключенным датчиком удара

Выбор редактируемого параметра

Кнопка 3 (P2.2)

Мигнуть фарами

Увеличение значения

Кнопка 4 (P2.3)

Подать звуковой сигнал

Уменьшение значения

Кнопка 5 (P2.4)

Запрос эха. В ответ автомобильный комплект передаст стандартный пакет данных. Передача происходит также каждые 55минут.

Не обслуживается

 

Программное обеспечение и логика работы автомобильного комплекта.

При включении питания процессор инициализирует рабочие ячейки ОЗУ. Флэш-память не инициализируется. Включаются фары на время 2.5с. Далее процессор переходит в режим снятия с охраны. Светодиод выключен.

В этом режиме доступно программирование брелков:

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

В режиме охраны светодиод мигает с периодом 300 / 1000мс, если за время охраны не подавался тревожный звуковой сигнал (при срабатывании датчиков дверей, капота или багажника). Иначе период составляет 100 / 400мс.
Снятие с охраны возможно только с помощью брелка, т.к. только брелок передает посылки с защищенным плавающим кодом.

Для снятия с охраны нажимается соответствующая кнопка на брелке:

  • При этом процессор включит реле электрозамков на открытие, на время 250мс, выключит светодиод.
  • При включенной сирены возможно также снятие сигнализации с охраны нажатием кнопки VALET.
  • При срабатывании датчика удара во время охраны процессор включает фары на время 500мс. Если в течение 20с количество срабатываний датчика удара превысит 4 раза, вместе с фарами будет включаться сирена на время 500мс.
  • При срабатывании датчика двери во время охраны процессор включает попеременно сирену и фары с периодом 350мс.
  • Если в течение 90с срабатывание датчика не будет устранено, процессор исключит датчик из алгоритма анализа датчиков и выключит сирену и фары. Дальнейшая охрана будет, осуществляется без этого датчика.
  • Если во время охраны датчик удара вернулся в нормальное состояние, он снова будет включен в алгоритм анализа датчиков.

Программирование брелков (при снятой с охраны сигнализации)

Нажать и удерживать кнопку VALET в нажатом состоянии более 12.8с. Включится светодиод охраны. Процессор готов к программированию брелков.

Отпустив кнопку VALET необходимо в течении 12.8с нажать кнопку снятия с охраны на программируемом брелке. Светодиод должен погаснуть, что говорит о приеме первой посылки от брелка. Через 1с, но в течение 12.8с повторно нажать кнопку снятия с охраны программируемого брелка.

  • При правильном приеме произойдет выполнение команды. Электрозамки будут включены на разблокирование дверей, на время 250мс.
  • При неправильном приеме будет подан звуковой сигнал. При этом можно повторно нажать кнопку брелка.
  • При срабатывании любого из датчиков, а также каждые 55минут происходит передача стандартного пакета на домашний комплект.

Посылка включает в себя 8 байт передачи:

1 Байт = 12h

Заголовок передачи

2 Байт

Младший байт счетчика сброса (отображается на дисплее ЖКИ. Работает на вычитание. Определяет время до сброса)

3 Байт

Стаpший байт счетчика сброса (отображается на дисплее ЖКИ. Работает на вычитание. Определяет время до сброса)

4 Байт

Байт статуса сигнализации

5 Байт

Напряжение бортсети автомобиля

6 Байт

Код команды домашнему комплекту

7 Байт

Счетчик циклов передедачи (интегральный параметр качества канала, отображается на дисплее ЖКИ в hex формате)

8 Байт

Контрольная сумма

 

Байт статуса сигнализации содержит следующую информацию:

Бит 1

Флаг постановки на охрану (используется домашним комплектом)

Бит 2

Строб 50мс (домашним комплектом не используется)

Бит 3

Флаг, выставляемый при переобучении KeeLoq (домашним комплектом не используется)

Бит 4

Флаг, выставляемый при ресинхронизации KeeLoq (домашним комплектом не используется)

Бит 5

Флаг подачи тревожного сигнала (домашним комплектом не используется)

Бит 6

Флаг выключения датчика удара (при постановке на охрану с выключенным датчиком удара, используется домашним комплектом)

Бит 7

Флаг мигалки светодиодом (домашним комплектом не используется)


Коды, передаваемые брелком:

2

Постановка на охрану

4

Снятие с охраны

6

Постановка на охрану с выключенным датчиком удара


Коды, передаваемые домашнему комплекту (6-й байт передачи)

78h

Включение питания (при подаче питания)

4bh

Сработал датчик удара

52h

Сработал датчик капота

0a8h

Сработал датчик двери

86h

Сработал датчик зажигания

0ech

Передать код ответа ECh (на запрос эха)

0deh

Подтверждение снятия с охраны (передается при снятии с охраны)

39h

Подтверждение постановка на охрану (передается при постановке на охрану)

0c7h

Код рестарта программы (передается каждые 55мин)

 

Описание констант программы автомобильного комплекта

Номер строки программы

Значение

Описание

70

7

Начальная установка времени цикла мигания при включении питания (350мс)

71

80

Начальная установка времени передачи при включении питания (4с)

72

FFh

Начальная установка счетчика сброса при включении питания (младший байт)

73

FFh

Начальная установка счетчика сброса при включении питания (старший байт)

81

78h

Передаваемый код при включении питания

83

50

Время включения фар при подачи питания (2.5с)

103

FFh

Время ожидания входа в режим программирования брелков (12.8с)

108

FFh

Время ожидания второго нажатия кнопки брелка (12.8с)

132

50

Количество попыток постановки на охрану датчика удара ADXL250 - не используется

154

3

Порог значений канала X и Y датчика удара ADXL250 - не используется

165

20

Порог 1 канала Z датчика удара ADXL250 - не используется

167

4Bh

Передача кода при срабатывании канала Z датчика удара ADXL250 - не используется

168

10

Время включения фар при превышении порога 1 канала Z датчика удара ADXL250 - не используется

169

40

Порог 2 канала Z датчика удара ADXL250 - не используется

172

15

Время подачи звукового сигнала при превышении второго порога канала Z датчика удара ADXL250 (15 раз по 350мс) - ADXL250 не используется

178

5

Время подачи звукового сигнала при превышении порога каналов XY датчика удара ADXL250 - не используется (5 раз по 350мс) - ADXL250 не используется

180

4Bh

Передача кода при срабатывании канала XY датчика удара ADXL250 - не используется

187

60

Время до обнуления ячейки udarmem (20с)

188

3

Количество срабатываний датчика удара в течение 20с до включения сирены

192

10

Время подачи звукового сигнала при срабатывании датчика удара более 4 раз течении 20с (500мс)

193

10

Время включения фар при срабатывании датчика удара (500мс)

194

4Bh

Передача кода при срабатывании датчика удара

200

6

Время включения светодиода в режиме охраны (300мс)

202

20

Время выключения светодиода в режиме охраны (1000мс)

205

2

Время включения светодиода в режиме охраны (100мс) после подачи тревожного сигнала

207

6

Время выключения светодиода в режиме охраны (100мс) после подачи тревожного сигнала

216

5

Время включения электрозамков на открытие при снятии с охраны кнопкой VALET

222

52h

Код передачи при срабатывании датчика капота

223

20

Время работы сирени при срабатывании датчика капота (7с)

229

0A8h

Код передачи при срабатывании датчика двери

230

20

Время работы сирены при срабатывании датчика двери (7с)

236

86h

Код передачи при срабатывании датчика зажигания - не используется

237

20

Время работы сирени при срабатывании датчика зажигания (7с) - не используется

242

2

Код постановки на охрану

245

4

Код снятия с охраны

246

5

Время включения электрозамков на открытие при снятии с охраны (250мс)

247

5

Код команды мигнуть фарами

248

10

Время включения фар при приеме команды мигнуть фарами (500мс)

249

6

Код постановки на охрану с выключенным датчиком удара

251

5

Время включения электрозамков на закрытие при постановке на охрану (250мс)

254

7

Код команды подать звуковой сигнал

256

2

Время подачи звукового сигнала при приеме команды подать звуковой сигнал (80мс)

257

9

Код запроса эха

258

0ECh

Код ответа на запроса эха

262

7

Номер канала АЦП, измеряющий напряжение бортсети

266

21h

Смена режима таймеpа1 - 8бит с перезагрузкой из TH1 при передаче

267

0FAh

Константа, определяющая скорость последовательного порта (9600бод)

276

80

Восстановление константы времени передачи (4с) после передачи

281

50

Константа блокировки датчика удара при мигании фарами (1с)

289

0B8h

Константа, определяющая время подачи звукового сигнала (80мс) при SIREN = 2 младший байт

290

40h

Константа, определяющая время подачи звукового сигнала (80мс) при SIREN = 2 старший байт

291

100

Константа блокировки датчика удара при включении сирены (5с)

302

0deh

Код, передаваемый при снятии с охраны

313

2

Длительность сирены при попытке постановки на охрану со сработавшим датчиком капота (80мс)

317

20

Задержка постановки на охрану при после закрытия дверей (1с)

319

10

Время включения фар при попытке постановки на охрану с открытыми дверями или багажника (500мс)

325

39h

Код подтверждения, передаваемый при постановке на охрану

328

7

Начальная инициализация счетчика мигания светодиодом при постановке на охрану (350мс)

331

200

Запрет анализа датчика удара при постановке на охрану (10с)

336

0C7h

Код, передаваемый при рестарте программы (каждые 55мин)

342

7

Таймер с интервалом 350мс

353

100

Константа блокировки датчика удара при включении прерывистой сирены (5с)

377

7

Константа, определяющая время прерывания аппаратного таймера 0 (50мс). Младший байт

378

4Ch

Константа, определяющая время прерывания аппаратного таймера 0 (50мс). Старший байт

397

12h

Байт заголовка передачи

411

0FFh

Инициализация счетчика шагов передачи после передачи

453

0E8h

Константа, определяющая паузу перед посылкой от брелка. Старший байт

454

42h

Константа, определяющая паузу перед посылкой от брелка. Младший байт

456

11h

Смена режима таймеpа1 - 16 бит

462

0F0h

Фильтр минимальной длительности паузы перед посылкой от брелка.

496

66

Количество принимаемых бит от брелка

508 - 515

 

Байты серийного номера первого брелка

516

10h

Адрес байтов счетчика синхронизации брелка 1 во флэш-памяти процессора

519 - 527

 

Байты серийного номера второго брелка

528

12h

Адрес байтов счетчика синхронизации брелка 2 во флэш-памяти процессора

531 - 539

 

Байты серийного номера домашнего комплекта

544

4

Код снятия с охраны (для блокировки снятия с охраны)

550 - 557

 

декодирующий ключ KeeLoq

635

 

Дискриминационные биты KeeLoq

651

20h

Адрес ячеек флэш-памяти процессора при ресинхронизации брелка.

669

16

Порог 1 синхронизации (количество посылок брелка, после которых происходит рассинронизация)

677

16

Порог 2 синхронизации (количество посылок брелка, после которых необходимо переобучение 16 + 16)

679

3

Время подачи звукового сигнала при необходимости переобучения (превышение порога 2, 150мс).

683

2

Время подачи звукового сигнала при необходимости ресинхронизации (превышение порога 1, 80мс).

684

20h

Адрес ячеек флэш-памяти процессора при ресинхронизации брелка.

689

30

Запрет анализа канала приема при успешном приеме кода (1.5с)

695

91h

Восстановление режима работы аппаратного таймера 1 (запуск от INT1) после прерывания приема.

744

6

Номер канала АЦП, измеряющий напряжение питания сигнализации

747

60

Пороговое значение напряжения, ниже которого запрещена запись во внутреннюю флэш-память процессора (6В). Если напряжение ниже этого порога процессор будет остановлен.

765

5

Номер канала АЦП для координаты X

768

4

Номер канала АЦП для координаты Y

Работа подпрограммы приема кода KeeLoq:
Осуществляется по прерыванию. На время работы программы все остальные прерывания запрещаются. Таймер 1 работает в режиме 9: 16 - битный таймер с запуском от INT1. Запуск таймера осуществляется передним фронтом на INT1, останов на заднем фронте INT1. Прерывание приема также осуществляется на заднем фронте INT1.

Таким образом, при входе в программу приема имеем длительность запускающего импульса в регистрах TH1:TL1. В подпрограмме приема режим таймера 1 меняется на 1: 16-битный таймер с запуском / остановом от TR1. Все задержки в подпрограмме приема осуществляются с помощью этого таймера. При выходе из подпрограммы приема режим таймера 1 восстанавливается на 9.

Алгоритм работы подпрограммы приема:

  1. Принимаемые 66 бит располагаются в ячейках HOP0+0 … Hop0+8 (2мл. бита).
  2. Проверка 28 бит серийного номера в ячейках HOP4 – HOP7 (младший ниббл).
  3. Декодирование KeeLoq.
  4. Проверка 8 дискриминационных бит в байте HOP0+2 и 2 дискриминационных бита в байте HOP0+3 (два младших бита).
  5. Проверка разности принятого значения счетчика синхронизации (HOP0+0 - младший байт и HOP0+1 - старший байт) и счетчика синхронизации, записанного во флэш-память (10h – младший байт и 11h – старший байт), которая не должна превышать +16. При соблюдении этого условия значение счетчика синхронизации перезаписывается в ячейки 10h и 11h (мл.б. и ст.б.) флэш – памяти декодера. Выделяется код нажатой кнопки, и код приема помещается в ячейку Priem.
  6. При разности значений счетчика синхронизации кодера и декодера больше +16, но меньше +32:

а)выставляется бит ReSync, и принятое значение счетчика синхронизации сохраняется во флэш - памяти (ячейки 20h и 21h, мл.б и ст.б). Сбрасывается флаг ReLrn (если был установлен).Осуществляется выход из подпрограммы.
b) при следующем приеме посылки, программа, встретив флаг ReSync сбрасывает его и проверяет разность последней принятой посылки и записанной во флэш – память декодера (ячейки 20h и 21h, мл.б и ст.б) значений счетчика синхронизации. Разность должна быть +1.
c) если условие выполняется, принятое в последний раз значение счетчика синхронизации перезаписывается в основные ячейки флэш – памяти (10h – мл.б и 11h – ст. б.). Декодируется код нажатой кнопки, и код приема помещается в ячейку Priem.

При разности значений счетчика синхронизации кодера и декодера больше +32, выдается звуковой сигнал 150мс и прием прекращается. В этом случае должен быть подключен внешний процесс, который:
- выставляет бит ReLrn. Установленный бит ReLrn заставляет работать программу по алгоритму, описанному в п.6.

Логика работы домашнего комплекта

Домашний комплект имеет четырехстрочный двадцатисимвольный дисплей ЖКИ PC2004 фирмы Powertip. На дисплее ЖКИ (см рисунок ниже ) в первой строке отображаются: слева напряжение бортсети автомобиля, в центре: байт качества канала, справа: счетчик времени до рестарта программы автомобильного комплекта.

Во второй строке отображаются режимы работы сигнализации:

постановка на охрану

При передаче команды постановки на охрану (звучит короткий звуковой сигнал при приеме подтверждения команды постановки на охрану)

постановка с В.Д.У.

При передаче команды постановки на охрану с отключенным датчиком удара (звучит короткий звуковой сигнал при приеме подтверждения команды)

мигнуть фарами

При передаче команды мигнуть фарами

звуковой сигнал

При передаче команды подать звуковой сигнал

проверка связи

При передаче команды запрос параметров (эхо)

прием есть, не на охр

После передачи команды запрос параметров (эхо) и при ответе автомобильного комплекта в течение 5с

прием есть, охр с ВДУ

После передачи команды запрос параметров (эхо) и при ответе автомобильного комплекта в течение 5с

прием есть, на охране

После передачи команды запрос параметров (эхо) и при ответе автомобильного комплекта в течение 5с

приема нет

После передачи команды запрос параметров (эхо) и отсутствии ответа автомобильного комплекта в течении 5с

сброс сигнализации

При рестарте программы автомобильного комплекта (с интервалом 55минут)

снятие с охраны

При передаче команды снятия с охраны от брелка

включение питания

При подачи питания на автомобильный комплект.

 

В третьей строке отображается название последнего сработавшего датчика. При срабатывании датчиков дверей или датчика капота прием и отображение дальнейшей информации блокируется и непрерывно звучит сигнал о сработавшем датчике. В случае сработавшего датчика удара отображается также количество срабатываний и время последнего срабатывания:

датчик дверей

При сработавшем датчике дверей. Звуковой сигнал звучит непрерывно.

датчик капота

При сработавшем датчике капота. Звуковой сигнал звучит непрерывно.

shock ММ:СС

При сработавшем датчике удара. Звуковой сигнал звучит примерно 0.5с.

В четвертой строке отображаются текущие дата и время. При неактивности системы в течение 1.5мин происходит снижение яркости подсветки индикатора. При подачи питания процессор инициализирует рабочие ячейки ОЗУ. Далее инициализируется дисплей ЖКИ и передается код запроса параметров.

Если в течение 5с ответ от автомобильного комплекта не поступил, счетчик времени до рестарта программы автомобильного комплекта обнуляется и не обслуживается. Обнуляется также байт качества канала. Байт качества канала является интегральным параметром качества канала и представляет собой байт счетчика циклов передачи автомобильного комплекта, работающий на вычитание.

Значение счетчика передается при каждом цикле передачи от автомобильного комплекта. Байт отображается, и прием прекращается при первой удачно принятой посылке. Чем больше значение этого байта (но не более 50h = 80) тем выше качество канала.

Вход в режим коррекции времени возможен при нажатии кнопки 6 (P2.5). Если при включении питания (или при сбросе кнопкой) удерживать кнопку 6 (P2.5), произойдет запись во все ячейки времени и даты DS1307 кода 2 и переход в режим коррекции времени DS1307. При неактивности (не нажатии кнопок) в течении 12.8с в режиме коррекции времени произойдет переход в основной режим.

Выход из режима коррекции времени возможен также при нажатии кнопки обнуления секунд или нажатием кнопки сброса. Устанавливаемые значения: часы, минуты - 0-59, дни месяца 1 - 31, год 2000 - 2063. Автоматическая коррекция дней месяца (30, 31) при установке не производится. Микросхема DS1307 обеспечивает коррекцию времени в соответствии с календарем при подсчете времени.

Функциональное назначение кнопок:

№ кнопки

Основной режим

Режим коррекции времени

Кнопка 1 (P2.0)

Постановка на охрану

Обнуление секунд и выход в основной режим.

Кнопка 2 (P2.1)

Постановка на охрану с выключенным датчиком удара

Выбор редактируемого параметра

Кнопка 3 (P2.2)

Мигнуть фарами

Увеличение значения

Кнопка 4 (P2.3)

Подать звуковой сигнал

Уменьшение значения

Кнопка 5 (P2.4)

Запрос эха. В ответ автомобильный комплект передаст стандартный пакет данных. Передача происходит также каждые 55минут.

Не обслуживается


Протокол передачи домашнего комплекта соответствует протоколу передачи брелка KeeLoq. Плавающий код не обрабатывается и вместо него передаются четыре байта 0FFh. Домашний комплект имеет свой уникальный 32 - битовый серийный номер.

При приеме кодовой посылки с таким номером, автомобильный комплект не использует алгоритм декодирования KeeLoq и использует коды команд из не кодированной части посылки.

По этой причине код снятия с охраны домашним комплектом не передается и блокируется в автомобильном комплекте. Автор считает, что удаленное снятие с охраны (а также случайное) может нанести вред имуществу автомобиля.

При ассемблировании необходимо include - файлы ds1307, I2C, LCD поместить в каталог с основным файлом homeside.asm

Описание констант программы домашнего комплекта

45

7

Начальная инициализация таймера управления внешним светодиодом (350мс)

46

0FFh

Начальная инициализация таймера управления подсветкой индикатора

67

8Ch

Адрес курсора для вывода байта качества канала

71

90h

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

100

2

Код команды постановки на охрану

104

6

Код команды постановки на охрану с выключенным датчиком удара

108

5

Код команды мигнуть фарами

112

7

Код команды подать звуковой сигнал

117

9

Код команды запрос эха

122

100

Время ожидания ответа от автомобильного комплекта при запросе эха

124

0ECh

Код ответа на запрос эха

133

10

Время звучания звукового сигнала при отсутствии ответа на запрос эха

137

0FFh

Повторная инициализация таймера управления подсветкой индикатора

144

0A8h

Код сработавшего датчика дверей

147

52h

Код сработавшего датчика капота

159

86h

Код сработавшего датчика зажигания - не используется

156

4Bh

Код сработавшего датчика удара

171

10

Время звучания звукового сигнала при сработавшем датчике удара

173

39h

Код подтверждения команды постановки на охрану.

177

20

Время звучания звукового сигнала при приеме кода подтверждения постановки на охрану.

179

0C7h

Код рестарта программы автомобильного комплекта

181

1

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

182

0FFh

Инициализация младшего байта счетчика сброса при приеме кода рестарта программы автомобильного комплекта

183

0FFh

Инициализация старшего байта счетчика сброса при приеме кода рестарта программы автомобильного комплекта

185

0DEh

Код подтверждения команды снятия с охраны.

187

0FFh

Повторная инициализация таймера управления подсветкой индикатора при приеме кода подтверждения команды снятия с охраны

189

20

Время звучания звукового сигнала при приеме кода подтверждения команды снятия с охраны

191

78h

Код включения питания автомобильного комплекта

193

0FFh

Повторная инициализация таймера управления подсветкой индикатора при приеме кода включения питания автомобильного комплекта

195

25

Время звучания звукового сигнала при приеме кода включения питания автомобильного комплекта

251

7

Константа, определяющая время прерывания аппаратного таймера 0 (50мс). Младший байт

252

4Ch

Константа, определяющая время прерывания аппаратного таймера 0 (50мс). Старший байт

259

10

Таймер с интервалом 500мс

280

7

Количество циклов передачи KeeLoq

285

0eah

Константа для аппаратного таймера 1, определяющая паузу перед передачей KeeLoq. Старший байт.

286

069h

Константа для аппаратного таймера 1, определяющая паузу перед передачей KeeLoq. Младший байт.

289

9

Количество передаваемых байт KeeLoq.

308

0a6h

Константа для аппаратного таймера 1, определяющая паузу после передачи KeeLoq. Старший байт.

309

1

Константа для аппаратного таймера 1, определяющая паузу после передачи KeeLoq. Младший байт.

321

0fdh

Константа для аппаратного таймера 1 для задержки 600мкс, определяющая время передачи бит интервала KeeLoq. Старший байт.

322

0fdh

Константа для аппаратного таймера 1 для задержки 600мкс, определяющая время передачи бит интервала KeeLoq. Младший байт.

327

 

Передаваемые байты: плавающий код (4 * 0FFh), серийный номер, 4 бита кнопок и 2 последних бита

337

12h

Байт заголовка при приеме от автомобильного комплекта

378

0D4h

Адрес курсора для вывода даты

423

0eh

Код команды включить курсор в виде подчеркивания

429

0FFh

Время ожидания при выходе по неактивности из режима коррекции времени и даты (12.8с)

508

0FFh

Перезагрузка таймера ожидания выхода по неактивности из режима коррекции времени и даты (12.8с)

517

 

Строка подсказки в режиме коррекции времени

520

 

Строка для вычисления и вывода дня недели

521

 

Строка для вычисления и вывода месяца

523

 

Строка допустимых параметров коррекции времени и даты

525

 

Строка для вывода первых двух чисел года

Программирование брелков

Описание кодера HCS300.
Так как кодирующий/декодирующий ключ (они одинаковые на обеих сторонах) не передается, он должен быть одинаково вычислен на передающей и приемной стороне. Входными данными для вычисления ключа в режиме нормального обучения является код производителя (64бита, по эфиру не передается), серийный номер кодера.

Серийный номер кодера сообщается декодеру на стадии обучения - специальный режим декодера, когда он принимает последовательно 2 посылки кодера в течение 12.8 секунд. Происходит декодирование с использованием серийного номера брелка и декодирующего ключа.

Правильность декодирования проверяется по дискриминационным битам, жестко зашитым в программу и одинаковым на передающей и приемной стороне. При правильном декодировании проверяется разность счетчиков синхронизации двух посылок. Если разность составляет +1, происходит запись значения счетчика синхронизации для текущего брелка, т.е. обучение завершено успешно.

Благодаря счетчику синхронизации и обеспечиваться "плавание" кода, т.к. значение его меняется при каждом нажатии. Значение счетчика должно быть одинаково в кодере и декодере в пределах окна синхронизации - 16 значений. При рассинхронизации более 16 значений возможен режим вхождения в синхронизацию - когда кодер передает последовательно две посылки. Первую посылку декодер сохраняет во временной памяти, и при разности значений счетчиков в первой и второй посылки +1 перезаписывает свой счетчик синхронизации. Однако такая синхронизация возможна при рассинхронизации в пределах 32 посылок. В противном случае необходимо новое обучение декодера.

Формат посылки кодера: вначале передается 32 битовая кодированная часть, которая включает в себя: Синхронизирующий счетчик(16бит), дискриминационные биты(12 бит), код нажатых клавиш передатчика (4бита). Далее передается постоянная часть, которая включает в себя: Серийный номер передатчика(28бит), коды нажатых клавиш(4 бита), бит статуса батареи передатчика(Vlow), бит проверки CRC(2бита).

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

Правильность декодирования переменной части кода проверяется по дискриминационным битам, которые должны быть одинаковыми на приемной и передающей стороне. Передатчик HCS300 передает 12 дискриминационных бит, однако в сам кодер программируется только 10 бит. Старшие два бита являются битами переполнения счетчика синхронизации и берутся из слова конфигурации кодера (таблица). Эти биты используются для расширения разрядности счетчика синхронизации.

При переполнении счетчика синхронизации (16бит = 65535) эти два бита меняются, а поскольку они являются частью дискриминационной величины, то произойдет рассинхронизации кодера и декодера. В этом случае потребуется повторное обучение декодера. Т.о. повторное обучение потребуется каждый раз через 65535 посылок кодера.

При программировании в кодер записывается следующая информация:

№байта

Описание

1-8

Секретный ключ. 8байт, младший байт первый

9,10

Счетчик синхронизации. 2 байта (можно нулевых), младший байт первый

11,12

Резерв. 2 байта, должны быть 0

13 - 16

Серийный номер кодера. 4байта, младший байт первый. Старший бит старшего байта разрешает режим выключения передачи при времени передачи более 25с

17,18

Seed_0. 2байта, младший байт первый

19,20

Seed_1. 2байта, младший байт первый

21,22

Кодирующий ключ. 2 байта младший байт первый. Может использоваться для дополнительной кодировки серийного номера. В нормальном режиме серийный номер не кодируется

23

Дискриминационная величина. 1байт.

24

Слово конфигурации

 

Слово конфигурации включает в себя:

№бита

Описание

0-9

Дискриминационные биты

10, 11

Биты переполнения счетчика синхронизации. Служат для расширения разрядности счетчика

12

Бит выбора порога напряжения, при котором устанавливается статусный бит Vlow (низкое напряжение питания)

13, 14

Биты выбора скорости передачи. 0, 0 – максимальная скорость

15

Бит разрешения дополнительного кодирования серийного номера кодера при передаче (1 – разрешено кодирование)

 

Программирование (название задержек взято из DATASHIT на HCS300):

Шаг

Действие микроконтроллера

1

Установить линию S3 в 1

2

Ждать Tps = 3.5 – 4.5мс

3

Установить линию PWM в 1

4

Ждать TPH1 = 3.5мс мин

5

Сбросить линию PWM в 0

6

Ждать TPH2 = 50мкс мин

7

Сбросить в 0 линию S3

8

Ждать Tpbw = 2.2мс макс

9

Установить линию S3 в 1 и выставить бит данных

10

Последовательно выставляя, передний и задний фронт с задержкой в один такт Tclkl = Tclkh = 25мкс мин по шине CLK программируется весь поток данных (192бит). Данные выставляются микроконтроллером на переднем фронте по шине CLK и читаются кодером на заднем фронте. После программирования каждых 16 бит осуществляется задержка Twc = 36мс (для завершения цикла записи во флэш-память кодера). Во время задержки на линии S3 должен быть 0.

11

После программирования последнего бита микроконтроллер также осуществляет задержку Twc = 36мс и устанавливает линию PWM в третье состояние. Декодер выставляет младший бит запрограммированного потока данных для проверки.

12

Установить линию S3 в 1 и читать бит данных

13

Выставить 0 по шине S3 и декодер выставляет новый бит.

14

Последовательно выставляя, передний и задний фронт с задержкой в один такт Tclkl = Tclkh = 25мкс мин по шине S3 можно прочитать весь поток данных (192бит).

В результате написания программы приема и декодирования KeeLoq выяснилось:

  1. Если при программировании HCS300 записать ненулевое значение счетчика синхронизации, то после декодирования это значение также будет ненулевым, но будет отличаться от записанного непонятным образом.
  2. Если установить биты OVR1 и OVR2 в слове конфигурации, то они будут сброшены при переполнении счетчика синхронизации (как и должно быть).
  3. Если увеличить скорость передачи установкой BSL0 и BSL1, то прием становится невозможен.
  4. Если установить бит ENV_KEY в слове конфигурации HCS300, то серийный номер, передаваемый кодером также будет кодирован и его кодированное значение будет изменяться при каждой посылке.
  5. Для правильной работы пары кодер – декодер необходимо, ключ, записанный в таблице программирования HCS300 записывать в строку Keytab в обратном порядке.
  6. Для правильной работы пары кодер – декодер необходимо инвертировать канал приема. Таким образом, инвертируется вся принимаемая информация.
  7. Серийный номер прописывается в два места – программу программирования HCS300 (слева направо) и в программу декодирования (сверху вниз).
  8. В кодированной порции дискриминационные биты передаются “как есть”, т.е. все 10 бит на приемной стороне после декодирования равны 10 битам, запрограммированным в кодер.

Порядок приема информации:

№ байта

Адрес ОЗУ процессора

Ячейка памяти

Значение до декодирования

Значение после декодирования

1

2ch

HOP0+0

Плавающий код. Биты 0 – 7

Счетчик синхронизации (мл.б.)

2

2dh

HOP0+1

Плавающий код. Биты 8 – 15

Счетчик синхронизации (мл.б.)

3

2eh

HOP0+2

Плавающий код. Биты 16 – 24

8 младших дискриминационных бит (0 – 7)

4

2fh

20-2fh побитно адресуемые ячейки

HOP0+3 (всего 32 бита)

Плавающий код. Биты 25 – 32

Бит 0 - дискриминационных бит 8
Бит 1 - дискриминационных бит 9
Бит 2 – бит переполнения сч. синхр. OVR0
Бит 3 – бит переполнения сч. синхр. OVR1
Бит 4 – бит кнопки вывода 4 микросхемы
Бит 5 – бит кнопки вывода 1 микросхемы
Бит 6 – бит кнопки вывода 2 микросхемы
Бит 7 – бит кнопки вывода 3 микросхемы

5

30h

HOP0+4

Серийный номер. Биты 0-7. Не кодируется

6

31h

HOP0+5

Серийный номер. Биты 8-15. Не кодируется

7

32h

HOP0+6

Серийный номер. Биты 16-24. Не кодируется

8

33h

HOP0+7

Серийный номер. Биты 25-28. Не кодируется
Старший ниббл содержит коды нажатых клавиш

9

34h

HOP0+8

Бит 0 – бит повтора передачи. Бит 1- бит разряда батареи кодера Vlow*.

*Бит Vlow почему – то не меняет свое состояние при снижении питания до 2.1В.

Передаваемые значения кодов нажатия кнопок:

Номер вывода HCS300

HOP0+7, старший ниббл, не кодированное значение

HOP0+3, старший ниббл, кодированное значение

Разряд

(S1)

2

2

2

(S2)

4

4

4

(S3)

8

8

8

(S0)

1

1

1


Таким образом, перед использованием кодер HCS300 необходимо запрограммировать.

Для этого:

  1. В микросхему 89с51 прошивается при помощи предлагаемой программы программирования брелков
  2. Микросхема вставляется в домашний комплект
  3. Подключают кодер HCS300 к процессору домашнего комплекта выводом 3(S2) или 4(S3) на P3.7, выводом 6(PWM) на P3.6. Микросхема запитывается от источника +5В с домашнего комплекта.
  4. Нажатием кнопки 1 (P2.0) программируют брелок №1, кнопкой 2 (P2.1) брелок №2.

Помните, что замыкание вывода 6(PWM) HCS300 к +5В приводит к стиранию запрограммированной информации в микросхеме и перевод ее в режим программирования.

В результате правильного программирования на дисплей ЖКИ выводится:
------------------------------------;
AAAAAAAAAAAAAAAABBBB;
GGGGHHII ;
CCCCDDDDDDDDEEEEFFFF ;
без ошибки ;
------------------------------------;
A - младший байт - старший байт ключа (64бита)
B - счетчик синхронизации, 16бит
C - резервные байты (2байта)
D - младший байт - старший байт серийного номера (4байта)
E - SEED_0, F - SEED_1, G - ENV_KEY
H - дискриминационные биты 0-7, I - байт конфигурации

Внешний вид домашнего комплекта:


Скачать файлы проекта:

  1. Принципиальная схема автомобильного комплекта.
  2. Принципиальная схема модуля процессора.
  3. Принципиальная схема модуля АЦП.
  4. Принципиальная схема модуля силовых драйверов.
  5. Принципиальная схема домашнего комплекта.
  6. Программа автомобильного комплекта
  7. Исполняемый файл автомобильного комплекта
  8. Программа домашнего комплекта
  9. Исполняемый файл домашнего комплекта
  10. Принципиальная схема автомобильного комплекта в формате ORCAD 9.2
  11. Принципиальная схема домашнего комплекта в формате ORCAD 9.2
  12. Ассемблер, линкер и файлы конфигурации для линкера фирмы 2500 A.D. Software, Inc.
  13. Программатор SPI, схема программатора и пакетный файл для программирования AT89s8252
  14. Программа программирования брелков

Дмитрий Шабров dshabrov@mtu-net.ru

На главнуюГлавная
Rambler's Top100 Rambler's Top100

Hosted by uCoz