No Image

Электронная панель приборов своими руками

СОДЕРЖАНИЕ
1 просмотров
15 ноября 2019

Универсальная панель приборов VENATOR представляет собой программно-аппаратную систему, позволяющую дублировать показания штатной приборной панели автомобиля, и выводить их в графическом виде, на дисплее CAR PC под управлением Windows (на отдельном, или в составе фронтенда на основном) или на разного рода ANDROID устройствах. Блок сбора данных не использует протоколы СAN, K-line, OBD и подобные, чем принципиально отличается от аналогичных решений. Все штатные датчики подключаются непосредственно к блоку. Блок опрашивает датчики с периодом 50 мс, и передает данные в цифровом виде в программу визуализации. Независимый опрос датчиков позволяет значительно повысить частоту опроса, а также использовать систему на автомобилях не имеющих ЭБУ (карбюраторные, дизельные, электро).
Система состоит из Блока сбора и обработки данных Venator PSU, программы Venator и устройства отображения (компьютер на Windows или Android устройство)

Программа Venator использует платформу Adobe AIR. Благодаря этому достигается высокое качество графики и совместимость с платформами Windows и Android. Так же присутствуют несколько стилей оформления активных элементов пользовательского интерфейса и возможность использовать пользовательские фоны (скины).
Передача обработанных данных осуществляется по интерфейсам COM over USB, Ethernet, Wi-Fi, причем одновременно, что дает возможность, запустив программу на нескольких устройствах, получать на них данные с одного блока обработки

На сегодняшний день доступен следующий функционал:
1. Индикация скорости
2. Индикация оборотов ДВС
3. Сигналы зеленой и красной зоны оборотов ДВС т.н. SHIFT (настраиваются пользователем)
4. Общий одометр (начальный пробег задается пользователем)
5. Суточный сбрасываемый одометр (сбрасывается кнопкой)
6. Сервисный счетчик обратного отсчета (интервал межсервисного пробега задается пользователем)
7. Индикация напряжения бортсети (калибруется пользователем)
8. Индикация температуры ДВС (калибруется пользователем)
9. Индикация остатка топлива (калибруется пользователем)
10. Контрольные лампы
11. Часы
12. 5 скинов
13. Дневной и ночной режим каждого скина (переключение при включении габаритов или по датчику освещенности)
14. 4 стиля стрелок (выбирается пользователем)

На данный момент в базовую версию программы включены 5 скинов:

Такую приборную панель можно собрать на любой автомобиль, это универсальное устройство. Мы собирали приборную панель на базе уже существующей под названием Venator.

Для ее создания потребуются следующие комплектующие:

  • Контроллер Arduino MEGA
  • Планшет с операционной систем Androir
  • Модуль Wi-Fi esp8266
  • Преобразователь питания с 12 до 5 вольт (можно использовать любое автомобильное зарядное устройство для мобильных телефонов).

К контроллеру Arduino подключаются все датчики автомобиля. В нашем случае потребовалось еще установить датчик скорости в коробку передач вместо тросика привода спидометра. А так же завести провод в салон автомобиля от коммутатора зажигания, чтобы контроллер смог отображать обороты двигателя (это нужно было сделать, так как в ОКЕ не был установлен тахометр).

Читайте также:  Ведущий первая передача что с ногами

Схема

Датчики к контроллеру подключить необходимо по следующей схеме:

Скетч (прошивка) для контроллера Arduino Mega

Скачать готовый скетч в файле можете по этой ссылке.

unsigned long micros_sp = 0, micros_th = 0;
volatile int tz;
volatile int sz;
volatile int sp; //импульсы спидометра
volatile int th; //импульсы тахометра
int analogInput [15]; //массив аналоговых значений
int digitalInput[29]; //массив цифровых значений
String resultString = «»; //строка
int i; //счетчик циклов
//********************************************************************
void setup() <
for(i=0; i
digitalInput[i]=0;
>
for(i=0; i
analogInput[i]=0;
>
Serial.begin(115200);
Serial2.begin(115200); //инициализация ком порта
attachInterrupt(0, speedometr, RISING); //прерывание спидометра по фронтам импульса
attachInterrupt(1, tahometr, RISING); //прерывание тахометра по фронтам импульса
>
//********************************************************************
void loop() <
analogInput[0] = analogRead(0); // B13 напряжение
analogInput[1] = analogRead(1); // B24 топливо
analogInput[2] = analogRead(2); // B21 температура охлаждения
analogInput[3] = analogRead(8); //
analogInput[4] = analogRead(7); //
analogInput[5] = analogRead(3); //
analogInput[6] = analogRead(4); //
analogInput[7] = analogRead(9); //
analogInput[8] = analogRead(10); //
analogInput[9] = analogRead(11); //
analogInput[10] = analogRead(12); //
analogInput[11] = analogRead(13); //
analogInput[12] = analogRead(14); //
analogInput[13] = analogRead(15); //
analogInput[14] = analogRead(6); //

digitalInput[0] = digitalRead(4); // зажигание
// digitalInput[1] = digitalRead(5); //
//********************************************************************
digitalInput[2] = digitalRead(53) + //
digitalRead(51) * 2; //
//********************************************************************
digitalInput[3] = digitalRead(5) + // A14 левый поворот
digitalRead(6) * 2; // A13 правый поворот
//********************************************************************
digitalInput[4] = digitalRead(8) + // A18 ближний
digitalRead(9) * 2; // A17 дальний
//********************************************************************
digitalInput[5] = digitalRead(10) + // А16 птф передние
digitalRead(11) * 2; // A15 птф задний
//********************************************************************
digitalInput[6] = digitalRead(23); // A23 чек
digitalInput[7] = !digitalRead(21); // B 9 — уровень тж
digitalInput[8] = !digitalRead(31); // A19 — ручник
digitalInput[9] = digitalRead(25); // B 3 износ колодок
digitalInput[10] = !digitalRead(45); // B10 — лампа топлива
digitalInput[11] = !digitalRead(51); // B12 — уровень ож
digitalInput[12] = !digitalRead(47); // А24 — давление масла
digitalInput[13] = digitalRead(27); // A20 лампа вентилятора
digitalInput[14] = !digitalRead(29); // A23 зарядка
digitalInput[15] = digitalRead(33); // A 5 абс
digitalInput[16] = digitalRead(35); // A20 srs
digitalInput[17] = digitalRead(37); // A 3 ремень
digitalInput[18] = digitalRead(39); // B 1 двери
digitalInput[19] = 0;//digitalRead(22); // B 2 p
digitalInput[20] = 0;//digitalRead(24); // А22 r
digitalInput[21] = 0;//digitalRead(26); // A 7 n
digitalInput[22] = 0;//digitalRead(28); // B 6 d
digitalInput[23] = 0;//digitalRead(30); // B 5 s
digitalInput[24] = digitalRead(41); // A 8 резерв
digitalInput[25] = 0;//digitalRead(32); // A 9 резерв
digitalInput[26] = digitalRead(43); // A10 резерв
digitalInput[27] = 0;//digitalRead(34); // A11 резерв
digitalInput[28] = digitalRead(49); // B 4 резерв

Читайте также:  Камри 40 видео обзор

resultString = String(resultString + sp);
resultString = String(resultString + «,»);
resultString = String(resultString + th*10);
resultString = String(resultString + «,»);
for(i=0; i
resultString = String(resultString + analogInput[i]);
resultString = String(resultString + «,»);
>
for(i=0; i
resultString = String(resultString + digitalInput[i]);
>
resultString = String(resultString + «:
»);
// Serial2.print (resultString);
Serial.print (resultString);
resultString = String(«»);
tz = tz — 1;
sz = sz — 1;
if (tz == 0)

if (sz == 0)
delay(50);
>
//********************************************************************
void speedometr() < //измеряем частоту на входе спидометра по прерыванию
sp=(900000.0/( micros() — micros_sp));
micros_sp = micros();
sz = 10;
>
//********************************************************************
void tahometr() < //измеряем частоту на входе тахометра по прерыванию
th=(2900000.0/( micros() — micros_th));
micros_th = micros();
tz = 10;
>

Настройка ESP-8266

Перед тем как подключать Модуль ESP8266 к схеме его нужно прошить и настроить в режиме прозрачного моста Tcp2uart (tcp to uart), чтобы полученные данные с ком-порта он передавал планшету по Wi-Fi.

Прошивать лучше через USB-UART преобразователь, который должен иметь выход источника 3.3V для питания ESP8266. Так же этот источник должен обеспечить необходимый ток не менее 200мА.

Готово! Теперь при подключении модуля ESP-8266 к ардуино он работает в режиме прозрачного моста и по Wi-Fi передает необходимые данные.

Приложение «Приборная панель для планшета»

Приложение можете скачать по ссылке.

Благодарим пользователя Frud портала Drive2 за опубликованную версию приложения и описание метода установки приложения:

После установки приложение уже будет работать. Для того чтобы включить его автозагрузку необходимо сделать следующее:

После установки необходимо зайти в настройки Андроид, в раздел «Домашний экран», выбрать приложение приборной панели VenatorLite2. Очень важный момент! Выйти в настройки Андроида из приложения приборной панели для возврата стандартного Launcher-a нельзя. Перед тем как установить приложение вместо Launcher-a необходимо убедиться что в настройки можно зайти из статусбара. Иначе вернуть стандартный лаунчер будет проблематично.

ПРИМЕЧАНИЕ! Перед установкой автозагрузки желательно настроить и отладить работу приложения.

После запуска приложения нужно зайти в настройки (нажать на значок шестеренки справа вверху). Тут надо указать ip-адрес и порт (В нашем примере этими значениями являются: адрес 192.168.4.1 и порт 3333).

Осталось все подключить и протестировать. Если все сделали правильно, то при вкючении устройства и подаче на 4-ый пин ардуино «плюса» приборная панель включится.

А вот как выглядит приборная панель, установленная в ОКУ:

Читайте также:  Сайт гибдд нижегородской области проверка по вину

Желаем успеха в реализации данного проекта

Сегодня я закончил создание устройства, которое предназначено для вывода информации из автосимуляторов на панель со светодиодными индикаторами.

С момента начала моего увлечения автомобильными симуляторами, такими как GTR 1 & 2, Race, GT Legends и т.п., мне всегда не давала покоя мысль об улучшении своего игрового железа. Я дорабатывал свои рули, делал USB джойстики, делал свои педали, но все это казалось мелочью, по сравнению, с тем что я видел на зарубежных симрейсерских сайтах. Там народ собирал дома кокпиты, подключал приборы от настоящих автомобилей, создавал всякие мелкие аппаратные приблуды для игр. Но все разработки, что я видел были закрытыми и платными. Поэтому я решил сделать свой вариант приборной панели…
В качестве мозга девайса я выбрал ATmega 8535, при небольшой цене (

5$) он имеет 4 порта ввода-вывода и может работать с протоколом RS 232.
Для отображения информации выбрал семисегментные индикаторы, с LCD не хотелось заморачиваться, и, к тому же они не так интересно смотрятся: )
Переднюю панель заказал в фирме, которая занимается наружной рекламой. Конечно это не то, что я хотел изначально, но пока я доволен.
Теперь о софтовой части.
Так как, я не знаю ни одного языка программирования (кроме Си для микроконтроллеров, на котором и написана прошивка для девайса), то решил использовать конструктор программ HiAsm. За несколько вечеров изучения среды, я сделал свое первое приложение. Оно читает Memory Mapped File созданный игрой, преобразовывает нужные данные и через ком-порт отправляет их на устройство.
Девайс имеет два режима работы: игровой и служебный. В служебном режиме отображается загрузка процессора, памяти, время и дата. В игровом — скорость, обороты двигателя и т.д…

Рабочий режим:

Игровой режим:

Видео работы:

Устройство совместимо с играми от Simbin (GTR, Race07, RaceON, GTR Evolution, GT Legends) и Ultimate Mortal Kombat 3: )
В будущем планирую расширить список поддерживаемых игр и перевести плату на планарный монтаж. На этом пока все.
Спасибо за внимание.

Оговорюсь, статья не моя, ее попросил опубликовать мой брат, в песочницу ее не взяли.
В комментариях к статье отвечает тоже он.
Update: автор получил инвайт на хабр. Теперь все вопросы к нему.
Также доступен архив, в котором лежит схема, прошивка и софт.

Комментировать
1 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Автомобили
0 комментариев
No Image Автомобили
0 комментариев
No Image Автомобили
0 комментариев
No Image Автомобили
0 комментариев
Adblock detector