USB - Bluetooth мультипротокольный OBD II адаптер
на OBD - UART интерпретаторе STN1170
с гальванической развязкой.
Версия 1.0 USB.

ВНИМАНИЕ!!!
Данный проект не является коммерческим. Все материалы в настоящей статье предоставляются "как есть". Автор не несёт какой бы то ни было ответственности за использование его проекта в личныx или коммерческих целях. Исключительное право на копирование и тиражирование материалов статьи имеет её автор, а также компании OBD Solutions LLC и Scantool.net LLC.


..Немного предыстории:
В 2007 году я приобрёл адаптер ELMScan 5 Bluetooth от Scantool.net LLC который имеет два интерфейса связи с ПК: старый добрый COM порт и Bluetooth. Построен он на знаменитом процессоре ELM327 и использовался мной в связке с программой ScanXL Professional от Palmer Performance Engineering INC. Вся эта фиговина, конечно меня устраивала, но.. Как и полагается, началось "перелопачивание" интернета на предмет поиска оборудования, позволяющего устанавливать связь с ECU автомобиля по протоколу J2534. Было уделено внимание адаптеру Tactrix Open Port 2.0 ну и другим "приблудам". Но как порядочный клиент я решил задать вопрос в Scantool.net, имеют ли они на настоящий момент готовые решения, чтобы не "городить" и не "тулить горбатого к стенке". Они написали, что мол, обратись на форум, там тебе ответят разработчики-инженеры. Ну вот и написал я... Результатом стал ! русскоязычный ответ и содержал он рекомендацию посетить сайт Ford Focus Club, где коллектив энтузиастов разработал и собирает так называемые "клубные" адаптеры, основой которых является OBD - UART мультипротокольный интерпретатор STN1170. Это микроконтроллер PIC24HJ128GP504-I/PT. Производитель - Microchip. Но самое главное, естественно - это микропрограмма, находящаяся внутри, в которой реализованы функции обработки RS232 запросов от диагностического ПО и трансляцию их в управляющие сигналы для интерфейсов OBD II, а также приём данных от интерфейсов OBD II и трансляцию их в сигналы RS232 для диагностического программного обеспечения.
Информация для тех, у кого может возникнуть мысль о попытке самостоятельного программирования контроллера PIC24HJ128GP504-I/PT: Микропрограмма является интеллектуальной собственностью фирмы Scantool.net LLC и не существует "в природе" отдельно от контроллера. Акцентирую внимание на этом факте потому, что в моей почте имело место письмо с мыслями о самостоятельном програмировании MCU...STN1170. Внешний вид.
С документацией и описанием интерпретаторов семейства STN11ХХ можно ознакомиться на официальном сайте Scantool.net LLC или на сайте разработчика микропрограммы: OBD Solutions
Посещение сайта Ford Focus Club и ознакомление непосредственно с сабжем стало отправной точкой событий, конечным результатом которых стала эта статья.
В общем и целом изучив описание и документацию я понял, что набрёл на очень нехилую штуковину, но сборка её потянет денег, нервов и времени. Но глаза боятся, а руки, как говорится, делают. Все препятствия были преодолены. Поставленные перед собой техзадания выполнены. В свежеизготовленном адаптере при включении ничего не задымилось и при подключении к различным автомобилям, без перемычек, перерезания дорожек и навешивания дополнительных проводников отработаны все протоколы, т.е. изготовление произошло "в один проход". Сначала была мысль изготовить точно такой же адаптер как делают в Ford Focus Club, тем более что его разработчики любезно предоставили мне свою версию файла печатной платы устройства. Но не тут-то было.. Да может оно и к лучшему. Дело в том, что разработанный в Ford Focus Club адаптер собирается на элементной базе SMD типоразмера 0805, 0603 и местами.. 0402. У меня возникли затруднения с приобретением типоразмера 0402, а также кварцевого резонатора GEYER KX-9A. Было принято решение применить типоразмер 1206 и сделать собственный вариант печатной платы. Тем более что размеры адаптера были для меня некритичны. Также было решено реализовать гальваническую развязку и усовершенствовать секцию ISO9141-2, применив в ней вместо транзисторных ключей специализированный драйвер К и L линий MC33199D. Этот драйвер был использован мной в предыдущем, более простом K-L адаптере и зарекомендовал себя с очень хорошей стороны.
...Нет смысла начинать проект не имея главного компонента - микропроцессора STN1170, поэтому я связался со Scantool.net и начал выяснять, как бы мне купить и заполучить хотя бы один экземпляр. Получив ответ я просто офигел. Они написали что могут подарить мне ТРИ экземпляра в качестве рекламы!!! Вобщем 16 июня 2013г. я отправил им свои реквизиты а в конце июля мне уже пришли процессоры из США! Параллельно, в с-Петербурге, в фирме Advanced Electronics были заказаны такие узкоспециализированные и поэтому имеющие трудность приобретения элементы как: NCV7356; PESD1CAN; MMBZ27VCLT1; BAT54SW; MMBT3640; MMBT3646. Эти комплектующие "приехали" в середине августа. Осталось самое эротичное: печатная плата. Пока "ехали" процессоры и комплектующие я без дела не сидел, а проектировал плату. Пришлось попотеть, но вроде как с горем пополам и эта часть проекта была доведена до конца. Многократными проверками ошибок выявлено не было. Получилось всё достаточно плотно. Но вот тут произошла небольшая, но полезная заминка. Дело в том, что я уже сравнительно давно для своих проектов платы самостоятельно не делаю, за редким исключением. Потому что забросил обыкновенный монтаж и делаю всё в SMD. Потому что "в лом". Потому что известная на просторах интернета "ЛУТ" - лазерно-утюжная технология ИМХО - дрочка с песней.. Потому что на радиорынке есть человек, который за адекватные деньги делает неплохие платы промышленным способом. И вот тут-то и произошёл "прокол". Он посмотрел на мой эскиз и сообщил, что нужно увеличить внешний диаметр проходных отверстий, иначе их допотопное оборудование может "промазать" сверлом мимо. Что повлекло бы за собой переразводку платы. Нервов на это у меня уже не было и я нашёл у нас в городе фирму, которая, к моей радости, посмотрев эскиз сообщила мне что моя плата для них "дубовая".. Что это 3-й класс. А они могут сделать 5-й, многослойный. Короче, заплатив за две двусторонние, с зелёной маской, 100х60мм платы "космические" (а что делать?) 2133 рубля я получил через 10 дней готовые ..4! платы. 2 платы, типа, бонус!. Когда я взял их в руки, понял, что ребята жуют свой хлеб недаром!! Собственно что говорить? Смотреть надо: Завод печатных плат "Электроконнект" У них сертификация Росатома, Роскосмоса, Военного регистра. Всё! Вопросов.net! Ну вот собственно и вся предыстория. Затем последовала сборка и полевые испытания, которые, как и описывалось выше, прошли без сучка и задоринки.

