Как собрать приборную панель для Live For Speed

Недавно я выкладывал исходники программ для реализации приборной панели, и почти сразу же нашлись те, кто хотел повторить мой проект, но столкнулись они с тем, что кроме исходников и видео больше ничего и нет. Непонятно как и из чего соорудить саму приборную панель. Поэтому данная статья имеет цель восполнить пробел и пошагово описать, что нужно делать. Поделюсь некоторыми мыслями и надеюсь, что из желающих повторить появятся те, кто успешно повторил работу.

MVI_5069.mp4_snapshot_02.00_[2015.09.21_16.25.04]

Для начала определимся с тем, что нам нужно для конструирования приборной панели:

  1. Приборная панель (1 шт., ~1000р);
  2. Arduino Uno или Leonardo, но лучше Iskra Neo – тот же Leonardo, только куда дешевле (~890р);
  3. Микросервоприводы FS90 (~390р * 2);
  4. Кнопка или лучше такая (1 шт., ~20р);
  5. Резистор 10 кОм (~30р);
  6. Макетная плата любая (1 шт., ~100р);
  7. Импульсный блок питания 5В 1А (1 шт., ~240р);
  8. USB кабель A – B (если Arduino Uno) или A – Micro USB (если Arduino Leonardo и Iskra Neo) (1 шт., ~190р);
  9. Любой USB кабель A – … для питания сервоприводов (второй конец будем обрезать), если блок питания с USB выходом (1 шт., ~190р);
  10. Соединительные провода «папа-папа» (~290р).

Итого: ~3730р. Если заказывать детали из Китая, то можно сэкономить, но доставка будет продолжительная и качество радиодеталей непредсказуемое.

По поводу самой приборной панели ничего конкретного порекомендовать не могу, я взял вот такую, от автомобиля Mitsubishi Pajero за 1000р:

1443573514671_bulletin

Гибкую печатную плату убираем, открутив шурупы, лампочки, всё это нам не нужно:

IMG_5059

 Снимаем прозрачную защитную крышку (на защёлках):

IMG_5294

И основную чёрную пластмассовую панель:

IMG_5292

Мы получили доступ к механике панели:

IMG_5291

У каждого из индикаторов есть плата, на которой стоит шаговый двигатель и другие радиодетали:

IMG_5060

IMG_5061

IMG_5068

Да, возможно, кто-то захочет разобраться с тамошними двигателями, отпаять их от платы с микросхемами и использовать, но я не стал с этим заморачиваться и все внутренности вынул. Предположим, что вы поступили также. Из механики нам нужна только стрелка и держатель шкалы. С внутренней стороны расположения спидометра и тахометра приклеим сервоприводы так, чтобы выходные валы были напротив отверстий для штырей стрелок. Накладываем сверху шкалы. В выходные валы вставим какие-нибудь штыри (кусочки скрепки, например), чтобы они торчали с внешней стороны шкал и зальём их небольшим количеством суперклея. На эти штыри будем крепить стрелки, но позже. Прикрепляем чёрную панель.

После того, как сервоприводы были приклеены к внутренней стороне приборной панели, а шкалы были установлены сверху, но стрелки ещё не прикреплены, необходимо установить положения сервоприводов на минимальный угол, соответствующий положению стрелки на 0. Это очень важно. В микропрограмме, которую написал для приборной панели, после старта выполняется тестирование – сервоприводы спидометра и тахометра большими шагами меняют свои положения от 0 до 180 градусов и обратно. Таким образом, чтобы получить положения сервоприводов 0 градусов, необходимо прошить Arduino и включить работу приборной панели.

Сейчас пришло время собрать схему на макетной плате или плате под пайку:

schema

Кнопка необходима для сброса максимального количества оборотов. Т.к. сервопривод отклоняется максимум на 180 градусов (если не модифицировать его), он не сможет объять всю скорость (у меня чуть больше 160 км/ч получилось) и все обороты, показанные на шкале, не то чтобы за пределами её. Поэтому показания носят относительный характер. Шкала скорости, к тому же, не равномерна – первые деления с 0 до 20 км/ч занимают больше пространства, чем остальные. В исходниках программы для микроконтроллера это всё настраивается, поэтому экспериментальным путём можно подобрать параметры под вашу шкалу, либо доработать так, чтобы всё соответствовало точно игровым данным. В моём случае погрешность составляет буквально 5 км/ч, что для меня достаточно. Что касается тахометра, то для меня важны не конкретные значения кол. оборотов, а насколько они близки к красной метке. Максимальный угол поворота сервопривода тахометра соответствует кол. оборотов красной метки. Но т.к. у разных автомобилей разные максимальные обороты, то при смене автомобиля, необходимо сбросить сохранённое количество оборотов красной метки и нажать газ в пол на нейтральной передаче, чтобы сохранить новое значение. Если вместо сервоприводов вы будете использовать шаговые двигатели (и перепишите программу), вышеописанных проблем не будет.

Итак, собирая схему, обратите внимание на питание: сервоприводы потребляют бОльший ток, чем может дать USB порт компьютера, поэтому они подключены к внешнему источнику питания 5В 1А, например такому:

