— температура двигуна (вона ж температура охолоджуючої рідини)
— температура зовнішнього повітря
— швидкість руху
Найлогічне, взяти ці параметри з CAN-шини, може щось попутнознайдеться корисного, що допоможе покращити майбутній алгоритм (навантаження на двигун, передача D або S тощо)…
У машинах, як правило, мінімум дві CAN-мережі з різнимишвидкостями:
Швидка/High-Speed-CAN — CAN-шина зі швидкою швидкістю (унашій машині 500 кб/с) Відповідає за обмін даними між "життєвоважливими" блоками і датчиками:двигун, коробка, ABS, ESP, кермо і тп.
Повільна/Low-Speed-CAN/Комфорт< /b> — CAN-шина зповільнішою швидкістю (у нас 33.333 кб/с), для тих блоків, швидкість обміну інформації та/або втрата інформації не єкритичною, наприклад, склопідйомники, клімат, кнопки на кермі, кінцевики і т.П.
Вирішив почати з швидкої шини, т.К. 99% вона є поряд з ЕБУ та їїлегше зніффати, т.К. Вона є в діагностичному порту.
Кліщі було ліньки відключати, вибачте
Півтора роки тому прикупив собі такий девайс від Сhipsoft(wertex76), за допомогою якого підключався длядіагностики дилерським софтом та як канхакером. Найбільшекористувався саме для аналізу CAN-шини. Зараз коштує дорожче, але, як на мене, вона того варта. Штука досить прикольна, хоч і незовсім для цих завдань. Автору респект.
Невелику частину інформації вдалося розшифрувати, але зтемпературами засідки визначити не вдалося. Вирішив піти іншимшляхом і порівнювати дані з CAN-шини з даними дилерського софтуi-HDS. Деякі знахідки підтвердилися, деякі стали зрозумілішими, частина виявилася повністю неправильними.
i-HDS повертає багато різних показань температур:температураохолоджувального повітря, олії в коробці та інші, частина яких меніне зрозуміла. :) Температури зовнішнього повітря, на жаль, немає.
Приклад виведення даних у i-HDS. Від машини на цьому етапі вжевідключився, тому без даних. Але частина даних плавала і зіставитиїх з даними в CAN-шині не уявлялося можливим. Адаптер потрібноперепрошувати з режиму канхакера в J2534 і назад ... i-HDS знатноповільно працює ... За цей час дані встигають змінитися ідоводиться порівнювати тепле з м'яким. Вирішив піти іншим шляхом -підключити одночасно і адаптер, та arduino зі скетчем дляCANHacker-а. Хотів паралельно отримувати дані з CAN-шини тадивитися на дані в i-HDS для пошуку збігів.
Для реалізації ідеї взяв стандартний набір:
- Arduino NANO - модуль MCP2515 c TJA1050 - "вита пара" - дві голки- скетч
/p>
Дюпони вивів для зручності, щоб можна було кліщами підключатися.Весь цей набір у мене вже давно був і не в одному екземплярі, томуз залізом вирішилося швидко. Зі скетчем для програми CANHackerвиявилося трохи складніше. Перепробував багато бібліотек і чужихскетчів, але завелося тільки на третій вечір. Підключення модуля доардуїно "стандартне". Скетч прикладаю нижче. В цілому цеоригінальний приклад з либи arduino-canhacker, але доданий рядок іззазначенням частоти кварцу на mcp2515 (у мене 8 mhz). ##
/**
* github.com/autowp/arduino-canhacker
* Commit:7bcbf0a751f198edbee1844c7b6020c252c8c08d
*
/>
* github.com/autowp/arduino-mcp2515
* Commit:cdc0141ee734f47f54628b1ac8acaafa9120511b
*
*/
#include
#include
#include
#include
#include
#include;
#include
const int SPI_CS_PIN = 10;
const int INT_PIN = 2;
const int SS_RX_PIN = 3;
const int SS_TX_PIN = 4;
<
CanHackerLineReader *lineReader = NULL;
CanHacker *canHacker = NULL;
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-> setClock(MCP_8MHZ); //MCP_8MHZ, MCP_16MHZ абоMCP_20MHZ
lineReader = новий 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);
; i
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
delay(2000);
};
}
#### End ####
Окрім цього був зібраний другий, такий же залізо, набір, але зіскетчем, який розшифровує відомі дані з CAN-шини в читабельнийвигляд і повертає назад в монітор порту (serial). Допомогою того жадаптера. З його допомогою через CANHacker відправляв пакети, аarduino мала їх отримувати і щось з ними робити. Для неї використавіншу лібу, т.К. Мені потрібен простіше функціонал. Одна ардуїнаповинна була виводити дані в інше вікно CANHacker-а, а другаардуїна — повертати готові дані (температури, статуси, швидкість іт.П.) у читабельному вигляді. Arduino. Адаптер надсилаєповідомлення, Arduino приймає. Весь комплект. Видно одну зв'язку задаптера та однієї ардуїно
На столі все працювало чудово, тому задоволений пішов до машини… Іщо цього разу? мене чекало? )) Правильно, знову облом! Ардуїно тупоне може обробити такий обсяг інформації. Занадто велика швидкість івеликий обсяг даних. Незважаючи на різні ліби та завдання, обидвіардуїни йдуть в себе або перезавантажуються. Пробував Arduino UNO, але така сама ситуація.
Якщо хтось стикався/вирішував цю проблему — буду вдячний за інфу.Сам копати далі не планую поки що, т.К. У швидкій шині немає всіхпотрібних даних. Результат, крім працюючих окремо шторок ірозібраних даних, які поки ніяк не допомагають проекту. Цьому хаосіневідомих пакетів. Там має бути температура зовнішнього повітря, якої немає у швидкій шині. Сподіваюся, там можна буде знайти щещось корисне. До речі, пару тижнів тому поміняв ще лампочки вбагажнику) Стало набагато світлішим.
Оригінальні лампи LED-и. Оригінальний Китай)
PS Шкода, що немає тега для вставки коду в пост… >
Лунапарк з CR-V, Arduino та CAN ч1:Arduino та CANHacker
Лунапарк з CR-V, Arduino та CAN ч2:Швидка CAN шина
"
Наступний етап — підключення до повільної шини в блоці BCM ізнову пошук потрібних даних у цьому хаосі невідомих пакетів. Таммає бути температура зовнішнього повітря, якої немає у швидкійшині. Сподіваюся, там можна буде знайти ще щось корисне. До речі, пару тижнів тому поміняв ще лампочки в багажнику) Стало набагатосвітлішим.
Оригінальні лампи LED-и. Оригінальний Китай)
PS Шкода, що немає тега для вставки коду в пост… >
Лунапарк з CR-V, Arduino та CAN ч1:Arduino та CANHacker
Лунапарк з CR-V, Arduino та CAN ч2:Швидка CAN шина
"
Наступний етап — підключення до повільної шини в блоці BCM ізнову пошук потрібних даних у цьому хаосі невідомих пакетів. Таммає бути температура зовнішнього повітря, якої немає у швидкійшині. Сподіваюся, там можна буде знайти ще щось корисне. До речі, пару тижнів тому поміняв ще лампочки в багажнику) Стало набагатосвітлішим.
Оригінальні лампи LED-и. Оригінальний Китай)
PS Шкода, що немає тега для вставки коду в пост… >
Лунапарк з CR-V, Arduino та CAN ч1:Arduino та CANHacker
Лунапарк з CR-V, Arduino та CAN ч2:Швидка CAN шина






Коментарі2
А простіше не вийде? Просто через реле від датчика температури ДВЗ підключити.
Вийде, але має ряд мінусів. Якщо робити правильно, то шторки повинні спочатку зробити самодіагностику. Якщо з ними якісь проблеми є, то про це краще відразу дізнатися. Наприклад, примерзли і моторчик не може їх відкрити. Якщо їздити з закритими шторк...