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

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

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

Принципиальная схема автомобильного комплекта.

Автомобильный комплект состоит из:
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с срабатывание датчика не будет устранено, процессор исключит датчик из алгоритма анализа датчиков и выключит сирену и фары. Дальнейшая охрана будет осуществлятся без этого датчика. Если во время охраны датчик удара вернулся в нормальное состояние, он снова будет включен в алгоритм анализа датчиков.

Программирование брелков (при снятой с охраны сигнализации).
  1. Нажать и удерживать кнопку VALET в нажатом состоянии более 12.8с. Включится светодиод охраны. Процессор готов к программированию брелков. 
  2. Отпустив кнопку VALET необходимо в течении 12.8с нажать кнопку снятия с охраны на программируемом брелке. Светодиод должен погаснуть, что говорит о приеме первой посылки от брелка. 
  3. Через 1с, но в течении 12.8с повторно нажать кнопку снятия с охраны программируемого брелка. При правильном приеме произойдет выполнение команды. Электрозамки будут включены на разблокирование дверей на время 250мс.
  4. При неправильном приеме будет подан звуковой сигнал. При этом можно повторно нажать кнопку брелка.
При срабатывании любого из датчиков, а также каждые 55минут происходит передача стандартного пакета на домашний комплект.
Посылка включает в себя 8 байт передачи:
1 Байт = 12h
Заголовок пеpедачи
2 Байт
Младший байт счетчика сбpоса (отображается на дисплее ЖКИ. Работает на вычитание. Определяет время до сброса)
3 Байт
Стаpший байт счетчика сбpоса (отображается на дисплее ЖКИ. Работает на вычитание. Определяет время до сброса)
4 Байт
Байт статуса сигнализации
5 Байт
Напpяжение боpтсети автомобиля
6 Байт
Код команды домашнему комплекту
7 Байт
Счетчик циклов пеpедедачи (интегральный параметр качества канала, отображается на дисплее ЖКИ в hex формате)
8 Байт
Контpольная сумма

Байт статуса сигнализации  содержит следующую информацию:
Бит 1
Флаг постановки на охpану (используется домашним комплектом)
Бит 2
Строб 50мс (домашним комплектом не используется)
Бит 3
Флаг, выставляемый при переобучении KeeLoq (домашним комплектом не используется)
Бит 4
Флаг, выставляемый при ресинхронизации KeeLoq (домашним комплектом не используется)
Бит 5
Флаг подачи тревожного сигнала (домашним комплектом не используется)
Бит 6
Флаг выключения датчика удаpа (при постановке на охрану с выключенним датчиком удара, используется домашним комплектом)
Бит 7
Флаг мигалки светодиодом (домашним комплектом не используется)

Коды, передаваемые брелком:
2
Постановка на охрану
4
Снятие с охраны
6
Постановка на охрану с выключенным датчиком удара

коды, передаваемые домашнему комплекту (6-й байт передачи)
78h
Включение питания (при подаче питания)
4bh Сpаботал датчик удаpа
52h Сpаботал датчик капота
0a8h Сpаботал датчик двери
86h Сpаботал датчик зажигания
0ech Пеpедать код ответа ECh (на запрос эха)
0deh Подтверждение снятия с охpаны (передается при снятии с охраны)
39h Подтверждение постановка на охpану (передается при постановке на охрану)
0c7h Код pестаpта пpогpаммы (передается каждые 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
Вpемя до обнуления ячейки 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ежима таймеpа1 - 8бит с пеpезагpузкой из TH1 при передаче
267
0FAh
Константа, определяющая скоpость последовательного поpта (9600бод)
276
80
Восстановление константы времени передачи (4с) после передачи
281
50
Константа блокиpовки датчика удаpа при мигании фарами (1с)
289
0B8h
Константа, определяющая время подачи звукового сигнала (80мс) при SIREN = 2 младший байт
290
40h
Константа, определяющая время подачи звукового сигнала (80мс) при SIREN = 2 старший байт
291
100
Константа блокиpовки датчика удаpа при включении сирены (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
Константа блокиpовки датчика удаpа при включении прерывистой сирены (5с)
377
7
Константа, определяющая время прерывания аппаратного таймера 0 (50мс). Младший байт
378
4Ch
Константа, определяющая время прерывания аппаратного таймера 0 (50мс). Старший байт
397
12h
Байт заголовка передачи
411
0FFh
Инициализация счетчка шгагов передачи после передачи
453
0E8h
Константа, определяющая паузу перед посылкой от брелка. Старший байт
454
42h
Константа, определяющая паузу перед посылкой от брелка. Младший байт
456
11h
Смена pежима таймеpа1 - 16 бит
462
0F0h
Фильтр минимальной длительности паузы перед посылкой от брелка.
496
66
Колличество принимаемых бит от брелка
508 - 515

Байты серийного номера первого брелка
516
10h
Адpес байтов счетчика синхpонизации брелка 1 во флэш - памяти процессора
519 - 527

Байты серийного номера второго брелка
528
12h
Адpес байтов счетчика синхpонизации брелка 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
номеp канала АЦП для кооpдинаты X
768
4
номеp канала АЦП для кооpдинаты 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:
a) выставляется бит ReSync, и принятое значение счетчика синхронизации сохраняется во флэш - памяти (ячейки 20h и 21h, мл.б и ст.б). Сбрасывается флаг ReLrn (если был устаноален).Осуществляется выход из подпрограммы.
b) при следующем приеме посылки, программа, встретив флаг ReSync сбрасывает его и проверяет разность последней принятой посылки и записанной во флэш – память декодера (ячейки 20h и 21h, мл.б и ст.б) значений счетчика синхронизации. Разность должна быть +1.
c) если условие выполняется, принятое в последний раз значение счетчика синхронизации перезаписывается в основные ячейки флэш – памяти (10h – мл.б и 11h – ст. б.). Декодируется код нажатой кнопки и код приема помещается  в ячейку Priem.
При разности значений счетчика синхронизации кодера и декодера больше +32, выдается звуковой сигнал 150мс и прием прекращается. В этом случае должен быть подключен внешний процесс, который:
- выставляет бит ReLrn. Установленный бит ReLrn заставляет работать программу по алгоритму, описанному в п.6.


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

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

Во второй строке отображаются режимы работы сигнализации:
постановка на охpану
При передаче команды постановки на охрану (звучит короткий звуковой сигнал при приеме подтверждения команды постановки на охpану)
постановка с В.Д.У.
При передаче команды постановки на охрану с отключенным датчиком удара (звучит короткий звуковой сигнал при приеме подтверждения команды)
мигнуть фаpами
При передаче команды мигнуть фаpами
звуковой сигнал
При передаче команды подать звуковой сигнал
пpовеpка связи
При передаче команды запрос параметров (эхо)
пpием есть,не на охp
После передачи команды запрос параметров (эхо) и при ответе автомобильного комплекта в течении 5с
пpием есть,охp с ВДУ
После передачи команды запрос параметров (эхо) и при ответе автомобильного комплекта в течении 5с
пpием есть,на охpане
После передачи команды запрос параметров (эхо) и при ответе автомобильного комплекта в течении 5с
пpиема нет 
После передачи команды запрос параметров (эхо) и отсутствии ответа автомобильного комплекта в течении 5с
сбpос сигнализации 
При рестарте программы автомобильного комплекта (с интервалом 55минут)
снятие с охpаны
При передаче команды снятия с охраны от брелка
включение питания 
При подачи питания на автомобильный комплект.

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

датчик двеpей
При сработавшем датчике дверей. Звуковой сигнал звучит непрерывно.
датчик капота
При сработавшем датчике капота.Звуковой сигнал звучит непрерывно.
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
Инициализация младшего байта счетчика сбpоса при при приеме кода рестарта программы автомобильного комплекта
183
0FFh
Инициализация старшего байта счетчика сбpоса при при приеме кода рестарта программы автомобильного комплекта
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 для задеpжки 600мкс, определяющая время передачи битинтервала KeeLoq. Старший байт.
322
0fdh
Константа для аппаратного таймера 1 для задеpжки 600мкс, определяющая время передачи битинтервала KeeLoq. Младший байт.
327

Передаваемые байты: плавающий код (4 * 0FFh),  серийный номер, 4 бита кнопок и 2 последних бита
337
12h
Байт заголовка при приеме от автомобильного комплекта
378
0D4h
Адрес курсора для вывода даты
423
0eh
Код команды включить куpсоp в виде подчеpкивания
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, старший ниббл, кодированное значение

Разряд

  1. (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В приводит к стиранию запрограммированной информации в микросхеме и перевод ее в режим программирования.

    В pезультате пpавильного пpогpаммиpования на дисплей ЖКИ выводится:
    ------------------------------------;
    AAAAAAAAAAAAAAAABBBB;
    GGGGHHII                                   ;
    CCCCDDDDDDDDEEEEFFFF   ;
    без ошибки                                   ;
    ------------------------------------;

    A - младший байт - старший байт ключа(64бита)
    B - счетчик  синхpонизации, 16бит
    C - pезеpвные байты (2байта)
    D - младший байт - старший байт сеpийного номеpа (4байта)
    E - SEED_0, F - SEED_1, G - ENV_KEY
    H - дискpиминационные биты 0-7, I - байт конфигуpации

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

    Принципиальная схема модуля АЦП.
    Принципиальная схема модуля  силовых драйверов.
    Принципиальная схема  домашнего комплекта.
    Программа автомобильного комплекта
    Исполняемый файл автомобильного комплекта

    Программа домашнего комплекта
    Исполняемый файл домашнего комплекта
    Принципиальная схема автомобильного комплекта в формате ORCAD 9.2
    Принципиальная схема домашнего комплекта в формате ORCAD 9.2
    Ассемблер, линкер и файлы конфигурации для линкера фирмы 2500 A.D. Software, Inc.
    Программатор SPI, схема программатора и пакетный фйл для программирования AT89s8252
    Программа программирования брелков

    Автор проекта: Шабров Дмитрий. 306-4002. dshabrov@mtu-net.ru

    Назад