Can передатчик шины arduino

цифровая электроника вычислительная техника встраиваемые системы

Arduino и MCP2515 – интерфейс CAN для Arduino

Видео:MCP2515, контроллер CAN шины с интерфейсом SPIСкачать

MCP2515, контроллер CAN шины с интерфейсом SPI

Arduino и MCP2515: принцип работы, подключение, схема, код

CAN (Controlled Area Network) – это стандарт шины, который позволяет микроконтроллеру и его периферийным устройствам обмениваться данными без необходимости использования хост-устройства или компьютера. Протокол CAN, разработанный Robert Bosch GmbH, в основном используется в автомобилях для связи между блоком управления и его компонентами.

Can передатчик шины arduino

Например, блок управления двигателем является основным средством управления, используемым в автомобиле. Этот блок подключен ко многим датчикам и исполнительным механизмам, таким как механизмы контроля потока воздуха, давления, температуры, управления клапанами, двигатели для контроля воздуха и т. д. Связь между этими модулями и блоком управления осуществляется через шину CAN. В этом проекте мы узнаем о модуле контроллера CAN MCP2515, о том, как связать контроллер шины CAN MCP2515 с Arduino, и, наконец, о том, как обеспечить связь между двумя платами Arduino с помощью двух контроллеров CAN MCP2515 и самого протокола CAN.

Видео:Arduino CAN Monitor (простейший монитор шины CAN)Скачать

Arduino CAN Monitor (простейший монитор шины CAN)

Модуль MCP2515

Контроллер шины CAN MCP2515 – это простой модуль, который поддерживает протокол CAN версии 2.0B и может использоваться для связи со скоростью 1 Мбит/с. Для того, чтобы настроить полную систему связи, вам потребуется два модуля шины CAN. Модуль, используемый в проекте, показан на рисунке ниже.

Can передатчик шины arduino

Этот конкретный модуль основан на ИС контроллера CAN MCP2515 и ИС приемопередатчика TJA1050. Микросхема MCP2515 представляет собой автономный контроллер CAN и имеет встроенный интерфейс SPI для связи с микроконтроллерами. Что касается микросхемы TJA1050, она действует как интерфейс между ИС контроллера MCP2515 и физической шиной CAN.

MCP2515 – это основной контроллер, который состоит из трех основных подкомпонентов: модуля CAN, логики управления и блока SPI. Модуль CAN отвечает за передачу и прием сообщений на шине CAN. Логика управления управляет настройкой и работой MCP2515, взаимодействуя со всеми блоками. Блок SPI отвечает за интерфейс связи SPI.

На следующем рисунке показана схема CAN-модуля MCP2515, а также показано, как микросхема MCP2515 и TJA1050 подключены к модулю.

Can передатчик шины arduino

Видео:Трансиверы CAN шины TJA1050, MCP2551 как альтернатива RS485Скачать

Трансиверы CAN шины TJA1050, MCP2551 как альтернатива RS485

Схема подключения Arduino и MCP2515

На следующем рисунке показана принципиальная схема подключения модуля CAN MCP2515 с Arduino и связь между двумя Arduino по протоколу CAN.

Can передатчик шины arduino

Видео:лекция 403 CAN шина- введениеСкачать

лекция 403  CAN шина- введение

Код программы для взаимодействия Arduino и MCP2515

Прежде чем углубляться в код, вам необходимо скачать библиотеку для модуля MCP2515. Есть много библиотек, но здесь мы использовали эту: https://github.com/Seeed-Studio/CAN_BUS_Shield. Загрузите ее и поместите извлеченное содержимое в каталог библиотек Arduino. Поскольку сеть CAN включает в себя модуль передатчика и модуль приемника, код также делится на код передатчика и код приемника.

Работа этого проекта очень проста, так как вся работа выполняется библиотеками (SPI и CAN). Поскольку CAN является связью на основе сообщений, вам необходимо отправить сообщение в диапазоне от 0 до 8 байтов.

Can передатчик шины arduino

В этом проекте передатчик отправляет сообщение 1 1 2 3 0 5 6 7. Это сообщение передается по шине CAN, и получатель получает это сообщение, что отображается на его последовательном мониторе. Кроме того, 0-й и 4-й биты, то есть 1 и 0 в вышеуказанной последовательности, извлекаются приемником отдельно и включают и выключают светодиод, подключенный к контакту 2 платы Arduino.

Видео:Arduino CAN Sender ( Ардуино отправка пакетов в КАН шину)Скачать

Arduino CAN Sender ( Ардуино отправка пакетов в КАН шину)

Подключение модуля MCP2515 к Arduino

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

Controlled Area Network — стандарт интерфейса. Он часто используется в электронных системах диагностики современных автомобилей для передачи информации от блока управления к другим цифровым датчикам и механизмам (контроля температуры, давления и т.п.). Такая его особенность позволяет активно применять устройство во многих как простых, так и более сложных проектах (например, моделирование системы «умный дом») – все это без задействования ПК.

Читайте также: Смарт форту 451 давление в шинах

Модуль MCP2515 представляет собой компактный автономный контроллер с 3 подкомпонентами и интегрированным интерфейсом SPI.

  • напряжение питания: 5V;
  • интерфейс: высокоскоростной SPI;
  • частота: 40 МГц;
  • тип шины: CAN;
  • max скорость шины: 1МБ/сек.;
  • рабочий ток: 5 мА (в режиме ожидания — 1uA);
  • диапазон рабочих температур: -40 … +85 C;
  • габариты: 4х2.8 см.

Контроллер оснащен держателем Micro SD-карты, кнопкой сброса, разъемом для последовательного LCD, 2-мя LED-индикаторами. При желании возможно управление с помощью джойстика.

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

Видео:Arduino CAN Sender ID 29bit (Ардуино отправка пакетов в КАН шину c 29bit CAN ID)Скачать

Arduino CAN Sender ID 29bit  (Ардуино отправка пакетов в КАН шину c 29bit CAN ID)

Подключение MCP2515 к Arduino

Давайте рассмотрим принципиальную схему подключения.

Для реализации несложного проекта нам понадобится такое «железо»:

  1. CAN контроллер MCP2515 – 2 шт.
  2. Плата Arduino (Uno, Nano или Mega) – 2шт.
  3. Макетная плата.
  4. Соединительные провода.

Can передатчик шины arduino

Еще более простая схема сборки:

Can передатчик шины arduino

Для прошивки и облегчения процесса программирования рекомендуем использовать специализированное ПО — CAN_BUS_Shield. Эту библиотеку необходимо скачать и инсталлировать, а именно разархивировать содержимое следует в каталог библиотек среды Arduino IDE.

Еще один популярный (альтернативный) вариант — MCP_CAN_lib

Зальем 2 скетча (под код передатчика и приемника CAN):

Как вы наверняка успели отметить, мы использовали еще один софт – библиотеку SPI (уже для управления интерфейсом). Проверьте ее наличие у себя в приложении!

Изучайте Arduino, выбирайте интересные проекты и развивайтесь в этом направлении. До скорой встречи!

Видео:arduino can подмотка своими рукамиСкачать

arduino can подмотка своими руками

Arduino bus can: заставляем микроконтроллер общаться по шине

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

Определение:

CAN – control area network, в переводе звучит что-то вроде «сети устройств управления и связи».

Сети с его использованием можно встретить в различных областях техники, начиная от современных автомобилей – на них с помощью Can шины осуществляется связь между блоками управления автомобилем, а также на промышленных объектах в любой сфере производства.

Микроконтроллеры Arduino can шину в обычном виде не поддерживают – для этого нужно использовать дополнительные блоки преобразования сигналов.

Видео:Как управлять автомобилем через CAN-шину?Скачать

Как управлять автомобилем через CAN-шину?

Как заставить Arduino общаться по can?

Во-первых, для связи по ардуины нужно использовать модуль mcp2515 или TJA1050. Это устройство выступает в роли посредника между контроллером и сетью, то есть вы отправляете битовые последовательности на него, указываете адресата, а он перенаправляет данные в нужном порядке и форме.

Can передатчик шины arduino

Связь ардуино и этой платы осуществляется по SPI интерфейсу.

Определение:

SPI – Serial Peripheral Interface, на русском языке это звучит так – последовательный интерфейс периферии.

Для связи нужно четыре цифровых сигнала (соответственно, 4 пина ардуины):

  • MOSI – выход ведущего устройства;
  • MISO – вход ведущего;
  • SCLK – последовательный тактовый сигнал;
  • CS (SS) – выбор кристалла или микросхемы (crystal select).

Can передатчик шины arduino

