Sparkfun CAN Shield BMW OBD2 чтение

Я купил CAN-Shield у Sparkfun https://www.sparkfun.com/products/13262 и также получил Uno от Sparkfun, чтобы убедиться, что все работает нормально.

Некоторая информация о моей машине:

  • БМВ Е91 2006
  • Доступна OBD2
  • Доступны KWP 2000 и другие линейки как те, что с той же скоростью передачи в демо-версии

Я попробовал демоверсию SparkFun_CAN_Demo, которая доступна на их веб-сайте и в GitHub.

Мой вывод таков: Инициализация CAN прошла успешно, но я не знаю, правда ли это... Например, если я попытаюсь прочитать RPM, я получу буфер размером 1 -> " ".

Мои вопросы:

  • Я что-то не так с MCP2515, как я узнаю, что он мертв?
  • Кто-нибудь знает, правильно ли работает демоверсия?
  • Как правильно получить данные от BMW с OBD2?

, 👍1

Обсуждение

каково содержимое буфера?, @jsotola

Знаете ли вы битрейт CAN-шины вашего BMW? Если нет, пробовали ли вы разные битрейты?, @oh.dae.su

@oh.dae.su Я пробовал разные битрейты, но ничего не работает. Я знаю, что мой BMW поддерживает KWP 2000 с битрейтом 10,5 кбит и стандартный OBD-II ISO со скоростью 500 кбит., @Kasti96

@jsotola это просто пробел -> " ", @Kasti96


1 ответ


1

Во-первых, я не могу много сказать о библиотеке, которую вы используете, я еще не пробовал ее, что касается щита, у меня есть некоторые из них, и есть две их версии, проверьте свои пины на них, вывод cs либо на d9, либо на d10

другое дело, убедитесь, что вы находитесь в правильном режиме работы, т.е. Нормально и, возможно, попробуйте эту библиотеку. У меня был большой успех с этим: https://github.com/coryjfowler/MCP_CAN_lib

Что касается скорости передачи данных, я перепробовал все типы способов получения правильной скорости передачи данных для определенных транспортных средств, но лучше всего начинать с малого и увеличивать ее, пока не получите тот, который даст вам ответ

убедитесь, что вы заземлили Arduino на автомобиль, он работает и без этого, но иногда ничего не делает. Если вы используете кабель OBDII, он должен быть заземлен по умолчанию

,

Спасибо за ваш ответ, ваши предложения кажутся хорошим способом выяснить, что я сделал неправильно., @Kasti96

Я боролся в начале и до сих пор борюсь с CAN-шиной STM32, но я думаю, что у меня есть Arduino, отсортированная с моей стороны, попробуйте эту библиотеку, она лучшая, которую я мог найти, обязательно используйте эту строку : if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK) и это: CAN0.setMode(MCP_NORMAL); один, чтобы настроить ваше устройство правильно, @Tjaart van aswegen