Аналіз і передача даних по шині can автомобіля за допомогою arduino

31

Шина controller area network (can) — це «стандарт автомобільної шини, розроблений для того, щоб мікроконтролери і пристрої могли зв’язуватися один з одним всередині транспортного засобу без головного комп’ютера». Ці пристрої також можуть називатися електронними блоками управління (ебу або ecu від electronic control unit). По суті, шина can-це набір пов’язаних ебу в автомобілі, які обмінюються даними з кожним іншим пристроєм на основі широкомовної передачі. Кожен ecu перехоплює кожну трансляцію, але індивідуально вирішує, реагувати на неї чи ні.

наприклад: давайте уявимо, що є один ecu, який керує стоп-сигналами, один ecu, який керує автомобільним звуковим сигналом, і один ecu, який керує гальмівною системою. Кожен раз, коли користувач натискає звуковий сигнал, ебу звукового сигналу відправляє широкомовне повідомлення по мережі can-шини на кожен ебу, до якого він підключений, включаючи ебу стоп-сигналу і ебу гальмівної системи. Ебу стоп-сигналу перехоплює це широкомовне повідомлення, але вважає за краще ігнорувати його, оскільки воно не має для нього значення. Ебу стоп-сигналу тільки очікує повідомлення від ебу гальмівної системи. Крім того, ебу звукового сигналу не реагує на ебу гальмівної системи.

Ця система мовлення розбита на різні компоненти; два найбільш важливих — це ідентифікатор повідомлення і дані повідомлення.подумаємо про ідентифікатор повідомлення як про адресу блоку управління двигуном. Дані повідомлення-це зміст. Зазвичай він більше ідентифікатора і становить близько 8 байт.

id повідомлення: 620дані: 10 80 ff ff 80 20 00 80

Ебу обмінюються даними один з одним по кручений парі проводів, що підтримують високий рівень can (can +) і низький рівень can (can-). Can-high і can-low доступні через порт obd-ii, зазвичай під рульовим колесом.volkswagon має гарне керівництво по роботі мережі can bus:

матеріали: 1-arduino uno r32-sparkfun (або інший) can bus shield або на аліcan bus shieldплата розширення can bus sparkfun також має джойстик (вгору, вниз, вліво, вправо, по центру), слот для micro sd і підтримку модулів gps і lcd.3-3-провідна пара або кабель sparkfun від obd-ii до db9;4-штирьовий роз’єм; плата розширення поставляється без припаяних штирьових роз’ємів. На плату потрібно припаяти два роз’єми по 8 контактів, два роз’єми по 6 контактів і один роз’єм на 4 контакти.

Після складання обов’язково потрібно завантажити бібліотеку can bus library для використання з arduino ide.бібліотека і файли прикладів знаходяться нижче:https://github.com/sparkfun/sparkfun_can-bus_ardui…посилання для скачування бібліотеки і прикладів :https://github.com/sparkfun/sparkfun_can-bus_ardu…библиотека у папці src /приклади sparkfun (і авторські) знаходяться в папці examples /ініціалізація екрану шини can:

Ініціалізація плати потрібно для всіх завдань. Тут визначається бітрейт can і імпортується бібліотека. Кожен автомобіль може використовувати різні швидкості передачі даних. В даному прикладі використовується 500 кбіт / с.

canspeed_250 / / can speed at 250 kbps

canspeed_500 //can speed at 500 kbps

Можливо, для автомобіля іншого виробника значення будуть інші.далі читаються повідомлення can-шини:

Показати / приховати текст

Далі фільтруємо дані:

Показати / приховати текст

Message.header.length-це розмір повідомлення can.вищезазначені дані були відфільтровані за ідентифікатором повідомлення. Також можна фільтрувати за даними повідомлення.

Показати / приховати текст

При цьому повідомлення можуть бути довшими 3-х цифр.щоб написати повідомлення can bus, потрібно спочатку зібрати компоненти повідомлення: ідентифікатор повідомлення, розмір повідомлення і дані повідомлення. Повідомлення розбите по message.id, message.header.rtr, message.header.length і

Показати / приховати текст

Ідентифікатор повідомлення і дані записуються в hex (наприклад, 0xff), в тому ж форматі, в якому прочитуються користувачем.

Прикріплений файл can_read_sample призначений для простого читання всіх повідомлень. Майстер закоментував фільтрацію, тому її легко можна змінити, включивши фільтрацію ідентифікатора повідомлення і даних.

Він також прикріпив файл can_write_sample для написання повідомлення.

Є два варіанти підключення arduino до ліній can-high і can-low автомобіля:1-розрізаємо будь-яку пару проводів і підключаємо can-h і can-l на платі розширення до порту obd-ii.can-h (shield)<- - - - ->can-high (obd-ii)can-l (shield)<- - - - ->can-low (obd — ii)2-придбати кабель obd — ii-db9 sparkfun і підключатися безпосередньо до шини.далі підключаємо arduino до машини і комп’ютера, завантажуємо код, відкриваємо монітор послідовного порту.код нижче.can_read_sample.inocan_write_sample.іпотеперь можна управляти пристроями автомобіля по can-шині.

наприклад: — розблокувати і заблокувати автомобіль-відкрити багажник-відкривати і закривати вікна-включати сигналізацію-блокувати автомобіль-включати і вимикати сигнальні вогні, повороти, ближнє і дальнє світло фар і т. Д. Джерело (source)