На схеме вы видите, что все сигналы, кроме SS(CS), – общие, а последний индивидуален для каждого устройства в системе, и нужен для определения устройства, с которым ведётся обмен данным. Когда сигнал 0 – устройства взаимодействуют, а когда 1 – нет. То есть управление производится инверсным сигналом, иначе говоря – низким уровнем, об этом свидетельствует полоса над надписью SS, в математике и электронике так обозначаются инвертированные (умноженные на минус единицу) значения чисел.

Читайте также: Остаток зимних шин разрешенный

Для работы Arduino bus can системы нужно использовать соответствующую библиотеку для Arduino ide (https://github.com/Seeed-Studio/CAN_BUS_Shield), а для большего удобства – шилд, кстати, библиотека написана под такой шилд.

Can передатчик шины arduino

Видео:Ардуино+CAN MCP2515 в Дастер 2017Скачать

Ардуино+CAN MCP2515 в Дастер 2017

Варианты применения

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

Видео:CAN Hacker своими руками пример чтения кан шины с помощью ARDUINO MCP2515Скачать

CAN Hacker своими руками пример чтения кан шины с помощью ARDUINO MCP2515

Хакаем CAN шину авто. Виртуальная панель приборов

Can передатчик шины arduino

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

В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.

  1. CAN сниффер из Arduino Uno
  2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
  3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
  4. Софт панели приборов на Python и Kivy (UI framework)
  5. Видео работы цифровой панели приборов на базе Raspberry Pi

Под катом полная реализация проекта, будет интересно!

Can передатчик шины arduino

Водительская дверь открыта

CAN сниффер из Arduino Uno

Чтобы послушать, что отправляет VCDS в CAN шину я собрал сниффер на макетке из Arduino и модуля MCP2515 TJA1050 Niren.

Can передатчик шины arduino

Схема подключения следующая:

Для прослушивания трафика использовал анализатор CanHackerV2 и прошивку arduino-canhacker для Arduino, которая реализует API совместимое с этой программой. Прошивка в гите https://github.com/autowp/arduino-canhacker.

CanHackerV2 позволяет смотреть пролетающий трафик, записывать и проигрывать команды с заданным интервалом, что очень сильно помогает в анализе данных.

Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)

Описание VCDS с официального сайта ru.ross-tech.com:

Программно-аппаратный сканер VCDS предназначен для диагностики электронных систем управления, устанавливаемых на автомобилях группы VAG. Доступ ко всем системам: двигатель, ACP, АБС, климат-контроль, кузовая электроника и т.п., считывание и стирание кодов неисправностей, вывод текущих параметров, активация, базовые установки, адаптация, кодирование и т.п.

Can передатчик шины arduino

Подключив сниффер к линиям CAN_L и CAN_H в диагностическом шнурке я смог увидеть какие запросы делает VCDS и что отвечает авто.

Can передатчик шины arduino

Особенность авто группы VAG в том, что OBD2 разъем подключен к CAN шине через шлюз и шлюз не пропускает весь гуляющий по сети трафик, т.е. подключившись в OBD2 разъем сниффером вы ничего не увидите. Чтобы получить данные в OBD2 разъёме нужно отправлять шлюзу специальные запросы. Эти запросы и ответы видно при прослушивании трафика от VCDS. Например вот так можно получить пробег.

В VCDS можно получить информацию почти с любого датчика в машине. Меня в первую очередь интересовала информация, которой вообще нет на моей приборке, это:

  • температура масла
  • какая именно дверь открыта

Читайте также: Размер шин для форд s max

Скорость, обороты, температура ОЖ, пробег, расход, место в баке и другие запросы я тоже получил, для справки размещу.

Разработка панели приборов на основе Raspberry Pi и 7″ дисплея

В качестве аппаратной части я выбрал Raspberry Pi. Была идея использовать Android планшет, но показалось, что на Raspberry Pi будет проще и быстрее. В итоге докупил официальный 7″ дисплей, и сделал CAN шилд из модуля TJA1050 Niren.

Can передатчик шины arduino

OBD2 штекер использовал от старого ELM327 адаптера.

Can передатчик шины arduino

Используются контакты: CAN_L, CAN_H, +12, GND.

Тесты в машине прошли успешно и теперь нужно было все собрать. Плату дисплея, Raspberry Pi и блок питания разместил на куске черного пластика, очень удачно подобрал пластмассовые втулки, с ними ничего не болтается и надежно закреплено.

Can передатчик шины arduino

