Переделка elm327 под форд

Обновлено: 18.05.2024


Схема Тестирование Электроника Моделирование

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

title_pic

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

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

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

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

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

obdsim-gui2

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

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

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

vlcsnap-2021-07-13-22h53m16s266

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

hc06

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

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

hc05

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

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

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

scheme1

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

scm_bb

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

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

hc05_pins

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

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

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

dispaly00001

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

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

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

dispaly00002

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

dispaly00003

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

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

dispaly00004

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

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

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

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

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

Читайте также: