[Из песочницы] Бортовой компьютер для авто на Arduino своими руками за 25$

Приветствую! Сейчас примерно за 25 долларов мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный бензин за поездку, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое. Сброс ошибок доступен в режиме «recovery» (как зайти написано ниже). Общий цикл работы с запросом всех данных из эбу происходит примерно раз в 750 мс. (при условии паузы между запросами в 65 мс, так по умолчанию)

image

Еще фото

Список требуемых деталей для сборки БК 1) Arduino Uno R3 — 1 шт. ~ 7 долларов: image

2) LCD2004 жк-модуль ~ 6 долларов:

image

3) Модуль Bluetooth HC-05 ~ 4 доллара:

7ce9a82f4f99405793b5ce1b958177d2.jpg

4) OBD ELM327 Bluetooth сканер ~ 4 доллара:

aa9ee0a7a6a241b3ae05bf7ded289cbe.jpg

5) Резистор 5 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус ~ 3 доллара.

Настройка блютуз модуля HC-05 для работы Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)1 — это TX 2 — это RX 12 — это 3.3V 13 — это GND 34 — на этот вход тоже кидаем 3,3 V (нужен для перевода модуля в режим настройки с помощью AT команд). Подключаем блютуз модуль к ардуине.1 — TX модуля в 6 пин ардуины. (внимание будет TX в TX это не ошибка!) 2 — RX модуля в 7 пин ардуины. (аналогично не ошибка!) 12 — и 34 пин к 3,3V ардуины. 13 — GND ардуины. Открываем Aduino IDE и заливаем скетч через USB порт в плату.#include SoftwareSerial BTSerial (6, 7); // TX | RXvoid setup (){Serial.begin (9600); Serial.println («Enter AT commands:»); BTSerial.begin (38400);}

void loop (){if (BTSerial.available ())Serial.write (BTSerial.read ()); if (Serial.available ())BTSerial.write (Serial.read ());}

После успешной загрузки скетча открываем: Сервис→Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.

Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ .

AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)AT+NAME=Car //Присваиваем имя модулю CarAT+ROLE=1 // Переводим модуль в режим МастерAT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327AT+BIND=AABB, CC,112233 //Прописываем Mac адрес OBD ELM327.AT+CMODE=1 // Подключение модуля с фиксированным адресом

Заметьте, что mac-адрес вида: «AA: BB: CC:11:22:33» вводится как «AABB, CC,112233». MAC- адрес своего модуля ELM327 можете посмотреть, подключившись для начала на него со своего мобильника. (Стандартные пароли обычно: 1234, 6789, 0000).

Всё, настройка модуля Bluetooth закончена.

Теперь нужно Собираем схему Arduino, блютуз, lCD-экран 1.Начнем с подключения HC-05 Bluetooth модуля.1 — TX модуля засовываем в 7 Pin (Rx) арудины (именно TX в RX, не так как ранее); 2 — RX модуля засовываем в 8 Pin (Tx) арудины; 12 — Pin (3,3V) модуля в Pin 3,3V ардуины; 13 — Pin (Gnd) в Gnd арудуины; 34 — Pin мы никуда не подключаем (заизолируйте или отпаяйте). 2. Подключаем монитор LCD.VSS экрана к GND ардуины; VDD экрана к 5V ардуины; V0 экрана к центральному выходу резистора; RS экрана к 12 пину ардуины; RW экрана к GND ардуины; E экрана к 11 пину ардуины; DB4 экрана к 5 пину ардуины; DB5 экрана к 4 пину ардуины; DB6 экрана к 3 пину ардуины; DB7 экрана к 2 пину ардуины; A — к 5V ардуины; K — GND ардуины. Оставшиеся ноги резистора: одну пустить на GND ардуины, а вторую на 5V ардуины.Переменный резистор на 5кОм нужен, чтобы управлять контрастностью монитора, так что если при первом включении вы включите и ничего не увидите, попробуйте отрегулировать контрастность шрифта поворотом резистора.

3. Подключаем дополнительную кнопку для переключения экранов с данными.

[1 кнопка]: один конец от нормально-открытой кнопки подключаем в GND ардуино, а второй конец в пин 10.[2 кнопка]: GND + пин 9.

Бипер для звуковых предупреждений подключить по следующей схеме »+» к пину 13, а минус к GND ардуино.

Заливаем скетч в Arduino с помощью Arduino IDE Единственное, в скетче присутствуют переменные, которую нужно подправить.Нужно будет обязательно учесть три переменных:

1) ED=2.000 Например объем двигателя в литрах 1.398;2) VE=80.00 Объёмный КПД ДВС: обычно в районе 80 (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;3) tcorrect=1.014 (калибровка времени).4) delay_var=65 Время паузы между запросами в ЭБУ, в дастере например все работает уже на 65 мс, а в старом chrysler cirrus надо аж 235 мс ставить.5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/

Возможно, Arduino будет не точно считать время с помощью комманды millis ()… Тут только вручную корректировать значение. На экране «технологический 2» будет указаны секунды: например, time_start: 23. Сравните значение с реальным. Для примера засеките 10 минут, когда значение time_start будет, например, равно 23. И выйдет, что через 600 секунд реально покажет 605. Итого 623–605=18 секунд отставание в ардуинке. То есть поправочный коэффициент tcorrect будет равен 623/605=1,02975.

Управление [Кнопка 1], [кнопка 2] — листать экран вперед назад.При включении при надписи «Connecting»… держать [кнопку 1] вход в режим показывания технологических экранов и параметров отдаваемых ЭБУ в 16-чном формате. Если будете включать БК не в машине то нужно отключить функцию опроса блютуз, надо продолжать держать две кнопки при надписи «Recovery»… до появлении надписи «All off»…, а то экран будет все время пустой.[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.

Скетч Доступен по ссылке: pastebin.com/eP20LeXX (по умолчанию настройки в скетче на Рено Дастер 2.0)

Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.

UPD 04.03.15: Обновлен режим «торможение двигателем», теперь срабатывает по нагрузке двигателя, работает корректнее чем по Fuel System Status. Расход топлива теперь изменяется по топливным коррекциям Long и Short. Также добавлено множество других правок.UPD 26.02.15: Добавлен звуковой бипер. Если температура двигателя выше 102 градусов то вывести предупреждение о высокой температуре на экран и прогудеть бипером, так же будет звук при появлении ДжекиЧанаUPD 25.02.15: Добавлены экраны датчиков кислорода B1S1, B1S2.UPD 24.02.15: При включении БК проверяет есть ли ошибки двигателя. При их наличии пишет сколько ошибок в двигателе, и показывает код ошибки. Сброс доступен в режиме рекавери.UPD 23.02.15: Добавлен экран топливной коррекции.UPD 22.02.15: Добавлен экран очистки ошибок в режиме recovery. Для очистки ошибок зажать обе кнопки на 4 секунды.UPD 19.02.15: Добавил журнал общего пробега и потраченного бензина. Сброс — обе кнопки подержать 3 секунды.

Успехов!

Интересные ссылки по теме Все о блютуз модулях и их программировании; OBD-II_PIDs; Про расход, IMAP, MAP, MAF; Все о ELM327; ELM327 Scanmaster manual; Объёмный_КПД_двигателя_внутреннего_сгорания; Hobdrive forum; Подключение ЖКИ; Расчет расхода бензина; ПРО OBDII протокол; Про кратковременную и долговременную коррекцию; Датчики современной машины.Описание возвращаемых PID; Бедная или богатая смесь бензина и воздуха; Информация о EOBD; Про коррекцию топлива;

© Habrahabr.ru