Ардуино obd2 сканер своими руками

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

.collapse»>Содержание

UPD 27.12.2017: Решил дополнить статью что проект был доработан другим пользователем, улучшен скетч в плане автоматической задержки, восстановления связи в случае разрыва соединения и много других нюансов… спасибо. Oleg его почта для вопросов: 2003shef@gmail.com

Его комментарии к переработке:

1.вся проводка и соединение всех модулей и узлов сохранены из первоначального проекта.(кроме подключения блутуз модуля, он теперь на серийном порте «1»)

2.программа жестко заточена под ардуино МЕГА 2560. на серийном порте «0» присутствует Дебаг при условии раскоментирования дефайна.

3.убран параметр задержки между опросами, задержка полностью интелектуальна и динамична, новый запрос не отправится пока не будет получен ответ на предыдущий с учетом таймаута.

4.добавлена функция восстановления связи в случае разрыва соединения (параметром потери связи служит отсутствие оборотов двигателя).

5.для работы требуется библиотека OBD.h вложенная в архив с проектом, этот экземпляр имеет несколько изменений от оригинала который можно скачать из интернета, и без неё скорее всего проект не будет работать или будет нестабилен.
папку нужно скопировать в папку » \Documents\Arduino\libraries»

Android приложение со всеми нюансами в Google Play: OliviaDrive

Мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный бензин за поездку, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое.







Список требуемых деталей для сборки БК

2) LCD2004 жк-модуль

3) Модуль Bluetooth HC-05

4) OBD ELM327 Bluetooth сканер

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

Настройка блютуз модуля 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 1.0.6 (использовал эту версию) и заливаем скетч через USB порт в плату.

#include
SoftwareSerial BTSerial(6, 7); // TX | RX
void 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 вместе.

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

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

Заметьте, что 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 ардуины.

Переменный резистор на 10кОм нужен, чтобы управлять контрастностью монитора, так что если при первом включении вы включите и ничего не увидите, попробуйте отрегулировать контрастность шрифта поворотом резистора.

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

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

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

Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).

Единственное, в скетче присутствуют переменные, которую нужно подправить.

Нужно будет обязательно учесть три переменных:

1) ED=1.998 Например объем двигателя в литрах 1.398;
2) VE_correct=1.0; Корректировка объёмного КПД ДВС по таблице: (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;
5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/

Управление

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

[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.

Скетч:

Старый скетч был удален в плане многих дефектов в работе… новая версия по ссылке вверху статьи… он был доработан пользователем Oleg, спасибо ему большое. его почта для вопросов: 2003shef@gmail.com

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

Источник

Ардуино obd2 сканер своими руками

Появилась идея реализовать визуализатор для данных собираемых автомобильным OBD2 адаптером на базе ELM327 с поддержкой BlueTooth соединения. Хотелось обойтись без использования TorqueLite/Pro и прочих программных компонент, требующих наличие телефона.

Взаимодействие и считывание было решено организовать с помощью Arduino Nano. Платка маленькая, большое число готовых библиотек для реализации задумки, а так же возможно питание от аккумулятора 12-ю вольтами. Т.к ток потребления сравнительно не большой, то перегрева внутреннего стабилизатора не должно быть. В крайнем случае можно поставить внешний стабилизатор до 7 вольт с радиатором, а далее уже внутренний стабилизатор на плате справится без перегрева.

Для взаимодействия был выбран модуль BlueTooth HC05/06. Все имелось в наличии, поэтому поле для экспериментов было открыто.

По задумке управляться устройство должно следующим способом:

  • сенсорная кнопка, нет дребезга и не требует усилий при нажатии.
  • переключатели, для отключения питания и принудительного сброса сохраненных настроек.

Первым делом возник вопрос, а ка же проверять работоспособность схемы и программы, не гонять же постоянно автомобиль. И решение было найдено, есть программа эмулятор, которая успешно запустилась под Windows 10. Программа называется OBDSim — https://icculus.org/obdgpslogger/obdsim.html.

Выглядит при запуске примерно вот так:

И может подцепиться при запуске к COM порту. Запускать нужно в командном окне, командой:

ну или тем COM портом, который создался при сопряжении с блутуз адаптером. Сам процесс сопряжения показан на видео в конце статьи.

Изначально была проведена операция сопряжения obdsim с TorqueLite, чтоб убедиться, что сопряжение работает и команды посылаемые в obdsim и ответы, воспринимаются корректно. Испытания прошли успешно, программа показала, что все изменения на телефоне воспринимаются корректно и любой изменение датчика в obdsim тут же отображается в TorqueLite.

Это был первый этап — проверка. Второй этап — компьютер с obdsim выступает в роли мастера, а arduino nano в связке с HC06(который может быть только в роли slave) в роли ведомого.

Для arduino nano была набросана простая программа с использованием ELMDuino и вновь симуляция закончилась успехом. Весь процесс соединения и работы устройства показан на видео в конце статьи.

И третий этап — это окончательная реализация визуализатора на HC05 в режиме master.

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

Была найдена библиотека, которая с небольшими изменениями (перевел ее с Serial, на SoftwareSerial) отлично заработала в проекте.

Окончательная схема получилась такая:

и примерно так выглядит на макетке:

только аккумулятор 12В.

На HC05 я напаял два проводка на выходы 34 — CMD и выход 11 — RESET.

И эти проводки были подсоединены к микроконтроллеру для перевода HC05 в режим передачи данных или в режим приема команд, а так же для жесткого сброса (hardReset).

В режиме команд МК посылает HC05 следующие команды:

Данный набор команд ищет все видимые устройства и по очереди показывает MAC адреса данных блутуз устройств на дисплее.

Если за время отображения адреса нажать на сенсорную кнопку, то адрес запишется в постоянную память микроконтроллера и HC05 будут отправлены следующие команды:

После данного набора команд в Windows 10 появляется окошко с запросом пароля и устанавливается сопряжение. В автомобиле же в ELM327 просто устанавливается сопряжение. Работа данного устройства также показана в видео в конце статьи.

Далее HC05 сбрасывается командой HardReset и переводится в режим обмена данными. С этого момента перебираются различные скорости для SoftwareSeria от 4800 до 38400.

Как только сопряжение визуализатора и ELM327 или obdsim произошло, сразу отображается дисплей с отображаемым параметром:

Короткое однократное нажатие на сенсорную кнопку переключает следующий отображаемый параметр.

Долгое нажатие на сенсорную кнопку (более 5 сек, в этот момент светодиод начинает мигать) отображает экран со всеми доступными для считывания параметрами:

При выключении запоминается какой параметр отображался и на какой скорости осуществлялась связь с ELM327.

На текущий момент вот доступные для считывания параметры OBD2:

Вот сам код для Arduino IDE. Для сборки необходимо установить библиотеки:

  • Adafruit_GFX_Library
  • Adafruit_SSD1306
  • BluetoothHC05 — https://github.com/BayRepoOrg/Bluetooth_HC05
  • ELMDuino
  • U8g2_for_Adafruit_GFX
  • U8g2
  • GFX_Library_for_Arduino

Все библиотеки есть в стандартном менеджере библиотек, кроме BluetoothHC05, которая скачивается с указанного репозитория.

Для сброса запомненных данных: адреса блутуз устройства и скорости, нужно отключить питание визуализатора, и законнектить переключателем присоединенным к ножке d12 контроллера на землю и включить визуализатор, данные мгновенно будут стерты из памяти. Обратное отключение питания и отключения земли от ножки D12 вернет МК в стандартное рабочее состояние и он снова начнет искать доступные BlueTooth устройства.

Источник

Adblock
detector