Всем привет!
Если вы ранее читали данную тему, то уже знаете, что в нашем автомобиле многие устройства объединенены в общую сеть устройств. Точнее сказать, даже в несколько сетей разделенных по назначению: мультимедиа, системы двигателя, диагностическая и т.д. во главе которых находится главный контроллер (BSI), который управляет и следит за всем происходящим в этих сетях. Таким образом, все устройства могут обмениваться друг с другом полезной информацией. Так, например, датчик света передаёт данные об текущей освещенности в кан-сеть, а блок управления освещением получает эти данные и включает фары когда это необходимо. Так-же данные об освещенности из кан-сети получает панель приборов и убавляет яркость в ночное время суток и прибавляет на ярком солнце и т.д. В итоге работа всех узлов и агрегатов автомобиля становится слаженной и интеллектуальной.
Многим пытливым умам становится интересно посмотреть на эти данные, выяснить как это работает, а может быть что-то изменить. Сегодня я опишу как это можно сделать с помощью arduino, can-шилда, и программы CANHacker.
Итак, для всей этой магии нам потребуется:
Arduino nano (либо аналогичная, но тогда придется спаять шилд самостоятельно)
FT-CAN шилдУстановленная на компьютере Arduino IDEБиблиотека mcp2515Библиотека canhackerПО для PC CanhackerПредупреждение: за все действия, описываемые дальше - вы несете ответственность сами. Необходимо быть очень внимательным и не путать провода, думать и понимать что вы собираетесь сделать. Неаккуратные действия могут привести к выходу из строя электроники и дорогостоящему ремонту.
Если вы еще не передумали, то поехали!
Для удобства поделим весь процесс на три этапа:
1 - Установка ПО для компьютера
2 - Программирование Arduino
3 - Подключение оборудования
1) Первым делом, устанавливаем на компьютер все необходимое ПО.
Процесс инсталляции
Arduino IDE описывать не стану, там ничего сложного , запускаем инсталлятор, далее, далее, далее...
После установки IDE необходимо скачать библиотеки и установить их. Для этого: идем на гитхаб
autowp https://github.com/autowp/arduino-mcp2515 и скачиваем
zip-архив Arduino MCP2515 CAN interface library. Не забываем поблагодарить автора за труды, отметив звездой
Данная библиотека содержит всё необходимое для работы с кан-контроллером на базе mcp2515. Для установки библиотеки открываем Arduino IDE и в меню Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку выбираем zip-файл библиотеки, который мы скачали ранее.
Следующая библиотека, которая нам пригодится, это arduino-canhacker
https://github.com/autowp/arduino-canhacker . По аналогии с предыдущей библиотекой,
скачиваем и подключаем.
Далее, для работы с кан-шиной на компьютере, потребуется установить программу
CANhacker. Инсталляция не должна вызвать затруднений, запускаем инсталлятор, далее, далее...
Теперь всё программное обеспечение установлено и мы готовы программировать Arduino.
2) Подключение платы к компьютеру я намеренно пропускаю, в сети полно информации на эту тему, поэтому сразу переходим к программированию.
Чтобы запрограммировать нашу arduino нам не потребуется особых знаний и навыков написания программ, всё уже сделано за вас (ставим звезду autowp). Открываем Arduino IDE -> Файл -> Примеры -> arduino-canhacker-master -> usb_cdc -> usb_cdc
В итоге у нас получается готовый скетч, превращающий arduino в адаптер canhacker, прошиваем его. Только необходимо поправить номера пинов, к которым подключен CAN-шилд. Так-же обращаем внимание на строки относительно использования Arduino Leonardo, Pro Micro или Esplora.
3) Далее буду описывать процесс на конкретном примере.
Предположим у нас стоит задача запустить на столе магнитолу. Для этого недостаточно просто подать на неё питание, требуется постоянная отправка кан-сообщений на магнитоллу.
Для отправки сообщений с компьютера нам потребуется: ранее запрограммированная нами ардуина, кан-шилд
https://github.com/autowp/CANreader/blob/master/docs/ru/canreader-device.md (схема, плата по ссылке), соединительные провода.
Подключив CANreader FT к соответствующим пинам на магнитоле и к нашей ардуине, которая в свою очередь подключается к компьютеру, нам необходимо отправить кан-пакеты, для того чтобы магнитола "ожила", т.е. мы с помощью канхакера будем имитировать трафик в кан сети, при котором магнитола работает.
Запускаем канхакер и для начала выполним необходимые настройки. Указываем номер виртуального ком-порта на котором находится наша ардуина, скорость com-порта и скорость передачи данных в кан-сети.
Сохраняем настройки и устанавливаем соединение с ардуиной, нажав на пиктограмму желтой молнии.
Все, теперь мы подключены к кан сети и можем прослушивать что в ней происходит, а так-же отправлять свои данные. В верхней области окна канхакера обычно отображаются принятые пакеты, в нижней части - то что мы отправляем. В нашем случае необходимо отправлять пакеты c id 036 и 0F6 с периодом 100мс. Вписываем данные как на скриншоте в соответсвующие поля и запускаем отправку данных. Этого достаточно чтобы магнитола "ожила".
Надеюсь данная инструкция поможет всем желающим разобраться с подключением к кан-шине и вопросы "как это сделать..." отпадут. Подробное описание расшифрованных данных в кан-сети можно посмотреть здесь:
http://autowp.github.io (говорим спасибо
autowp и другим энтузиастам принимавшим участие в разборе этих данных). Всем удачи!
Дополнение как проверить работоспособность Arduino с CANHacker без оборудования.