Бортовой компьютер в приборную панель Pajero Sport

Проект основывается на BCOMP11 и является его дальнейшим развитием. Является второй итерацией, "перерождением" проекта мини-бортового. Адаптируется для встраивания внутрь приборной панели Mitsubishi Pajero Sport 2ого поколения. Функционал работы с CAN-шиной так же заточен под данный автомобиль, однако, легко поддается переделке под любой автомобиль с шиной CAN. В основе лежит относительно простой микропроцессор LPC11C14 с ядром ARM Cortex-M0 на 50МГц.

Проект полностью открытый. Публикуются все исходники для его повторения. Лицензия распространения - MIT. Однако, при адаптации под прочие автомобили буду благодарен, если мне будет выслан перечень изменений и добавленных PID-ов, это поможет развитию этого проекта.

Отличия от первой версии BCOMP11:

  1. Полностью переделан интерфейс. Сделано в угоду читаемости на компактном экране.
  2. Слелана полноценная система предупреждений (напряжение, температура, сервисные интервалы).
  3. Сделана минимальная поддержка NMEA протокола для работы с GPS-приемником, сделан парсинг только посылки GPRMC.
  4. Поддержка шрифтов различного размера (главное ограничение для размещения большого количества шрифтов - объём памяти микроконтроллера.
  5. Сделано сжатие иконок и шрифтов для экономии памяти программ.
  6. Поддержка отправки данных по UART для функционала "чёрного ящика".
  7. Добавлено полноценное меню для настройки параметров.
  8. Поддержка OLED экранов на контроллерах SSD1306 и SH1106.

Принципиальные схемы

Схема бортового:

Подключение программатора:

Подключение к автомобилю

Интеграция в приборную панель происходит по следующей схеме:

Подключение к термодатчику является опциональным, его разумно использовать в случае, если штатный бортовой компьютер отсутсвует. Подключение к ДУТ (датчику уровня топлива) требуется для автоматического сброса Маршрута 2 (Trip B) после заправки и предупреждения о пустом баке (фактически не требуется, т.к. эту функцию выполняет контрольная лампа на приборной панели). Расход топлива рассчитывается по данным с CAN-шины и подключение датчика не требуется.

Встраивание в приборную панель

Штатный LCD-экран выпаивается и на его место устанавливается OLED-дисплей с диагональю 1.3 дюйма и разрешением 128х64 пикселей на контроллере SH1106 (так же в прошивке есть поодержка установки экрана OLED 0.96 дюйма на контроллере SSD1306). Этот экран позволяет отображать до 4 строк текстовой информации.

Проще всего установить экран производства Waveshare, он идеально вписывается в штатный пластиковый держатель. Однако, эти экраны дороже вариантов с Aliexpress и существуют только в синем цвете (на Aliexpress OLED 1.3" предлагается так же в белом цвете, что по-моему мнению смотрится лаконичнее).

Штатный вырез не подходит на нового экрана, поэтому требуется поменять его форму. Сделать это можно, изготовив новую "пленку" с шкалами приборов. Обрисовка измененного окна для нового экрана:

В своем варианте я заказывал новую плёнку здесь: Carscale, этот производитель имеет так же готовые дизайны шкал: классический вариант (повторяющий штатное оформление шкалы приборов) и измененный под стайлинг панели (который можно наблюдать на рисунке выше).

Функционал черного ящика

Прошивка может отправлять данные по UART-интерфейсу. Отправка происходит 1 раз в секунду. Данные можно сохранять на UART-логгере, например на таком: UARTLOG или на таком: OpenLog Blackbox.

Формат отправки:
time;speed;rpm;trans;batt;dfuel;lon;lat;gtime;gdate;t_eng;t_akpp;t_ext;p_fuel;p_air;dist;gdist;mil;
0;0;0;D2;-2147483648.-8;0.00;E03739.387;N5548.607;11-36-50;21-04-2003;65535;65535;9;0;0;0;0;0;

Где:

Эмулятор шины автомобиля Pajero Sport 2

Для тестирования и отладки функицонала без установки в автомобиль была сделана специальная прошивка. Она симулирует некоторые базовые события и ответы на шине автомобиля, что позволяет создать небольшую CAN-сеть на столе.

Прошивку можно взять здесь: ecu-emulator на GitHub.

Обрабатывает некоторые базовые запросы PID к блоку управления двигателем, так же отвечает на PID 0x2103 для автоматической коробки. Из уникального функционала - сделана посылка некоторых "сырых" пакетов, в которых содержатся базовые данные, к примеру, скорость и температура двигателя.

Ссылки

Original: http://igorkov.org/bcomp11v2,
Author: igorkov