Принципиальная схема v1.0:

OBD-2 адаптер STNScan v1.0 Принципиальная схема.

Интерфейс связи c ПК выполнен на USB - UART преобразователе FT232RL. Обмен данными UART с STN1170 осуществляется по линиям RXD, TXD. Сигнал линии #DTR выполняет аппаратный сброс микропроцессора в момент открытия порта. Сигнал линии CBUS04 внутренней служебной шины UART используется для вывода микропроцессора STN1170 из спящего режима.
USB UART FT232RL питается от шины USB и электрически связан только с ПК. Для гальванической развязки с бортовой сетью автомобиля использованы цифровые изоляторы от Analog Devices - ADuM1100AR. Это схемотехническое решение я применил впервые в ISO9141-2 адаптере описанном здесь и IMHO, в целях безопасности, а также сохранности диагностического оборудования и ECU, гальваническая развязка обязательна для такого оборудования как диагностические интерфейсы. Приёмник линии RXD UART и передатчики линий TXD, #DTR, CBUS4, питаются также от шины USB. В свою очередь, передатчик линии UART_TX STN1170 и приёмники линий UART_RX, RESET, SLEEP запитаны общим с STN1170 напряжением 3,3в.
Секция питания выполнена на регуляторах напряжения VR1 и VR2, соответственно на напряжения 3.3 и 5.0в. На элементах F1; VD1; TVS1; выполнена защита от переполюсовки при подключении адаптера к бортовой сети автомобиля и превышения, а также бросков питающего напряжения. Цепь R5,R6 - делитель для подачи на вход ANALOG_IN микроконтроллера потенциала, по величине которого рассчитывается напряжение питания бортовой сети автомобиля.
Полевые транзисторы Q1-Q3 - ключи, управляющие питанием схемы в режиме сна. Функционирование системы Power SaveTM описано в документации на STN1170.
Переключатели SW1, SW2 служат для подачи питания на микроконтроллер на время обновления прошивки через USB без подключения к бортовой сети автомобиля.
Кнопка BTN1 "Reset" выполняет аппаратный сброс микропроцессора. Нажатие кнопки BTN2 "Reset NVM" и удержание её более 5 секунд в нажатом состоянии возвращает заводские настройки процессора. Такая ситуация, например, может возникнуть при установке максимальных критических скоростей обмена данными между процессором и USB UART, в результате чего может быть потеряна связь с программой - терминалом RS232.
Cекции шин SW CAN, HS CAN, MS CAN собраны на специализированных CAN трансиверах. Секция ISO9141-2 - на специализированном драйвере K и L линий MC33199D. Микросхема IC8 инвертирует сигналы между STN1170 и ISO9141-2 драйвером. Разработчики STN1170 изначально предусмотрели использование транзисторных ключей NPN для управления K и L линиями, поэтому входные и выходные сигналы ISO_RX, ISO_K_TX, ISO_L_TX для корректной работы с MC33199D пришлось инвертировать.
Секция J1850 содержит два компаратора, регулятор напряжения и дискретные элементы. Особое внимание стоит обратить на то, что транзисторы MMBT3640 и MMBT3646 отличаются очень малым временем переключения и их можно заменять только либо на аналогичные либо с более высоким быстродействием.
Выходы секций связи с ECU выведены на разъём DRB15M, к которому подключается главный кабель OBD. Кабель используется самодельный, разводка пинов DRB15M якобы такая же как и у кабеля от сканера Launch X431. Соответствие пинов DRB15M=>J1962M найдено на просторах интернета.
Особенности кабеля:
Линии K; L; выполнены одинарными проводами. J1850BUS+; J1850BUS-, шины MS CAN и HS CAN - витой парой. Шина SW CAN - также, витая пара. Один провод - SW CAN H от вывода CANH трансивера NCV7356. Второй - земля.

