Canhacker своими руками: CanHacker своими руками из 2can starline

CAN анализатор (CAN-Hacker ) на Arduino своими руками

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

CANHacker — это базовый продукт, представляет собой универсальный адаптер CAN шины с возможностью как аппаратного, так и программного расширения функционала.

Как-то задался целью собрать CAN анализатор для автомобиля. Покупной CAN-hacker у меня есть и я им временами пользуюсь.

Просто было интересно попробовать собрать на ардуино и mcp2515.

У меня как раз была пара платок/шилдов с алиэкспресса и ардуино была.

Скачал скетч, библиотеки, собрал, прошил — работает. Даже какое-то время пользовался для отладки своих самодельных бортовых компьютеров.

Картинка честно взята с просторов интернета.


При желании библиотеки и скетч легко находятся в интернете.

Одна проблема с этим устройством — сопли из проводов периодически теряют контакт, приходится «шевелить». Но, это мой макет: иногда делают заказы на разработку ПО в среде ардуино.

Есть у меня некоторое количество микроконтроллеров Atmega16 в DIP корпусе, есть и SMD-шные. Собрал себе вот такой макетик, тоже для разработки. Приделал к нему шилд на mcp2515, попробовал в AVR Studio немецкую библиотечку для работы с 2515 по SPI и кан шиной. Это не ардуино, чуть другой уровень программирования.

Библиотеку настроить и подключить получилось, я принял и передал сообщения через кан шину (когда поддержка кан в микроконтроллере есть изначально, все гораздо проще, но не суть).

На этой же платке и oled дисплей пробовал подключать, работало.

Пришла в голову очередная мысль: почему бы не попробовать в mega16 залить загрузчик от Arduino, и не повторить ардуинский CAN Hacker.

Погуглил, нашел проект — ардуино на атмега16.

Настроил, подключил, прошил, в общем с внешним usb2com ttl преобразователем оно заработало.

Неожиданно 🙂

А дальше Остапа понесло: в альтиуме разрисовал схему, развел печатную плату.

Заказал платы в Китае на фабрике PCBWay. Это мой второй заказ плат там.

Заказал немного разных нужных комплектующих…

Ch440G

MCP2515

Пришли платы. Они просто шикарны!

Тут же спаял/собрал первый образец.

Загрузчик arduino прошился в лёт, а прогрузка скетча через USB с первого раза не взлетела, оказалось попался «битый» трансивер mcp2551 — грелся и просаживал напряжение. Как только с ним разобрался — все прошилось «по ардуински» через USB шнурок, и заработало!

Работает совместно с моим самодельным бортовым компьютером (ссылка), описание в предыдущей статье.

Софт.

Сама программа CANHacker бесплатна, её можно без труда найти на просторах интернета.

Бортовой комп у софтины запрашивает параметры как будто у блока управления двигателем, и получает ответ.
Спаял ещё несколько платок…

В планах нарисовать и распечатать на 3D принтере корпус для устройства.

P.S. Итак, какими исполнительными устройствами можно управлять по CAN? Список на самом деле может быть огромен и может зависеть от конкретной марки и модели автомобиля. Для примера, по CAN может осуществляться снятие, постановка на охрану, складывание зеркал, управление стеклоподъемниками, срабатывание центрального замка, включение фар и т.п.

Кстати, многие автомобильные девайсы подключаются к CAN шине, и путем передачи в шину определенных данных осуществлять какие-то действия. Например, по такому принципу работают доводчики стекол. Такой доводчик ждет появления в CAN шине данных на постановку на охрану, и при получении этих данных осуществляет передачу данных в CAN шину, которые инициируют закрытие стекол. Как правило, такие доводчики вставляются в OBD-2 разъем автомобиля, в котором имеется выход CAN шины.

Автор: Mefisto78

Метки: [ автомобиль, программирование, устройства ]


ПОДЕЛИТЕСЬ СО СВОИМИ ДРУЗЬЯМИ:

