Arduino возможно использовать с программами PSA Coder (разработчик я), PSA-Arduino-NAC и PSA-Arduino-Cirocco (разработчик Ludwig, https://github.com/ludwig-v/ (https://github.com/ludwig-v/)), Canhacker.
Для сборки оборудования необходимы микроконтроллер Arduino (Nano или Uno), модуль кан-шины MCP2515.
Схема подключения для Arduino Nano
arduino-nano-mcp.jpg
Схема подключения для Arduino Uno
ardino-uno-mcp.jpg
После сбора по данной схеме необходимо прошить скетчи. Перед этим необходимо обратить внимание на частоту кварца, установленную в модуле mcp2515.
Прошивка осуществляется с помощью программы XLoader. XLoader.rar
xloader.png
Для использования моей программы и Canhacker (скорость выбирается в программе):
Скорость UART 115200:
- canhacker_8mhz.hex
- canhacker_16mhz.hex
Скорость UART 250000:
- canhacker_UART250_8Mhz.hex
- canhacker_UART250_16Mhz.hex
Скорость UART 500000:
- canhacker_UART500_8Mhz.hex
- canhacker_UART500_16Mhz.hex
Для использования программ PSA-Arduino-NAC и PSA-Arduino-Cirocco:
- NAC 8mhz 125.hex.hex
- NAC 8mhz 500.hex
- NAC 16mhz 125.hex
- NAC 16mhz 500.hex
После прошивки можно приступать к использованию программ.
Доброго дня.
Отличная работа. Прошилась атмега вроде.
Зачем внешнее питание для Arduino Nano, вроде от усб есть 5в, или по току не потянет усб?
Нет необходимости во внешнем питании при использовании для диагностики. Просто такое изображение попалось.
хм, а инфа про can hi/lo пропала отсюда или я где-то в другом месте про 3, 8 пины читал? Забыл где hi, а где lo :(
3 - High, 8 - Low
Подключать нужно к ОБД разъему?
Не обязательно. Есть возможность выбора скорости соединения, поэтому можно и в шину, где блок стоит, и напрямую к нему
Автомобиль DS4 2012 г.в.
собрал канхакер на ардуино уно по схеме выше. с модуля mcp2515 сигналы идут в каншину.
в программе канхакер вижу данные с шины и могу отправлять посылки в шину.
при подключении программой блоки автомобиля не видит и на панели приборов загорается много ошибок (абс, есп и т.д.) при нажатии кнопки начать сканирование. Это происходит на всех версиях программы (19,20,26).
минус с Разьема ОБД на ноге GND.
прошивал модуль mcp2515 прошивками 8 бит и 16 бит. работают оба варианта.
скиньте ссылку на репозитарий, который нормально работает с программой PSA Coder.
Скорость соединения в сети can 500 и место подключения обд? Блоки должны отображаться. Ошибки на есп и абс загораются только при запущенном двигателе в этом типе подключения, поскольку есп переходит в диагностику
Если у вас есть ArduinoUNO и вы так же невежественны, как и я, просто следуйте этому:
Скачайте ArduinoIDE (https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE) и MCP2515 (https://github.com/autowp/arduino-mcp2515/archive/master.zip) и Arduino CAN HACKER (https://github.com/autowp/arduino-canhacker/archive/master.zip).
Откройте ArduinoIDE и вставьте это:
#include <can.h>
#include <mcp2515.h>
#include <CanHacker.h>
#include <CanHackerLineReader.h>
#include <lib.h>
#include <SPI.h>
#include <SoftwareSerial.h>
const int SPI_CS_PIN = 9;
const int INT_PIN = 2;
const int SS_RX_PIN = 3;
const int SS_TX_PIN = 4;
CanHackerLineReader *lineReader = NULL;
CanHacker *canHacker = NULL;
SoftwareSerial softwareSerial(SS_RX_PIN, SS_TX_PIN);
void setup() {
Serial.begin(115200);
while (!Serial);
SPI.begin();
softwareSerial.begin(115200);
Stream *interfaceStream = &Serial;
Stream *debugStream = &softwareSerial;
canHacker = new CanHacker(interfaceStream, debugStream, SPI_CS_PIN);
//canHacker->enableLoopback(); // uncomment this for loopback
lineReader = new CanHackerLineReader(canHacker);
pinMode(INT_PIN, INPUT);
}
void loop() {
CanHacker::ERROR error;
if (digitalRead(INT_PIN) == LOW) {
error = canHacker->processInterrupt();
handleError(error);
}
error = lineReader->process();
handleError(error);
}
void handleError(const CanHacker::ERROR error) {
switch (error) {
case CanHacker::ERROR_OK:
case CanHacker::ERROR_UNKNOWN_COMMAND:
case CanHacker::ERROR_NOT_CONNECTED:
case CanHacker::ERROR_MCP2515_ERRIF:
case CanHacker::ERROR_INVALID_COMMAND:
return;
default:
break;
}
softwareSerial.print("Failure (code ");
softwareSerial.print((int)error);
softwareSerial.println(")");
digitalWrite(SPI_CS_PIN, HIGH);
pinMode(LED_BUILTIN, OUTPUT);
while (1) {
int c = (int)error;
for (int i=0; i<c; i++) {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
delay(2000);
} ;
}
Загрузите на плату ArduinoUNO, после чего вы сможете использовать PSA CODER.
Хочу поделиться своим опытом.
Купил Arduino UNO (клон), CAN-BUS-SHIELD (https://aliexpress.ru/item/1005004839535894.html?sku_id=12000030694360483&spm=a2g2w.productlist.search_results.7.53444aa6LeUv1D), OBD2 разъем (https://aliexpress.ru/item/32843983220.html?sku_id=65149805147&spm=a2g2w.productlist.search_results.15.4d154aa6hP9Q6f) на алиэкспрессе и все это собрал.
После сборки нашел вот эту (https://www.drive2.ru/b/508723415402676325/) статью. Забрал все ПО от сюда (https://disk.yandex.by/d/3rw8rFcZ3ZvSQd) скомпилировал, тыкнул в машину, а оно не работает... Проверил схему, скетч, проверил подключение пинов несколько раз и так по кругу... В какой-то момент начал подозревать, что проблема в скрипте и указании частоты кварца. На шилде кварц 16Мгц... В общем спустся несколько дней и вялых поисков в интернетах понял, что в большинстве проектов используется вот этот модуль (https://aliexpress.ru/item/32817132818.html?sku_id=10000000428188887&spm=a2g2w.productlist.search_results.2.6acb4aa675Etj0). В нем то кварц 8МГц.. В файле CanHacker.h
в месо: CAN_CLOCK canClock = MCP_8MHZ;
пишу: CAN_CLOCK canClock = MCP_16MHZ;
Думаю проблема решена! Мчусь в машину, тыкаю разъем, запускаю CanHacker v2.00.02, а данных в окне Recieve как не было так и нет. Я уже начал скорости перебирать и чувствую безысходность, возвращаясь к стандартным настройкам скорости, отключаю галочку в настройках соединения "Listen Only"...
... Подключаюсь, и все поперло! Попробовал повторить с галкой и без.. Оказалось дело все в ней и в кварце/скрипте.
You are not allowed to view links.
Register or Loginотключаю галочку в настройках соединения "Listen Only"...
тоже с этим столкнулся. С включенной этой галкой программа коннектится к дуне но ничего не видит. Снимаю галку и всё заработало
Доброе время суток. Своим вопросом могу получить бан, но всё-таки спрошу. Я электронщик, в программировании Ардуино не очень, но возможно ли объединить 2 программы и производить переключение между ними путем установки перемычки на плате (переключатель на корпусе устройства), свободных портов ещё куча. Будет универсальный шнурок. Так же и выбор тактовой частоты кварца завязать на порт. Все модификации можно переключать через состояния портов с присвоенными к ним переменными в программе.
You are not allowed to view links.
Register or LoginДоброе время суток. Своим вопросом могу получить бан, но всё-таки спрошу. Я электронщик, в программировании Ардуино не очень, но возможно ли объединить 2 программы и производить переключение между ними путем установки перемычки на плате (переключатель на корпусе устройства), свободных портов ещё куча. Будет универсальный шнурок. Так же и выбор тактовой частоты кварца завязать на порт. Все модификации можно переключать через состояния портов с присвоенными к ним переменными в программе.
Памяти в ардуино мало. Немного не понимаю, зачем так делать. Проще скетч перезалить
Я правильно понимаю,что имея в наличии Ардуино и MCP 2515 ,папу ОБД2 и программу PSA Coder,то можно будет сконфигурировать цветной матричный дисплей,купленный на Али,под конфигурацию своего авто?
You are not allowed to view links.
Register or LoginЯ правильно понимаю,что имея в наличии Ардуино и MCP 2515 ,папу ОБД2 и программу PSA Coder,то можно будет сконфигурировать цветной матричный дисплей,купленный на Али,под конфигурацию своего авто?
да, можно