Распиновка кабеля:
Кабель OBD-2. Распиновка.
Фото готового адаптера версии 1.0:

Адаптер STNScan v1.0 Верхний слой монтажа. Адаптер STNScan v1.0 Нижний слой монтажа.



Версия 1.1
USB - Bluetooth.

В этой части статьи описывается следующая, окончательная версия адаптера, оснащённого помимо интерфейса USB, дополнительным беспроводным интерфейсом связи с ПК, реализованным с помощью технологии Bluetooth. Этот интерфейс используется преимущественно в том случае, когда с помощью адаптера производится диагностика автомобиля и стабильность соединения с ECU некритична. Хочется отметить скорость работы адаптера на STN1170 подключенного по BT в сравнении с фирменным ELMScan 5 Bluetooth на ELM327. Оба адаптера подключались к автомобилю программой ScanXL Professional. STN1170 демонстрирует примерно пятикратный прирост производительности по сравнению с ELM327. Это особенно заметно когда используется режим мониторинга или записи сразу нескольких параметров двигателя.

Принципиальная схема v1.1BT:

OBD-2 адаптер STNScan v1.1BT Принципиальная схема.

Нумерация элементов схемы версии 1.1 отлична от версии 1.0!

Первое чего коснулись изменения - схемотехники гальванической развязки. В версии 1.1 четыре изолятора ADuM1100AR заменены на один, четырёхканальный - ADuM1401CRWZ, обладающий функцией перевода входов и выходов в тристабильное состояние. Также, кварцевый резонатор HC49S-SMD заменён на Geyer KX-13. Эти изменения позволили оптимизировать печатную плату и разместить на высвободившемся месте разъём подключения ВТ модуля, ключ управления его питанием и тристабильный буфер NL17SZ125DTT1G.
Интерфейс Bluetooth, при подключении адаптера к USB деактивируется. Радиомодуль обесточивается, а его вывод TXD, с помощью неинвертирующего тристабильного буфера IC3 отключается от линии UART RX микропроцессора STN1170. Управление питанием ВТ модуля реализовано с помощью ключа, имеющего оптическую развязку от шины USB и состоящего из оптопары IC1 и транзистора Q1. Также с этого ключа снимается управляющий сигнал для перевода в тристабильное состояние входов и выходов изолятора IC4 при работе через ВТ интерфейс.
Теперь хотелось бы уделить внимание собственно BТ интерфейсу и тому незабываемому "сексу", которым я был по самое нехочу обеспечен в результате тесного контакта с этой замечательной технологией:):)

Сначала был приобретён модуль SPBT2632C2A от ST Microelectronics.

SPBT2632C2A

Попытка "внедрить" его в схему, подчинить своей воле и заставить работать так как надо сопровождалась множественными "половыми контактами", матом средней и крупной "этажности", прочими прелестями, и окончилась тем, что этот модуль занял почётное место в коробочке на полочке. Может быть я его применю когда-нибудь, где-нибудь. Но только не с STN1170. После этой "Bluetooth -прелюдии" я приобрёл некий полезный запас знаний в этой сфере, но несмотря на это всё же видать недостаточный, если я продолжил свои опыты с модулем

BLE112 от Bluegiga.

BLE112

Учитывая ранее приобретённый опыт, секс с этим модулем был совсем коротеньким. Модуль был положен в ту же коробочку что и первый.. И вот решил я обратиться к друзьям нашим, китайцам. И попробовать модуль из серии HC-04 - HC-07. Благо стоит сие изделие в районе 300-400р. Да и хвалят его. Ну вот и заказал на E-Bay и сижу жду. А дело-то к Новому Году идёт.. А почта - то наша родная, да ещё и в предновогодние и посленовогодние дни работать будет плохо.. мягко выражаясь..
Лопнуло моё терпение, Ай Гоу Ту Авито.ру и покупаю там китайский ELM327 с блютусом. Раскурочил его, выдрал оттуда, конечно же вышеупомянутый модуль, присобачил к своей макетной плате.

HC-06

И вот он, момент истины! Как говорится в рекламе: "неизменно превосходный результат". Всё сразу заработало как надо.
Ну хватит лирических отступлений. Теперь рассмотрим вышеописанную ситуацию, но уже с технической точки зрения. Может кто - нибудь, в результате прочтения не набьёт себе шишек подобных моим..


Неприятности начались с использования самого первого модуля SPBT2632C2A. Когда я смонтировал его на макетную плату он сразу связался с ПК, да и данные он передавал-принимал отлично. Но, в бочке мёда, как всегда присутствует ложка дёгтя: В момент включения питания, после "перемигивания" светодиодов HostAct, OBDAct и др. через 3 секунды начинает непрерывно мерцать светодиод HostAct с частотой около 20-25 Hz. И никакие действия не изменяют ситуацию пока физически не отключить друг от друга, например, выводы TX Bluetooth модуля и UART_RX STN1170. То есть электрически разорвать связь. Мерцание сразу же прекращается. После восстановления разорванного соединения, пара: "BT модуль - STN1170" входит в нормальный режим работы. Можно работать с микропроцессором через терминал сколько угодно долго. Можно, например, подключиться к автомобилю через Scan Master и "задиагностировать" его до умопомрачения. Но как только закрываешь программу - терминал или Scan Master, мигание возобновляется и нужно снова выполнять аппаратный сброс модуля или выключить-включить питание, а затем разомкнуть-замкнуть вышеупомянутую цепь.
Несколько позднее была установлена причина этого явления. Дело в том, что во многих ВТ модулях, через UART, помимо передачи данных, реализован так называемый HCI (Host Controller Interface). То есть с помощью AT команд пользователь или микропроцессор может изменять, если это необходимо, конфигурацию модуля, его выходную мощность, правила установки связи, имя устройства, пароль и другие системные настройки. После подачи питания на модуль активируется режим HCI и остаётся активным до установления связи по радиоканалу с другим устройством. UART интерфейс при этом переходит в режим пересылки данных. После разрыва связи по радиоканалу модуль снова возвращается в режим HCI. В случае с SPBT2632C2A происходит следующее. Через 3 секунды после подачи питания модуль активирует HCI, выдавая на UART сообщение о том, что он находится в режиме приёма AT команд и сообщая свой физический адрес:

HC-06

Микропрограмма STN1170, интерпретирует это сообщение как некие данные, неадекватно реагирует на них и даёт сбой.
Модули линейки HC-XX, в свою очередь, активируют режим HCI без выдачи на UART какой-либо информации об этом и работают с STN1170 корректно. Таким образом, к сожалению, продвинутый модуль не подходит для реализации Bluetooth интерфейса в описываемом адаптере..
Кстати, немного о HCI изображённого выше модуля. Внешне этот модуль похож на устройства из линейки HC-XX, но как оказалось, от HC-XX у него только внешний вид... Попытки использовать его HCI окончились безуспешно. По всей видимости это наиболее возможно дешёвая версия HC-XX модуля, а возможно и клон, в микропрограмме которого HCI просто не предусмотрен.
Также хотелось бы, хотя это напрямую и не относится к вопросам автодиагностики, но всё ж касается "блютузизации РФ", сказать несколько слов о ВТ модуле BLE112.
Нефиг размазывать сопли, нужно сказать, что продукция Bluegiga, даже на ощупь, не говоря уже о характеристиках, отличается своей "крутонавороченностью". Ассортимент у них неслабый. Встречаются даже модули, которые могут в паре с аналогичным работать на расстоянии до 1000м. Интерфейсов разнообразных валом, назначение - на любой вкус и цвет. Вобщем ничего не скажешь, круто! Встречаются изделия, обладающие превосходной программной гибкостью. Вот например модуль BLE112 поставляется с завода "пустой", без прошивки. На сайте Bluegiga разработчику доступно программное обеспечение, с помощью которого он может разработать прошивку, отвечающую требованиям его техзадания и затем скомпилировать её в бинарный файл, которым и прошивается модуль. Вот именно таких два модуля я и приобрёл себе "в подарок".. Ну тут только остаётся вспомнить высказывание: "Не ошибается тот, кто ничего не делает". Может когда-нибудь они мне сослужат службу:):)

Теперь хотелось бы подробнее остановиться на применённом в версии 1.1 адаптера BT модуле HC-07. Это описание и инструкция по конфигурированию модуля есть не что иное, как обобщение, упорядочивание и подача в удобоваримой форме найденной на просторах инета разнообразнейшей информации, порой размещённой в каких-то извращённо-гипертрофированных формах :);):)
Техническая информация о модуле:
Чипсет: CSR BC4 + 8MB Flash.
Напряжение питания: 1,8 - 3,3V
Поддержка технологии Bluetooth спецификации 2.0 c EDR. Совместимость с аналогичными модулями.
Работа только в режиме Slave. При перепрошивке якобы возможна работа в режиме Master. Изменяя прошивку модуль якобы можно "превратить" в модули от HC-04 до HC-07. Это для энтузиастов. В инете есть схемы программаторов, прошивки, методики. Google и Яндекс, как говорится "в помощь"..
Поддерживаемые скорости UART: 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600; 1382400 бод.
Асинхронный режим передачи данных max скорость 2 Mbit.
Пользователь по мере надобности может изменить BT имя модуля, скорость обмена с UART, PIN модуля. Для реализации этих нехитрых манипуляций возможно подключение к модулю в режиме HCI (Host Controller Interface) с помощью UART FT232RL или аналогичного UART. В этом режиме модуль находится с момента подачи на него питающего напряжения и до момента соединения по радиоканалу с Master устройством. При этом часто мигает светодиод индикации режимов работы модуля. При установке связи с Master устройством световая индикация меняется с импульсной на постоянную.