IMG_5301

Как-то так:

IMG_5297

Соединяем плату с Arduino и сервоприводами:

IMG_5296

Теперь подключаем внешний источник питания в сеть, а Arduino к компьютеру для прошивки микроконтроллера. Потребуется Arduino IDE, который следует скачать с официального сайта: https://www.arduino.cc/en/Main/Software.

Далее скачиваем исходники приборной панели отсюда: https://github.com/maindefine/dashboard. Открываем dashboard_sketch.ino из каталога src/dashboard_sketch в Arduino IDE — исходник программы для микроконтроллера. Выбираем тип платы: Arduino Uno или Arduino Leonardo (для Iskra Neo тоже нужно выбрать Leonardo):

И порт, куда подключили плату (у вас будет только один порт с Arduino устройством):

2016-01-01_185035

Прошиваем:

2016-01-01_185102

По завершению прошивки, микроконтроллер перезагрузится, и должно запуститься тестирование сервоприводов, о котором говорил ранее. У данной статьи нет цели обучать работать с Arduino, поэтому если возникли какие-то проблемы на данном этапе, то придётся обратиться к гуглу.

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

Когда клей подсохнет, запустите снова тестирование, отключив и включив USB кабель от Arduino. Убедитесь, что стрелки надёжно закреплены к валам сервоприводов и двигаются чётко в направлении по часовой и обратно, зафиксировавшись в нулевом положении в итоге.

IMG_5290

Саму панель надо на что-то ставить. Для своей панели соорудил деревянные стойки:

IMG_5302

IMG_5303

На этом конструкция приборной панели завершена. Для того чтобы данные из игры передавались в ардуино, нужна программа-посредник. В исходниках она есть, даже скомпилированная. Никаких подстроек не требует и готова к запуска. Но сперва нужно установить следующие значения некоторым параметрам Live For Speed в cfg.txt, который находится в том же каталоге, что и LFS.exe:

OutGauge Mode 2
OutGauge Delay 2
OutGauge IP 127.0.0.1
OutGauge Port 63392
OutGauge ID 0

Подключаем приборную панель (если ещё не подключена), далее включаем Live For Speed. Запускаем, для проверки, одиночную игру. Как только автомобиль появится на трассе и будет доступно управление им, сворачиваем игру. Затем запускаем LFS-Arduino dashboard.exe из каталога bin исходников. Выбираем порт ардуино и жмём «Connect». В окне программы должны появиться показатели приборной панели:

2016-01-01_191913

Переходим в игру и проверяем работу стрелок на приборной панели.

На этом всё. Вы можете вместо сервоприводов использовать шаговые двигатели, чтобы показывать точные значения скоростей и оборотов двигателя даже за пределами нарисованной шкалы.

Надеюсь, что стало более понятно, и кто-то таки соберёт свою приборную панель. Уверен, у вас получится куда лучше и интереснее, поскольку есть много того, что можно улучшить, у меня просто небольшие запросы к этой панели, поэтому меня устраивает и в таком виде. Делитесь в комментариях своими работами, мне будет очень приятно и интересно посмотреть, и остальным, кто будет читать статью, тоже будет интересно посмотреть.

Комментарии

  1. Макс пишет:

    Еще раз огромное спасибо, буду пробовать полюбому! только вопрос,получаеться к каждой игре нужно ее прошить, к примеру я играю в дерт ралли значит мне нужно искать значение этой игры,ну и так с каждой да??? вот группа наша вк заходи много интересного найдешь, куча идей http://m.vk.com/auto_sim

    • Includen пишет:

      =) Да, программная часть конкретно под Live For Speed написана, под его протокол OutGauge.

  2. Витас пишет:

    Доброго дня. Наконец то я нашел русскоязычного человека, который подробно описал процесс сборки. Спасибо вам огромное.
    Не могли бы вы подсказать. Хочу подобную приборную панель сделать для игры Euro Truck Simulator 2. Исходники для приборной панели нашел с сети, а именно тут http://skyhisi.blogspot.de/2013/09/euro-truck-simulator-2-prototype-real.html

    Нашел как Европейцы делают их на основе Arduino Mega 2560, они еще добавляют сигналы поворотов, ручник, аварийка и т.д. вот видео, где рассказывается о том, как производить подключение https://www.youtube.com/watch?v=MNN6vbO0P5Y

    На сайте где вы закупали запчасти, Arduino Mega 2560 стоит в районе 3т. + доставка, для меня это дороговато, нашел на али экспресс вот такой http://ru.aliexpress.com/item/Mega-2560-R3-Mega2560-REV3-ATmega2560-16AU-CH340G-Board-ON-USB-Cable-compatible-for-arduino-No/32566463316.html?spm=2114.10010208.100005.1.5avRkA&isOrigTitle=true

    Не подскажите подойдет ли этот контроллер для этих целей? Заранее спасибо

  3. Afiq пишет:

    Hi, im working on my FYP on driving simulation. Can you tell me where is the speed value is stored in Arduino coding? I need to display it on LCD monitor.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *