OBD II интерфейс чрез Bluetooth


Модулът HC-05 позволява да се направи главна или подчинена връзка към съвместимо Bluetooth устройство (теоретично HC-06, който е само подчинен).
HC-05 се пилотира в AT команда. Той използва 3.3V, така че бъдете внимателни, ако го използвате с 5V arduino. В 3.3V това е много подходящо за карта STM32F401RE (тази, която използвам).

превозното средство

HC-05 има 2 режима на работа:

  • режим AT, който ви позволява да го конфигурирате,
  • режим на данни или прозрачен режим, който позволява директно изпращане на данни по серийната връзка.


За да изберете един от 2-те режима, модулът има щифт, наречен KEY, който ви позволява да превключвате от един режим в друг. В нашия случай трябва да стартираме модула в режим AT, след което след свързването с Bluetooth модулът автоматично ще премине в режим на данни. След това няма нужда да се връщате в режим AT, тъй като ще бъдем свързани към OBD устройството и в диалог с автомобила.

  • AT режим: ключ = 1
  • Режим на данни: ключ = 0

Има 2 версии на HC-05 карта: една с щифт "KEY" и една без. по-добре е да си купите модул с този щифт. Ако вашият модул го няма, трябва да запоявате проводник на свързващ щифт на самия Bluetooth модул: (щифт 34 горе вдясно)


За да осъществите връзка, трябва да извлечете Mac адреса на Bluetooth модула, с който искате да комуникирате.

Тогава последователността, която трябва да се изпълни в AT команда (KEY = 1), е както следва:

Скрипт за свързване с Bluetooth модул


Всеки ред трябва да завършва с "\ r \ n", в противен случай командите няма да бъдат взети под внимание от модула HC-05.
В края на тази поредица от команди, ако адресът на Mac е правилният (тук 88: 18: 56: 68: 98: EB), трябва да сте свързани с вашия Bluetooth модул HC-06 slave или друг (тук OBD модул и по-специално ELM327).

Отсега нататък трябва да превключите в прозрачен режим, а именно, че за да комуникирате с отдалечения подчинен модул, трябва да зададете ПИН "KEY" на 0.

OBD и ELM327


ELM327 е чип, посветен на OBD протокола. Той се използва за свързване на различните шини на OBD конектора към една серийна комуникационна връзка.
ELM327 работи в 2 режима:

  • AT режим: това са специфични команди за конфигуриране на ELM327 (например конфигурацията на използвания CAN протокол) или за изискане на определени конкретни параметри, като например напрежението на батерията например
  • OBD режим: това е определен синтаксис, който позволява четене/запис на OBD стойности. Тези команди ще се използват за четене на скорост, обороти на двигателя и т.н.

Първата стъпка е да се инициализира ELM327:

Преди да можете да комуникирате с ELM327 и той да може да инициализира протокола с компютъра на вашето превозно средство, препоръчително е да стартирате автомобила. При някои превозни средства двигателят трябва да се стартира, а при други запалването в режим на аксесоари е достатъчно.


За да комуникирате с компютъра, трябва да посочите протокола, който да се използва, който трябва да бъде този на превозното средство. В случая с моя Renault Lagune 2 това е протокол 5 (БЪРЗО).

  • 0 - Автоматично
  • 1 - SAE J1850 PWM (41,6 kbaud)
  • 2 - SAE J1850 VPW (10.4 kbaud)
  • 3 - ISO 9141-2 (5 in boud init, 10.4 kbaud)
  • 4 - ISO 14230-4 KWP (5 in boud init, 10.4 kbaud)
  • 5 - ISO 14230-4 KWP (бързо иницииране, 10.4 kbaud)
  • 6 - ISO 15765-4 CAN (11 битов ID, 500 kbaud)
  • 7 - ISO 15765-4 CAN (29 битов ID, 500 kbaud)
  • 8 - ISO 15765-4 CAN (11 битов ID, 250 kbaud)
  • 9 - ISO 15765-4 CAN (29 битов ID, 250 kbaud)
  • A - SAE J1939 CAN (29 битов ID, 250 * kbaud)
  • B - ПОТРЕБИТЕЛ 1 CAN (11 * битов ID, 125 * kbaud)
  • C - ПОТРЕБИТЕЛ2 CAN (11 * битов ID, 50 * kbaud)

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


Командите за изпращане са:

Скрипт за инициализация на ELM327

Всеки път, когато е изпратена команда, завършваща с "\ n", ELM327 връща отговора си в текстов формат и завършва този отговор с ">". Това е подкана, указващ, че може да бъде изпратена нова поръчка.

След като инициализацията приключи, можем да преминем към сериозни въпроси: четене на информацията за OBD.

Можете да потърсите в документа ELM327 протокола на страница 30-31, за да разберете по-добре, но ето обобщение:

За да прочетете OBD данни, трябва да знаете в кой режим искате да работите: (информация, взета от wikipedia):

  • 01 Показване на текущите данни
  • 02 Показване на данни за замразяване на кадрите
  • 03 Показване на съхранените диагностични кодове за проблеми
  • 04 Изчистване на диагностични кодове за проблеми и съхранени стойности
  • 05 Резултати от теста, мониторинг на кислородния сензор (не само CAN)
  • 06 Резултати от тестове, мониторинг на други компоненти/системи (резултати от тестове, мониторинг на кислороден сензор само за CAN)
  • 07 Показване на чакащи диагностични кодове за проблеми (открити по време на текущия или последния цикъл на шофиране)
  • 08 Управление на работата на бордовия компонент/система
  • 09 Поискайте информация за автомобила
  • 0A Постоянни диагностични кодове за неизправности (DTC) (изчистени DTC)