Подключение к HCI модуля реализуется в соответствии со следующей схемой:

Схема для работы с HCI интерфейсом.

Необходимо заметить, что во избежание "секса":):) при конфигурации модуля нужно подавать на него питание от той же цепи, от которой питается USB-UART. Иначе неизбежны "глухота" и "немота" модуля, и как следствие, ненормативная лексика пользователя различной этажности:):).
Для связи с модулем в HCI режиме используется любая подходящая программа - терминал RS232. Можно использовать Termite, Advanced Serial Port Monitor или что-либо другое. Здесь имеют место небольшие подводные камешки, которые необходимо описать:
1. Терминал должен позволять отключить признаки конца приёма/передачи, такие, например, как СR; LF и 0D; 0A соответственно.
2. Команды должны отсылаться целиком. Например, в строке набирается команда AT без параметров и потом нажимается кнопка "послать". Ответ ОК на принятую команду приходит примерно через 0,8 - 1 сек.
3. Команды должны набираться заглавными буквами. Прописные прошивка модуля "не понимает".
4. Для применения изменений необходимо обесточить модуль и снова подать на него питание.
Команды HCI режима:
AT Проверка связи с модулем. Ответ: OK.
AT+VERSION Отображает версию прошивки модуля. Ответ: OKlinvorV1.x
AT+BAUDx Установка скорости UART. Где x - число от 1 до С (hex). Соответствует скоростям указанным выше: 1=1200 бод;......С=1382400 бод. Ответ, например: OK38400.
AT+NAMExxxx где xxxx - новое имя модуля. Ответ: OKsetname.
AT+PINxxxx где xxxx - новый PIN. Ответ: OKsetPIN.
Собственно здесь, описание этого, бесспорно замечательного модуля можно и завершить.

Ну и напоследок фото всей этой описанной "лабуды" "в железе":)

Макетная плата, на которой отлаживалась версия 1.1

Макетная плата v1.1BT

Печатные платы v1.1.

Печатная плата V1.1BT верхний слой. Печатная плата V1.1BT нижний слой.

Плата Bluetooth модуля в сборе.

Плата BT модуля в сборе. Обратная сторона платы BT модуля.

Плата адаптера в сборе.

Плата адаптера v1.1BT в сборе. Верхний слой. Плата адаптера v1.1BT в сборе. Нижний слой.

С Вluetooth модулем.


Плата адаптера v1.1BT c установленным BT модулем. Плата адаптера v1.1BT c BT модулем.

Готовый адаптер в корпусе, с кабелем.

STNScan V1.1BT с кабелем.

Интересующимся и желающим получить дополнительную информацию, или пообщаться на эту тему - вэлкам на Ford Focus Club, в тему или в личку или же scan11@yandex.com

Благодарности
Людям:
Digital-Cj. Участник форума Ford Focus Club. Технические консультации.
ittrium. Участник форума Ford Focus Club. Технические консультации.
Chris Fincher. Инженер компании "Scantool.net LLC". Рецензирование схемы, Технические консультации.
Фирмам:
"Scantool.net LLC". США, г. Феникс, штат Аризона. Процессоры STN1170.
"Advanced Electronics". Россия, г. c-Петербург. Поставка SMD комплектующих.
"Терраэлектроника". Россия, г. Москва. Поставка SMD комплектующих.
"Электроконнект". Россия, г. Новосибирск. Завод печатных плат.

Июнь 2013 - февраль 2014г.
Россия, Ростов-на-Дону.
Scan Service Electronics Lab® by scan11
e-mail: scan11@yandex.com



P.S.

Доступна статья с описанием адаптера STNScan обновлённой аппаратной версии 2.0BT c использованием более высокопроизводительного микроконтроллера STN2120.

Ссылка на статью: USB - Bluetooth мультипротокольный OBD II адаптер STNScan с гальванической развязкой на OBD-UART интерпретаторе STN2120.

Назад.

На главную страницу.