П О П У Л Я Р Н О Е:
  • Простой металлоискатель своими руками
  • Металлоискатель на срывах синхронизации «Бабочка» 

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

  • Самодельный компрессор
  • Компрессор для накачки воздуха полезный инструмент в гараже автолюбителя. Им не только удобно и легко накачать колёса, но и также можно продуть карбюратор, трубку… и любую поверхность, можно использовать для  краскопульта. Применений сжатой струе воздуха, конечно много, но для работы, например, отбойного молотка производительности этого компрессора будет не достаточно.

    Подробнее…

  • Солнечная батарея для вентиляции туалета!
  • Около 9 лет назад я собрал свою первую солнечную батарею из обломков фотоэлементов. Примерно 5 лет батарея просто валялась без дела, т.к. выдавала малоприменимое напряжение 5-6 В. Но потом я придумал где её можно использовать! Я сделал систему принудительной вытяжной вентиляции дачного туалета 🙂

    Подробнее…

Популярность:

119 просм.

CAN-Hacker 3.0 Gateway — CAN Hacker

Здесь описана старая версия CAN-Hacker Gateway, теперь весь его функционал встроен в CAN анализатор 

ПЕРЕД ИСПОЛЬЗОВАНИЕМ -ПРОЧИТАТЬ ДО КОНЦА ! ЭТО ВАЖНО !

CAN-Hacker 3.0  Gateway  – это новая дополнительная прошивка для CAN-Hacker 3.0 которая позволяет работать в режиме CAN шлюза. Теперь вы можете включать Ваш CAN-Hacker3.0 в разрыв CAN шины между двумя ECU и блокировать передачу отдельных пакетов.  Например, Вы может включиться в разрыв между панелью приборов и замком зажигания автомобиля Mercedes или между автомагнитолой и остальным автомобилем.

Программное обеспечение построено на базе уже известного CAN-Hacker Bomber. Теперь вы можете передавать пакеты по обоим каналам CAN шины, настраивать фильтры CAN контроллера для приема только важных пакетов и конечно же фильтровать трафик между каналами.

Скачать архив с управляющей программой  Файл filter1.txt из архива с программой должен находиться с ней в одной папке !

Для использования CAN-Hacker в двухканальном режиме необходимо залить специальную прошивку. Эта прошивка будет доступна для всех пользователей купивших прибор с 10.03.2018 в программе CAN-Hacker Updater.  Если Вы купили CAN-Hacker ранее, свяжитесь с нами, мы вышлем Вам прошивку.

На вкладке Bomber добавились отдельные окна приема пакетов для каждого CAN канала, а в полях для настройки передаваемых пакетов появились выпадающие списки для выбора канала передачи.

Фильтры

Фильтры CAN контроллера предназначены для того чтобы CAN контроллер принимал только необходимые пакеты.

Фильтры реализованы в контроллере апаратно, поэтому при их использовании не загружается ядро контроллера.

В программе CAN-Hacker Bomber+Gateway  фильтры можно настроить в режиме Маска-Фильтр. В этом Случае в поле ID необходимо задать ID который мы хотим пропускать, а в поле Mask число которое будет указывать какие биты  ID учитывать. Например, если мы хотим принимать только пакеты с ID=0x123 , то задаем значения Filter ID =0x123 а Mask = 0x7FF . Если маски задать 7F0 то будут приниматься все пакеты в диапазоне от 0x120 до 0x12F.

Всего пользователю доступно 28 отдельно настраиваемых фильтра. Для того что бы CAN контроллер принял пакет, его ID должен пройти хотя бы через один фильтр. Отсюда следует, что если хотя бы один фильтр настроен на прием все пакетов (фильтр=000 маска =000)  то контроллер будет принимать все пакеты.

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

Но! Следует учесть что при загрузке данных из файла в таблицу данные не загружаются в CAN-Hacker. Для загрузки таблицы фильтров в устройство целиком необходимо нажать кнопку Upload to Device.

Для активации или редактирования конкретного фильтра, забиваем его значения в поля Index,ID и Mask и нажимаем Accept.  Либо кликаем по нужному фильтру в таблице, после чего его данные переносятся в поля для редактирования. Изменив значения – жмем Accept.

Активированный фильтр подсвечивается желтым цветом.

 

Настройка CAN шлюза

На вкладке Gateway Вы можете настроить логику передачи пакетов из CAN канала 1 в CAN канал 2.

Кнопки с подписями Transmit from 1 to 2  и 

Transmit from 2 to 1  предназначены для активации передачи пакетов из канала 1 в канал 2  и   из канала 2 в канал 1 соответственно.  Надпись на кнопке ON – означает что передача активирована.   OFF – данные в выбранном направлении не передаются.   По умолчанию, после запуска программы, передача данных закрыта.

Для блокирования пакетов с заданным ID в заданном канале необходимо:

  1. В поле Chanel выбрать канал
  2. В поле ID From задать ID блокируемого пакета
  3. Нажать Lock

На рисунке выше на первом канале заблокировано прохождение пакетов в ID 0x058, а на канале 2 заблокировано прохождение пакетов с ID 0x09E.

Одновременно по каждому каналу может быть заблокирован только один ID.

Для разблокировки ID необходимо выбрать канал в поле Chanel и нажать

Unlock

Динамическая блокировка ID

Блокировать пакеты можно и по аналогии как мы посылаем пакеты в CAN-Hacker Bomber с инкрементом ID. Для этого в полях ID From и To необходимо задать диапазон блокируемых ID, В поле Period установить время блокировки каждого ID в миллисекундах, установить флаг ID Counter и нажать Go.

 

Замечания

  1. Файл filter1.txt из архива с программой должен находиться с ней в одной папке !
  2.  Программа CAN-Hacker Bomber+Gateway не работает с программой CAN-Hacker от canhack.de поскольку имеет иной протокол обмена между CAN-USB адаптером и ПК. Поэтому если вы хотите пользоваться анализатором CAN шины, необходимо залить предыдущую прошивку. Вскоре мы выпустим свое ПО и перешивать ничего не надо будет.

 

 

CAN Hacking: Аппаратное обеспечение | Хакадей

  • по:
  • Эрик Эвенчик

До сих пор мы обсуждали основы CAN, автомобильных сетей и протоколов, используемых в CAN. Мы собираемся завершить обсуждение инструментов CAN и деталей для создания собственного оборудования CAN.

Проводка

К сожалению, не существует установленного стандарта для соединений CAN. Наиболее распространенным разъемом для высокоскоростной CAN является DE-9. , с высоким уровнем CAN на контакте 7 и низким уровнем CAN на контакте 2. Однако кабели будут различаться, и многие из них несовместимы.

CAN должен быть оконечен, предпочтительно сопротивлением 120 Ом на обоих концах шины. На практике вы можете подключить к шине один резистор на 120 Ом, чтобы иметь дело с оконечной нагрузкой.

Инструменты

Хороший инструмент CAN позволит вам передавать и получать сообщения CAN, интерпретировать оперативные данные с использованием баз данных CAN и общаться по протоколам CAN. Инструменты с этим набором функций являются проприетарными и дорогими, но существуют некоторые варианты, удобные для хакеров.

GoodThopter

На основе GoodFET [Travis Goodspeed’s] GoodThopter от [Q] использует контроллер Microchip MCP2515 CAN to SPI для доступа к шине. Открытый аппаратный инструмент позволяет отправлять и получать сообщения с помощью сценариев Python.

Тройная шина CAN

Устройство тройной шины CAN обеспечивает интерфейс к трем шинам CAN и может быть запрограммировано в среде, аналогичной Arduino. Предоставленный открытый исходный код позволяет вам работать со вторым поколением Mazda 3. К сожалению, аппаратное обеспечение не является открытым исходным кодом.

Saleae Logic

Это не открытый исходный код, но Saleae Logic — очень удобный и дешевый инструмент для просмотра шин CAN. Он может захватывать, декодировать и отображать трафик CAN. Это наиболее полезно, когда вы создаете собственное оборудование CAN.

Сделай сам

Детали

Если вы хотите разработать собственное оборудование для CAN, вам понадобятся две вещи: CAN-контроллер и CAN-трансивер.

Контроллер CAN генерирует и интерпретирует сообщения CAN. На рынке представлено множество микроконтроллеров со встроенными контроллерами CAN, например, Atmel ATmega32M1, Freescale S08D и серия TI Tiva C. При использовании встроенного CAN-контроллера придется использовать внешний генератор, внутренние генераторы недостаточно точны для высокоскоростного CAN. Если вы хотите добавить CAN к существующему микроконтроллеру, можно использовать MCP2515. Это автономный контроллер CAN, который обменивается данными через SPI.

Приемопередатчик транслирует сигналы от контроллера к шине и от шины к приемопередатчику. Для высокоскоростных и низкоскоростных сетей CAN необходимы разные приемопередатчики. NXP TJA1050 работает с высокоскоростными шинами, а ON Semi NCV7356 – с низкоскоростными однопроводными шинами.

Платы для разработки

Существует множество плат для разработки с микроконтроллерами и контроллером CAN. Процессор SAM3 Arduino Due имеет контроллер, но на плате нет приемопередатчика. Вы можете подобрать защитный экран шины CAN и библиотеку Due CAN, чтобы начать работу.

ChipKIT Max32 похож на Due. Он имеет два контроллера CAN, но вам нужно будет предоставить внешние приемопередатчики, чтобы фактически подключиться к шине. К счастью, для этого есть щит. ChipKIT официально поддерживается платформой Ford OpenXC, поэтому вы можете скачать их прошивку.

На этом мы заканчиваем обсуждение взлома CAN. Надеюсь, теперь вы готовы выйти и поэкспериментировать с протоколом. Если у вас есть вопросы, присылайте их на нашу линию поддержки с пометкой «Взлом CAN» в теме, и мы подготовим несколько ответов. Если вам понравилась эта серия и вы хотите предложить тему для следующего набора постов, мы тоже будем рады это услышать!

Взлом CAN

  • Введение
  • Автомобильная сеть
  • Протоколы CAN
  • Сборка оборудования CAN
Опубликовано в Рекомендуемые, Сетевые хакипомеченный Arduino DUE, автомобильный, CAN, тройная шина, CAN Hacking, набор микросхем, GoodFET, goodthopter, логика продажи

Набор инструментов CANHack для Raspberry Pi Pico

Raspberry Pi Pico не имеет встроенного контроллера CAN, но это никаких барьеров: мы можем отправлять кадры CAN в программном обеспечении!

Набор инструментов CANHack предназначен для демонстрации возможностей протокола CAN. взломан на низком уровне, если вредоносное ПО попадает в устройство на шине CAN: это просто нужен порт ввода-вывода, подключенный к приемопередатчику CAN.

Raspberry Pi Pico — это новая недорогая плата микроконтроллера, использующая новый специальный микроконтроллер RP2040. У него нет контроллера CAN, но он широко доступен с большим количеством программной и аппаратной поддержки — так что это идеальный платформа для демонстрации CAN-шины. Вот почему мы отошли от PyBoard и теперь Pico является официальным CANHack демонстрационная площадка!

В этом сообщении блога мы покажем, как построить систему CANHack из Малиновый Пи Пико. Нужно собрать кое-какое оборудование, а потом кое-что программное обеспечение для установки.

Подключение оборудования

Во-первых, список материалов:

  • 1 Raspberry Pi Pico
  • 1 Приемопередатчик CAN Microchip MCP2562FD (PDF)
  • 2 развязывающих конденсатора по 100 нФ
  • 1 9-контактный штекерный разъем D-sub (если вы хотите использовать разъемы CANOpen)

Для общения по CAN-шине строго необходим трансивер CAN. Это преобразует аналоговые напряжения CAN H/CAN L в цифровые CAN RX/TX. Здесь Мы собираемся показать, как подключить приемопередатчик Microchip MCP2562FD. Мы используйте этот трансивер, потому что:

  • В нашем магазине комплектующих есть куча запчастей
  • Они поставляются в корпусах PDIP, которые можно использовать непосредственно на макетной плате
  • Их можно подключить к входу/выходу 3,3 В

Важно использовать правильный приемопередатчик: нужен вариант с выводом VIO потому что устройство питается от 5 В, но Pico — это плата на 3,3 В, а контакты не устойчивы к напряжению 5В. Итак, вот наша макетная плата:

Схематическая версия приведенного выше:

Когда Pico загружается, его контакты находятся в состоянии высокого импеданса и CAN TX поэтому контакт может «плавать» и может плавать до логического 0. Чтобы предотвратить это MCP2562FD имеет внутренний подтягивающий резистор между TX и VIO. Однако, в некоторых случаях этого недостаточно и добавляется внешний резистор. Мы обнаружил, что у нашей макетной платы иногда были сбои TX каждые 1 мс, поэтому мы поставили 10K резистор между TX и VIO. Кажется, это работает, и мы не видели никаких больше глюков с тех пор. Проблема в любом случае исчезает, как только CANHack инициализируется: он устанавливает вывод TX на выход и подает на него 3,3 В, но это лучше не доводить эти глюки до автобуса.

Несмотря на то, что Pico работает на 3,3 В, на шине VBUS доступно 5 В. pin, поэтому нет необходимости в отдельном источнике питания для трансивера. Чтобы быть особенно осторожным, чтобы не смешивать 5 В и 3,3 В, мы использовали два отдельных источника питания. рейки на макетной плате: верхняя 3,3В, нижняя 5В. ВИО контакт на приемопередатчике подключен к 3,3 В, что делает RX и Цифровые линии TX работают при напряжении 3,3 В. Контакт STBY предназначен для установки трансивер на малую мощность, но мы не хотим заморачиваться с этим и привязать его к земле.

Контакты CAN H/L трансивера соединены перемычкой провода впаяны в 9-контактный штекерный разъем D-sub (это стандартный Формат разъема CAN, но их можно было бы так же легко перенести на OBD-II. разъем). Зеленый — это CAN H (контакт 7), а синий — CAN L (контакт 2).

Выводы ввода-вывода, которые мы выбрали, — это GPIO 22 для CAN TX (вывод 29 на Pico). и GPIO 21 для CAN RX (контакт 27 на Pico). Мы также включили вывод отладки на GPIO 15 (контакт 20 на Pico) — подробнее о что позже.

Несколько слов о подключении CAN-шины. Для нашей настольной шины CAN мы используем ленточный кабель, потому что это очень просто. защелкнуть разъемы IDC, чтобы можно было подключить стандартные разъемы CAN вместе:

Мы используем наши собственные согласующие резисторы на 120 Ом для обоих концов шины. кабель:

У нас также есть Raspberry Pi с Шляпа PiCAN от SK Pang и это имеет стандартный 9-контактный разъем D-sub. Он работает на Raspbian и Кантулы . Это используется в качестве доски жертвы при взломе шины. а также источник CAN кадров для тестирования и простой анализатор шины.

Установка программного обеспечения

CANHack — это набор функций C, которые побитно взламывают протокол CAN, используя простой автономный счетчик. Но они должны быть внутри исполнения окружающей среды, чтобы заставить их работать. Поэтому мы разработали собственный класс Python на C для Среда MicroPython на Pico. Тогда скрипты можно писать на Python которые вызывают функции CANHack.

Там довольно крутое обучение кривая для создания пользовательских классов на MicroPython, а у RP2040 есть свои крутая кривая обучения. Мы рассмотрим эти вопросы в будущем сообщении в блоге, но для теперь мы упростили задачу, выпустив готовую прошивку изображение для MicroPython. Это можно установить на Pico, перетащив прошивок обычным способом:

  • Нажмите кнопку BOOTSEL при включении платы
  • Перетащите файл прошивки firmware.uf2 в появившуюся папку
  • Дождитесь перезагрузки устройства

Прошивка находится в репозитории набора инструментов CANHack в pico/micropython.

Прошивка добавляет новый класс CANHack в модуль rp2 и к этому можно получить доступ через командную строку REPL в терминале в нормальный способ:

 
 1
 
 >>> ch = rp2. CANHack()
 

Это инициализирует CANHack со скоростью передачи по умолчанию 500 кбит/с (два других поддерживаются скорости: 250кбит/сек и 125кбит/сек).

Собираем все вместе

Итак, теперь у нас есть подключенное оборудование и кастомная прошивка MicroPython. установлен, мы можем проверить, что все работает. Итак, сначала давайте проверим CAN TX пин подключен.

CAN TX можно проверить, отправив «сырой» кадр CAN по шине. Этот просто передает битовый шаблон, который будет выглядеть как кадр CAN, на приемники. Во-первых, давайте создадим этот битовый шаблон:

 
 1
 
 >>> ch.set_frame(can_id=0x14, data=bytes([1]))
 

Это создает битовый шаблон для кадра CAN, такой же, как на знаменитой диаграмме на странице Википедии: стандартный идентификатор 0x14 и один байт полезной нагрузки.

Кадр выталкивается из контакта CAN TX командой send_raw :

 
 1
 
 >>> ch. send_raw()
 

Пока на шине нет другого трафика, это будет получено в виде кадра CAN любым контроллером, подключенным к шине. Инструмент candump работа на Raspberry Pi с шапкой PiCAN должна показывать поворот кадра up (не забудьте сопоставить скорость передачи данных: CANHack по умолчанию имеет значение 500 кбит/с).

Функция возвращает длинный список номеров, которые используются для проверки производительность кода.

Цифры обозначают количество циклов ЦП, необходимых для реагирования на событие времени. Им следует быть небольшими (около 20 или меньше) и в значительной степени зависеть от параметров компиляции/ссылки используется для сборки прошивки. Стратегия выполнения кода на месте, исходит от внешней флэш-памяти, не может использоваться с CANHack: есть огромная задержка при получении кода в первый раз. Основные части CANHack предварительно загружаются в оперативную память при запуске и выполняются оттуда с помощью никаких задержек кеша. Если цифры маленькие то это линковка/загрузка работает исправно.

Наша макетная плата содержит тестовые контакты, которые мы используем для подключения логического анализатора. Мы используем Saleae Logic16 с программным обеспечением PulseView от Sigrok, и наш собственный декодер протокола CAN 2.0. Есть несколько очень дешевых (менее $10) логических анализаторов для Sigrok. PulseView и наш декодер отлично с ними работают.

Если все работает, можно проверить контакт CAN RX. Есть функция включен в CANHack для выталкивания на контакт отладки (GPIO 15, контакт Pico 20) что получено от CAN RX. Это активируется с помощью:

 
 1
 
 >>> ch.loopback()
 

Он ожидает спадающего фронта на CAN RX, а затем отражается на вывод отладки, что бы он ни увидел на CAN RX в течение 160 бит (достаточно, чтобы отражать полный кадр CAN). Лучший способ использовать это — поместить логику анализатор на вывод отладки а затем отправьте кадр CAN с другого устройства (например, используйте cansend на a Raspberry Pi), а затем посмотрите, показывает ли вывод отладки этот кадр:

CANHack имеет возможность отправлять CAN кадр по протоколу CAN (входя в арбитраж, отступая, если он проигрывает арбитраж или обнаруживает ошибка).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *