Достаточно давно я занимаюсь разработкой бортового компьютера для своего автомобиля. Некоторый вариант пару лет назад был внедрен в мой автомобиль. Не скажу, что конечное исполнение меня полностью устраивает (даже больше, выглядит оно отчасти колхозно), однако функционал оправдывает себя на все 100 (в частности, мониторинг температур, моточасов и функционал черного ящика). Про данный бортовой можно почитать здесь.
Параллельно был начат проект мини-бортового, который в настоящее время немного подвис в процессе встраивания в приборную панель.
Но главное, мини-бортовой в определенный момент я решил сделать полностью открытым. Все его исходники (как железа, так и софта) лежат на GITHUB-е: исходники программы и исходники проекта платы, так же есть порт CAN HACKER-а на это устройство.
А некоторое время назад, случайно зацепился за решения для Android, которые легко позволяют делать интерфейсы к своим устройствам. В частности, зацепился за приложение Virtuino. Вообще, программирование на Android — тот профиль, которого я практически никогда не касался. Но, благодаря этому приложению, мгновенно пришло осознание, что можно сделать взаимодействие своего устройства и нарисовать ему несложный интерфейс на телефоне.
Автомобилей, где в качестве мультимедиа установлены устройства на основе Android сейчас достаточно много. Данная разработка похожа по концепции на Multitronics MPC-800, так же это аналог связки Torque+ELM327. Но есть следующие преимущества:
1. Проект полностью открытый. Можно изменять не только пользовательский интерфейс (что доступно в Torque), но и делать изменения на стороне "железа" (интегрировать, рассчитывать, делать исполнительные механизмы).
2. Проект обладает практически неограниченными возможностями по кастомизации (следствие первого пункта).
3. В отличие от ELM327, нет проблем с "наводками на шину". Это частенько проявляется на китайских адаптерах, вследствии чего возможно появление ложных ошибок в блоках управления.
Вот так выглядит само устройство:

Устройство собрано на LPC11C14, без Ардуин. Здесь имеем 32-битное ядро Cortex-M0, работающее на частоте 48МГц, а так же аппаратный CAN на самом контроллере, что позволяет без каких-то дополнительных ухищрений обрабатывать любые данные, поступающие с шины. Bluetooth модуль можно использовать практически любой, поддерживающий профиль SPP, в том числе не брендовый (на фото Roving RN-42), а любой распространенный китайский noname, типа HC-04/HC-05.
Собранное в корпусе Gainta G430, с подключенным шнурком:

Можно подключаться не через диагностику, а стационарно: к проводам диагностической шины где-нибудь внутри торпедо. Достаточно 4х проводов: питание +12V, земля, линия CAN-H и линия CAN-L.
Минимальный набросок интерфейса в Virtuino на телефоне:

Сейчас из Virtuino доступны следующие параметры (оптимизировано на автомобиль Pajero Sport II):
* Виртуальный вывод V1: счетчик секунд с момента запуска (с).
* Виртуальный вывод V2: скорость автомобиля (км/ч).
* Виртуальный вывод V3: Температура двигателя (°C).
* Виртуальный вывод V4: Обороты двигателя (об/мин).
* Виртуальный вывод V5: Температура автоматической коробки передач (запрос, специфичный для Mitsubishi Pajero IV/Pajero Sport II, °C).
* Виртуальный вывод V6: Внешняя температура (актуально при подключении родного датчика к плате бортового, °C).
* Виртуальный вывод V7: Напряжение бортовой сети (по показаниям блока управления двигателя, Вольт).
* Виртуальный вывод V8: Текущая передача (запрос, специфичный для Mitsubishi Pajero IV/Pajero Sport II).
* Виртуальный вывод V9: Давление во впуске (в кПа).
* Виртуальный вывод V10: Давление топлива в рейке (актуально для дизельных двигателей, в кПа).
* Виртуальный вывод V11: Уровень топлива (требуется подключение ДУТ к плате бортового, калибровки для Pajero Sport II, л).
* Виртуальный вывод V12: Израсходованное топливо за поездку (актуально для Pajero Sport II).
* Виртуальный вывод V13: Пройденная дистанция за поездку (км).
* Цифровой вывод D1: Управление входом в сервисный режим (отключение посылки запросов к ЭБУ).
Хотя минимальными модификациями можно вытаскивать данные по любым PID-запросам, и даже более: сделать отправку специфичных данных и реагировать, к примеру, на нажатие каких-то кнопок. На плате предусмотрена установка не только физического уровня Hi-speed CAN (в лице MCP2551), но и физического уровеня Fault-tolerance CAN (в лице TJA1055), что позволяет внедряться в шину комфорта, но это совсем другая история…


Комментарии 52
Добрый день! А SDL протокол им можно прочитать?
Что значит открытый проект? Доступны для скачивания исходники прошивок и схем?
Ссылки указаны в тексте
Уведел теперь, спс!
А как увидеть текущую передачу, не увидел стандартний pid код?
Получение температуры трансмиссии и текущей передачи — специфичный для Pajero PID-запрос.
Крутая работа! Я все никак не соберусь сделать простой бк для своего Опелька :(
По к линии такой девайс не заработает?Кан любой читает?Или нужно расшифровывать?
Нет, поддержки к-линии нет. Если говорим про диагностические PID-запросы, то любой авто с CANом.
Здравствуйте, а можно прокомментировать о чем речь "3. В отличие от ELM327, нет проблем с "наводками на шину". Это частенько проявляется на китайских адаптерах, вследствии чего возможно появление ложных ошибок в блоках управления." ?
Это когда после чтения ошибок, например, сбрасываются настройки щитка приборов.
Или бесключевого доступа.
HfmScan
Здравствуйте, а можно прокомментировать о чем речь "3. В отличие от ELM327, нет проблем с "наводками на шину". Это частенько проявляется на китайских адаптерах, вследствии чего возможно появление ложных ошибок в блоках управления." ?
Бывает, что из-за каких-то некорректных действий ELMки, появляются ошибки шины, а иногда и гирлянды на щитке загораются. Подвержены этому авто, у которых на диагностическом разъеме выведена та же шина, что по блокам расходится.
да, на железном уровне неисправная елмка могут гадить в кан (как и например неисправный штатный блок). это может приводить к ошибкам связи по кан во многих блоках… если так, то согласен, но это ж любой неисправный девайс так может… это просто вопрос качества изделий…
Это происходит и на вполне себе исправных елм-ках, во всяком случае, корректно возвращающих данные.
а как насчет realdash на андроиде+lcd экран, и вместо приборки все это?!
Почитал комменты. Мдя.😞 Действительно, это поделка! Пусть не профессиональная, но достаточно сложная на своем уровне! Много читал что люди делали и забивали, а забивали по причине сложности решений… Заставить заработать не сложно, сложно заставить заработать как тебе надо! Что бы работало быстро и давало данные тогда когда это надо, а не тогда когда какие то процессы отработают… Так что ТС уважуха, хоть он и пошел более легким путем! А если доведет до ума и не бросит на пол пути то двойная уважуха!
Сам год бьюсь над FLProg дабы заставить эту платформу корректно собирать код… Там хвостов куча и порой эти хвосты в не тревиальных задачах намертво вешают ардуинку… Да и работает она после этой программы через раз… Но мне интересно!😂
М О Л О Д Е Ц !
Руки явно к плечам пришиты и голова на месте.
Круто, просто супер! Думал над таким же проектом. Но только начал изучать Ардуино и МК в целом. Пока собираю ленивую ферму, климат-контроль для кап.гаража и внедряю умный дом. Подписался на автора, жаль что в блоге у него ничено подобного нет.
респект, не понимаю отзывы, по типу "велосипед", это же блог "Подделок", а большинство поделок — это априори "велосипед", но что поделаешь, такой народ,
побольше бы объяснений в посте, а работа заслуживает уважения, да еще и все открыто, спасибо
пы.сы, хотя нет, зашел по ссылке github и понял, что описано норм, просто в там всего в любом случае так с наскоком не осилишь
С питанием нет чудес? Или контроллер настолько неприхотливый?
А какие чудеса по питанию возможны? Входные цепи выдержат до 50В, и просадку до 4-5В а двухуровневое понижение (сначала до 5В, затем до 3.3В) проглатывает помехи. Но для успокоения предохранитель на 0.5А не возбраняется.
Делал память автокресла на ESP8266
Тоже двухуровневое понижение (5В для реле, 3.3 питание)
Правда, запитано постоянно, и делал на DC/DC
Наелся — выше крыши. Осциллографу (запоминающему, Fluke) не верил! Особенно дикие выбросы при остановке кресла вперед-назад
ESP8266 использовал однажды, при питании от сети, БП на 5V, понижение до 3.3 линейником, как Slave-устройство, головное — LPC1343, пока не завёл аппаратный резет — зависало раз в неделю и АТ-командами не шевелилось. Не знаю, как сейчас, но тогда создалось ощущение крайне нестабильного и сырого продукта, непригодного на автономную работу.
dmisol
Делал память автокресла на ESP8266
Тоже двухуровневое понижение (5В для реле, 3.3 питание)
Правда, запитано постоянно, и делал на DC/DC
Наелся — выше крыши. Осциллографу (запоминающему, Fluke) не верил! Особенно дикие выбросы при остановке кресла вперед-назад
А схемотехника есть? Интересно посмотреть в сборе как выглядело. Силовая техника чуть другую специфику имеет, там можно и в низковольтные цепи антенной наловить помех при неграмотной разводке плат и разделения цепей. Сам по себе ESP тоже доверия не вызывает в плане помехозащищенности.
Диск грохнулся (
После этого выложил на github WiFi для Lego — софт унаследован github.com/dmisol/wifi4lego.
От схемы осталась промежуточная бумажная версия и плата
Ох… и много же у Вас борьбы с помехами было…
Вопросы:
1. А первая DC-шка линейная или импульсная?
2. Фото платы есть?
3. Распологалось всё это далеко от моторов?
4. Помехи в итоге были от реле или от моторов? Уходили они в цепи и 5В и 3.3В?
1. DC/DC, поскольку автокресло запитано постоянно
2. есть живая плата, но не рядом . Там все честно, поверьте: периодически (в среднем, раз в несколько лет) балуюсь производством своих платат с fpga и dsp около четверти века. Они работали у сотовых операторов на нескольких континентах
3. да: моторы под креслом, плата сбоку. Но у кресла отдельный земляной провод (что и позволяет детектировать крайние положения). По земле мрак что бегает — импульсы в десятки (!) вольт
4. от кресла и зажигания. проходили насквозь
1. А какой именно? Кстати, для устройства запитанного постоянно — 1117 не лучший выбор, у него просто огромный холостой ток в несколько десятков мА.
На MP2307
А из линейных какой разумный выбор?
LP2985 — если вписывается в 100мА, но в основном использую SPX3819, в таком же корпусе, он до 500мА с холостым током менее 100мкА. На вход ставлю LM2931, если малопотребляющее. Но чтобы с большим током (более 0.5А) и малым холостым — такого не искал, задач не было.
igkov
Ох… и много же у Вас борьбы с помехами было…
Вопросы:
1. А первая DC-шка линейная или импульсная?
2. Фото платы есть?
3. Распологалось всё это далеко от моторов?
4. Помехи в итоге были от реле или от моторов? Уходили они в цепи и 5В и 3.3В?
прочитал свой ответ, 1. — импульсная, конечно
Сложность вхождения выше чем на Ардуино?
К сожалению, да.
sav-liana
Сложность вхождения выше чем на Ардуино?
Если с уровнем ардуино в Кан шину, то приглашаю в свой БЖ.
У меня есть пара контроллеров с MCP2561 и VP230 трансиверами, которые вполне себе работают с FT-CAN. В чём там подвох может быть? Ну кроме того, что они не работают по однопроводной шине в случае чего, конечно. Ещё жду STM32 с TJA1050 для тестов.
То, что они работают — ещё не значит, что так можно делать. Тот же UART работает с RS-232 с ошибочным, перевернутым подключением драйвера, но опять же — в этом нет ничего хорошего. Оно просто работает, но нет гарантий, что так же и будет работать всегда. Как Вы сами сказали, скорее всего теряется фишка FT-CAN-а с возможностью работать по одному проводу.
Ну, я согласен, что по-правильному надо такие и использовать, но в моём случае из готовых таких просто нет, а сам я их ещё не умею изготавливать.
Я думал там какие-то конкретные могут быть проблемы при использовании обычных трансиверов в такой шине, но как я понимаю, только потенциальные. Тест с блоком, у которого трансивер работает только в однопроводном режиме, показал, что только от него сообщения по шине и не видны (они и не нужны, в общем-то)
О конкретных проблемах разработчик электроники просто не задумывается, а ставит нужный драйвер. Дальше факта "ой, работает" обычно не уходят изыскания.
И очень зря, что разработчик не хочет расширять свой кругозор.
Не скажу, что это расширение кругозора, расширение кругозора — это нестандартное схемотехническое решение. Но никто в устройство не будет в здравом уме ставить несовместимый драйвер, даже если изыскания привели к тому, что это работает. Или Вы предлагаете делать длительные тесты, смотреть/считать нагрузочные, делать сетки на 100 устройств и гонять их от — 40 до +80, ради расширения кругозора?)))
Почему несовместимый-то? Стандарту удовлетворяет, как и шина, в которой он работает.
Это физуровни относятся к разным частям стандарта, один стандарт на транспортный уровень или где-то указано о кросс-совместимости явно?
В этом плане никакой информации, кроме того, что все удовлетворяют одному ISO, а FT лишь фича
Это разные части одного ИСО. Каждая со своим применением. У одной фишка — скорость, у другой отказоустойчивость при обрыве. А над ними другая часть, транспортная, она едина.
MrPerfekt
У меня есть пара контроллеров с MCP2561 и VP230 трансиверами, которые вполне себе работают с FT-CAN. В чём там подвох может быть? Ну кроме того, что они не работают по однопроводной шине в случае чего, конечно. Ещё жду STM32 с TJA1050 для тестов.
Мне нравится эта связка, сам сниффер сделал на такой )) А тжа1050 и мсп2551 — это ведь аналоги?
По идее да, аналоги.
Ну ты просто мозг, вот бы мне такую штуку, машин много делаю, а китайские сканеры все глючат и половину просто хрени показывают
Пользуемся обычным обд сканером, никаких глюков, всё работает)
Ну я тоже, но вот ложные ошибки у меня уже не раз были, машины на нз движках знаю как себя, поэтому могу сказать, что были косяки.
Defender501
Пользуемся обычным обд сканером, никаких глюков, всё работает)
Вот и я про то же зачем велосипед изобретать елм рулит
Юзаю delphy ds150, это посильнее фауста гете)))имеется ввиду елм
AMG807
Вот и я про то же зачем велосипед изобретать елм рулит
ELM-ка достаточно сильно ограничена в плане отправки чего-то не очень стандартного в шину. Там и начинаются всякие пляски с бубном вокруг поиска "правильной" версии прошивки. Это не велосипед, а инструмент несколько иного уровня.