Как отловить сигнал концевика двери из Кан шины.

Допустим нам нужно из кан шины получать сигнал дверного концевика и что-то делать когда при этом. Покажем как это сделать с помощью нашего устройства.

В качестве стенда у нас блок BCM от какого-то Ниссана. Наш кан девайс сейчас в режиме кан-хакера. Иммитируем открывание передней правой двери замыкая вход дверного концевика на массу.

BCM Nissan схема дверных концевиков

К примеру у нас задача включать подсветку при открывании двери (конечно это оверинжиниринг и так усложнять никто не станет, это просто для примера).

Как видим первый байт в пакете с ID 0x60D меняется с 0x00 на 0x10 (b00010000) при открывании двери. При этом при открытии второй передней двери первый байт будет 0x08 (b00001000), а при открытых обоих дверях будет 0x18. Далее покажем как настроить выход только по одной двери (нам нужен только один бит из первого байта 0x10 = b00010000).

Настройка Кан-хакер лайт

В первом меню двумя крайними кнопками выбираем нужный режим работы, если скорость вашей кан шины 500 можно переходить сразу в режим хакера, скорость 500 стоит по умолчанию. Если же вы хотите переключиться на другую скорость переведите курсор на настройки (setting).

can hacker lite

Длинное нажатие четвёртой кнопки перекинет вас в следующее меню, здесь выбираем can speed и снова длинное нажатие четвёртой кнопки.

can hacker speed select

И крайними кнопками выбираем нужную скорость. Далее возвращаемся в первое меню (длинное нажатие первой кнопки).

can bus speed 500 250 125 100

И переходим в режим кан-хакер (длинное нажатие четвёртой кнопки).

И начался приём пакетов, крайними кнопками выбираем нужный пакет, этот BCM шлёт четыре пакета, нам нужен ID 60D. Крайними кнопками переходим к нужному.

Nissan can bus id 500 BCM
Nissan can bus id 60D BCM

Далее, длинным нажанием на кнопку 4 переходим в режим редактирования этого сообщения.

Здесь видим таймаут сообщения — 100ms. С помощью крайних кнопок выбираем байт для редактирования. И с помощью 2 и 3 кнопок устанавливаем первый байт в 0x10 (короткое нажатие кнопки 3 увеличивает значение на 0x01, длинное на 0x10, кнопка 2 уменьшает)

can bus редактирование сообщения

Далее ещё раз длинное нажатие кнопки 4.

can bus выбор количества байт

Здесь кнопками 2 и 3 можем выбрать количество байт в сообщении, оставляем как есть — 8. Ещё раз нажимаем кнопку 4 и попадаем в режим выбора таймаута.

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

can hacker фильтр и маска

Когда сообщение сохранено кнопками 2 и 3 выбираем режим *M. Тут есть два режима, фильтр (*F) и маска (*M). В режиме *F будет срабатывать только сообщение с первым байтом 0x10, но не сработает при 0x18 и других. А нам нужен только один бит, поэтому устанавливаем режим *M, в этом случае все остальные биты просто игнорируются, отслеживается только нужный нам.

Далее длинное нажатие кнопки 1, возвращаемся в первое меню и идём теперь в setting -> working mode.

Здесь нам нужно настроить взаимодействие ячеек, входа и выхода. У нас содержимое первой ячейки будет входом, выходом будет аналоговый выход, к которому сейчас подключен светодиод. Длинное нажатие кнопки 4 на первой строке и появится окошко выбора входа, выбираем #1, длинное нажатие кнопки 4 сохранит значение. Выходим из строки input (длинное нажатие кнопки 1). Тоже самое проделываем в сторке output, только выбираем #O (аналоговый выход). Итог будет таким.

can hacker input output

Если что-то выбрано неправильно выбираем просто (. ), все данные в строке будут удалены.

На этом настройка закончена, длинным нажатием 1 возвращаемся в первое меню, выбираем пункт RUN и как всегда длинное нажатие 4 кнопки.

can hacker lite running

Теперь при открывании двери включается светодиод, при этом остальные биты в первом байте никак не влияют на работу.

Настройка сохранилась в энергонезависимой памяти и теперь всегда режим RUNNING включается при подаче питания. Чтобы выйти из режима RUNNING как обычно длинное нажатие кнопки 1 перекидывает в первое меню где можно что-то подредактировать если нужно. Если нужно запустить устройство без загрузки данных из энергонезависимой памяти, удерживаем кнопку 1 при подачи питания.

В следующих статьях попробуем усложнить алгоритм работы.