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)