Автомобильная сигнализация функционально состоит из двух блоков: автомобильного и домашнего комплекта. Автомобильный комплект представляет собой функционально законченный блок, способный работать и без домашнего комплекта.
Автомобильный комплект обеспечивает диагностику датчика капота, дверей (один канал), багажника и датчика удара (один канал). Все механические датчики могут формировать как плюсовой, так и минусовой потенциал при срабатывании, т.к. диагностика этих датчиков осуществляется с помощью оптронов 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
Флаг мигалки светодиодом (домашним комплектом не используется)
Подтверждение снятия с охраны (передается при снятии с охраны)
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.
Алгоритм работы подпрограммы приема:
Принимаемые 66 бит располагаются в ячейках HOP0+0 … Hop0+8 (2мл. бита).
Проверка 28 бит серийного номера в ячейках HOP4 – HOP7 (младший ниббл).
Декодирование KeeLoq.
Проверка 8 дискриминационных бит в байте HOP0+2 и 2 дискриминационных бита в байте HOP0+3 (два младших бита).
Проверка разности принятого значения счетчика синхронизации (HOP0+0 - младший байт и HOP0+1 - старший байт) и счетчика синхронизации, записанного во флэш-память (10h – младший байт и 11h – старший байт), которая не должна превышать +16. При соблюдении этого условия значение счетчика синхронизации перезаписывается в ячейки 10h и 11h (мл.б. и ст.б.) флэш – памяти декодера. Выделяется код нажатой кнопки, и код приема помещается в ячейку Priem.
При разности значений счетчика синхронизации кодера и декодера больше +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 выяснилось:
Если при программировании HCS300 записать ненулевое значение счетчика синхронизации, то после декодирования это значение также будет ненулевым, но будет отличаться от записанного непонятным образом.
Если установить биты OVR1 и OVR2 в слове конфигурации, то они будут сброшены при переполнении счетчика синхронизации (как и должно быть).
Если увеличить скорость передачи установкой BSL0 и BSL1, то прием становится невозможен.
Если установить бит ENV_KEY в слове конфигурации HCS300, то серийный номер, передаваемый кодером также будет кодирован и его кодированное значение будет изменяться при каждой посылке.
Для правильной работы пары кодер – декодер необходимо, ключ, записанный в таблице программирования HCS300 записывать в строку Keytab в обратном порядке.
Для правильной работы пары кодер – декодер необходимо инвертировать канал приема. Таким образом, инвертируется вся принимаемая информация.
Серийный номер прописывается в два места – программу программирования HCS300 (слева направо) и в программу декодирования (сверху вниз).
В кодированной порции дискриминационные биты передаются “как есть”, т.е. все 10 бит на приемной стороне после декодирования равны 10 битам, запрограммированным в кодер.
*Бит 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 необходимо запрограммировать.
Для этого:
В микросхему 89с51 прошивается при помощи предлагаемой программы программирования брелков
Микросхема вставляется в домашний комплект
Подключают кодер HCS300 к процессору домашнего комплекта выводом 3(S2) или 4(S3) на P3.7, выводом 6(PWM) на P3.6. Микросхема запитывается от источника +5В с домашнего комплекта.
Помните, что замыкание вывода 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 - байт конфигурации