Местом установки выбрал бардачок на торпедо, которым я не пользуюсь. По примеркам в него как раз помещается весь бутерброд.

Can передатчик шины arduino

Напильником довел лист черного пластика до размера крышки бардачка, к нему прикрепил бутерброд и дисплей. Для прототипа сойдет, а 3D модель с крышкой для дисплея и всеми нужными крепежами уже в разработке.

Can передатчик шины arduino

Софт панели приборов на Python и Kivy (UI framework)

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

Первая версия панели приборов

По мере разработки решил визуализировать данные более наглядно. Хотел гоночный дизайн, а получилось, что-то в стиле 80-х.

Вторая версия панели приборов

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

Третья версия панели приборов

Ранее, я никогда не разрабатывал графические приложения под Linux поэтому не знал с чего начать. Вариант на вебе простой в разработке, но слишком много лишних компонентов: иксы, браузер, nodejs, хотелось быстрой загрузки. Попробовав Qt PySide2 я понял, что это займет у меня много времени, т.к. мало опыта. Остановился на Kivy — графический фреймворк для Python, простой в понимании с полной библиотекой графических элементов и дающий возможность быстро создать мобильный интерфейс.

Kivy позволяет запускать приложение без Иксов, прямо из консоли, в качестве рендера используется OpenGL. Благодаря этому полная загрузка системы может происходить за 10 секунд.

Алгоритм работы следующий, используется 3 потока:

  1. В главном потоке работаем с графическими элементы (спидометр, тахометр, часы, температуры и др) на экране
  2. Во втором потоке каждые 5 мс делаем опрос следующего датчика
  3. В третьем потоке слушаем CAN шину, получив ответ парсим его и обновляем соответствующий графический элемент

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

Проект цифровой панель приборов открытый. Рад буду предложениям и комментариям!

Видео работы цифровой панели приборов на базе Raspberry Pi

Приложение на телефон Виртуальная панель приборов

Для телефона написал приложение — виртуальная панель приборов, данные от машины передаются через ELM327 Wi-Fi адаптер. Адаптер подключается в OBD2 разъем, делает запросы по CAN шине и возвращается ответы в приложение по Wi-Fi.

Приложение VAG Virtual Cockpit уже в AppStore. Пока, что только под iPhone/iPad, но Android версия планируется. Приложение решил сделать платным с минимальной символической стоимостью.
Если есть желание поддержать проект, то вот ссылка на приложение, принимаю любые замечания и предложения!
VAG Virtual Cockpit

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле
    • Правообладателям
    • Политика конфиденциальности


    📸 Видео

    CAN шина👏 Как это работаетСкачать

    CAN шина👏 Как это работает

    CanHacker из 2CAN модуля своими руками КанХакер подробно в деталяхСкачать

    CanHacker из 2CAN модуля своими руками КанХакер подробно в деталях

    Универсальная плата CAN шиныСкачать

    Универсальная плата CAN шины

    Поиск уровня топлива в CAN шине Toyota Camry 2017Скачать

    Поиск уровня топлива в CAN шине Toyota Camry 2017

    Arduino CAN Hacker, CAN Monitor, CAN Sender разбор вопросовСкачать

    Arduino CAN Hacker, CAN Monitor, CAN Sender разбор вопросов

    Передача данных через CAN шину #MCP2515 #ARDUINO #DS18B20 #GALILEOSKY7 #EASYLOGIC #ПРОГРАММИРОВАНИЕСкачать

    Передача данных через CAN шину #MCP2515 #ARDUINO #DS18B20 #GALILEOSKY7 #EASYLOGIC #ПРОГРАММИРОВАНИЕ

    STM32 CAN шина. Часть 1. Настройка и странности HALСкачать

    STM32 CAN шина. Часть 1. Настройка и странности HAL

    Can2San-V5 CAN BOMBER CAN HACKER CAN snifferСкачать

    Can2San-V5 CAN BOMBER  CAN HACKER  CAN sniffer

    Контролька на Arduino, с функциями осциллографа, поиска CAN шины, частотомера, вольтметра, прозвонкиСкачать

    Контролька на Arduino, с функциями осциллографа, поиска CAN шины, частотомера, вольтметра, прозвонки

    CAN-Hacker Как искать пакеты в CAN шине на примере Toyota Prius-C AquaСкачать

    CAN-Hacker Как искать пакеты в CAN шине на примере Toyota Prius-C Aqua
Поделиться или сохранить к себе:
Технарь знаток