В связи с установкой по городу камер, фиксирующих нарушение скоростного режима решил сделать себе устройство, которое меня дисциплинировало. Это была моя первоначальная идея, затем аппетит у меня начал приходить по мере вникания в эту тему. Так как мне интересно разобраться в этой проблеме, я отверг стандартные гаджеты и решил придумать что-то свое. Долго собирал информацию на просторах интернета, форумов решил немного поделиться и рассказать простым языком о возможностях что можно извлечь из мозгов машины. Сразу оговорюсь: главный принцип — не навреди машине. Из этих соображений решил использовать диагностический разъём машины с протоколом обмена по блютузу. Для начала изучил в википедии (ipfs.io/ipfs/QmXoypizjW3W…uco/wiki/OBD-II_PIDs.html) возможности OBD II. Захотелось простым способом из этого протокола собирать нужную информацию. Оказалось, что каждая машина имеет доступ не ко всем параметрам OBD II. Наличие доступных параметров выдаётся по запросу (00Н). Сделав запрос, я получил ответ
41 00 BE 1F B8 11
Код (BEH) расшифровывается (расшифровка в википедии) и простой доступ по блютузу у меня доступен к :
1. Расчетная нагрузка двигателя. (04H)
2. Температура охлаждающей жидкости двигателя. (05H)
3. Кратковременная корректировка топливоподачи — банк 1. (06H)
4. Долгосрочная корректировка топливоподачи — банк 1 . (07H)
5. Обороты двигателя. (0CH)
6. Скорость автомобиля. (0DH)
7. УОЗ. (0EH)
8. Температура всасываемого воздуха. (0FH)
9. Расход воздуха MAF.(10Н)
10. Положение дроссельной заслонки. (11Н)
11. Наличие датчиков кислорода. (13Н)
12. Датчик кислорода 1 A: Напряжение B: Кратковременная корректировка топливоподачи.(14Н)
13. Датчик кислорода 2 A: Напряжение B: Кратковременная корректировка топливоподачи. (15Н)
Получается, что простым способом можно получать информацию о скорости автомобиля (что мне и надо было) и дальше анализировать и сигнализировать. Плюс можно немного диагностировать работу авто по коррекциям, ДМРВ, заслонка, УОЗ, ТОЖ. Дальше у меня стал вопрос каким способом вытащить эту информацию. Пришлось с нуля разобраться в новом для меня направлении — Arduino. Грубо говоря это микроконтроллер, который может выполнять определенные команды. Эти делом сейчас повально увлечена молодежь. Управление роботами, механизмами и т.д. Язык программирования для меня был не сильно знаком, но понемногу я в нем разобрался, изучая чужие примеры программ. Ну и самое главное — это как связать OBD II и Arduino без взлома автомобиля? Конечно — блютуз на базе ELM327 (синий зуб) версии 1.5 по K, L-линиям. Для Ардуинки был тоже куплен блютузный блочек НС-08. Для того что бы подружить ELM327 и НС-08 их надо запрограммировать, т.е перевести в спецрежим программирования с помощью АТ-команд. Вот тут я засел надолго. Если с ELM327 я разобрался быстро, с НС-08 у меня возникла проблема, которую я пока не решил — не мог включить программирования АТ-командами. В конечном итоге я купил НС-05 с которым все удачно получилось, а НС-08 отложил до лучших времен. Следующая трудность у меня возникла в написании программы (скетча), потому как выложенные в свободном доступе программы не пошли. Пришлось сидеть и писать свое собственное. Может и коряво написанное, но работает. Пока сижу играюсь, смотрю параметры и отлаживаю программу. В планах сделать бортовой компютер-помощник-диагност. Занимаюсь этим не спеша, по мере свободного времени. Проект не коммерчиский, опобикован для общего ознакомления.А глобальные планы полезть ещё глубже — CAN-шина. Там информации еще больше, но это уже другая тема. Пример обработки параметра — обороты двигателя.