Jump to content

Самодельные MFD для F-16 (3D печать + LCD дисплеи)


Martyr

Recommended Posts

Всем привет.

Некогда посетила меня идея попробовать сделать с нуля MFD панели как у F-16 с дисплеями. Хочу поделиться с сообществом результатом моих экспериментов.

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

Вдохновило меня на это - видео от GENA PILOT: Настройка LCD экранов под TM COUGAR MFD для DCS.

Идея заключалась в следующем:

  • На 3D принтере сделать рамки MFD панелей с кнопками. 
  • На базе одного Arduino сделать схему джойстика на 56 кнопок под 2 MFD панели. 
  • Запрограммировать Arduino с помощью MMJoy. 
  • Разработать схему печатной платы под тактовые кнопки, которые поместятся в MFD рамки. 
  • Сделать печатную плату из фольгированного текстолита по ЛУТ-технологии. 
  • Найти подходящие LCD дисплеи на Ali Express и собрать все в кучу. 
  • Настроить кнопки и отображение MFD экранов из DCS на LCD дисплеях.

1. 3D печать рамок и кнопок.

За основу были взяты 3D модели рамок с сайта: https://www.thingiverse.com/thing:3327543/files. Однако, модель имеет не оригинальные размеры, поэтому модель пришлось подгонять под чертежи. Кроме того, в модели есть множество мелких и не очень нужных элементов и пазов, которые могут криво напечататься, а использовать мелкие сопла или более дорогие виды пластика может существенно увеличить цену изделия. Также кнопки не имеют фасок и кнопки-качалки плоские, а в реале они вогнутые.

В общем, методом тыка и с помощью какой-то матери я подогнал 3D модели под свою задачу убрав лишние и плохопечатуемые детали, а также немного улучшив модели кнопок:

Рамки решил печатать черным пластиком, а кнопки - прозрачным, с расчетом на то, чтоб сделать им еще подсветку.

Важно! 3D модели кнопок имеют размер 1 в 1 под отверстия в рамке, поэтому их нужно печатать в масштабе 95-94% от оригинала, чтоб был зазор, иначе кнопки придется долго и нудно обтачивать на этапе постобработки, чтоб они "сели" на свои места в рамке.

Результат получился таким:

photo_2021-11-04_12-30-56.jpg

2. Arduino и схема подключения

В качестве основы для контроллера джойстика решил взять Arduino Pro micro на базе чипа ATmega32U4.

image.png

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

Каждая MFD-панель имеет 28 кнопок, соответственно для двух панелей необходимо по крайней мере 56 кнопок.

В Arduino для настройки множества кнопок применяются схемы в виде матрицы состоящая из "строк" и "столбцов". Выглядит это примерно таким образом: 

image.png

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

Путем нетрудных расчетов для получения 56 кнопок нам необходима матрица из 8 строк и 7 столбцов. Итоговая схема для 2 панелей у меня получилась такой:

MFD-scheme.JPG

3. Программирование контроллера с помощью MMJOY

Для программирования контроллера я использовал информацию и софт с сайта проекта mmjoy.

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

  1. Скачай архив с актуальной версией MMJOY2 и распакуй в корень диска C (не рекомендуется, чтоб в пути к MMJOY была кириллица или пробелы). 
  2. Подключи плату контроллера Arduino к компьютеру. Устройство должно определиться как Arduino Leonardo и должны установиться драйверы. Если драйверы не установятся, то установи их вручную через диспетчер устройств (devmgmt.msc), указав папку разархивированного MMJOY2 в качестве источника драйверов. 
  3. Переведи в режим bootloader, для этого на плате ProMicro нужно кратковременно замкнуть и отпустить два контакта GND и RST. При этом в диспетчере устройств пропадет Arduino Leonardo и появится новое устройство Arduino Leonardo bootloader и в диспетчере устройств запомни номер COM порта, который отобразиться рядом с именем устройства. Через 8 сек. Arduino вернется в обычный рабочий режим. 
  4. Запусти MMJoySetup.exe из распакованного архива MMJOY2. Перейди на вкладку "Прошивка". Укажи следующие значения в полях: 
    1. Файл прошивки: C:\MMjoy2\Firmware\Firmware_lufa_[MMJOY2_ATMEGA32U4].hex 
    2. Чип: ATmega32U4 
    3. Загрузчик: Arduino 
    4. Порт: COM порт из предыдущего шага, например, COM4 (у тебя может быть другой порт!) 
  5. Теперь переведи Arduino в режим bootloader замкнув кратковременно контакты RST + GND. После того как bootloader определится в системе поле с номером порта должно стать зеленым. В этот момент нужно сразу нажать "Загрузить прошивку".
    Если все сделано верно, то появится окно с терминалом cmd.exe в котором будет отображаться процесс загрузки прошивки. 
  6. В результате в системе должно определиться новое устройство MMJOY2. 
  7. Выбери устройство в "Список устройств и конфигурация". Изображение джойстика слева должно стать синего цвета, это будет означать, что MMJoySetup определил контроллер с новой прошивкой и готов к программированию. 
  8. Перейди на вкладку "Настройка кнопок". И задай такие значения для рядов и строк, а также укажи напротив полей "Кнопка 1" - "Кнопка 56" соответствующие номера 1 - 56:
    image.png
    Ряды и колонки соответствуют таковым из принципиальной схемы, которую я приводил выше. Только название контактов несколько отличается, от их маркировки на плате. Приведу, на всякий случай, схему какому контакту на плате соответствуют адреса в конфигураторе MMJoySetup:
    image.png
  9. Нажми "Записать в контроллер". На этом программирование завершено. 

4. Разработка печатной платы

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

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

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

Ближе к делу. Трафарет я нарисовал в sPlan6. На всякий случай выложу 2 варианта: 

Нужно распечатать один из вариантов (рекомендую вариант из 4 плат) в 100% масштабе, желательно, на термотрансферной бумаге. Я печатал на мелованной бумаге (тоже пригодна для ЛУТ-технологии изготовления плат).

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

5. Делаем печатную плату

Печатаем трафарет, утюжим, травим платы в хлорном железе:

photo_2021-11-16_23-36-09.jpgphoto_2021-11-17_00-40-28.jpgphoto_2021-11-17_00-40-29.jpgphoto_2021-11-22_23-30-30 (3).jpgphoto_2021-11-22_23-30-30 (4).jpg

Лудим сплавом розе.

photo_2022-03-21_01-38-35.jpg

Далее нужно аккуратно распилить плату на 4 отдельные, просверлить отверстия сверлом в 1 мм. Я использовал такую микродрель с цанговым патроном (на фото установлена фреза вместо сверла 🙂).

photo_2022-03-21_01-42-45.jpg

Отверстия в плате рассчитаны под тактовые кнопки TACT 6x6-4.3, высотой в 4,3 мм:

image.png

Запаиваем кнопки и диоды по схеме. Диоды желательно использовать минимального размера. Впихнуть на плату их не просто. (Фото итогового результата распаянных элементов, к сожалению, я не сделал).

6. Подбираем LCD дисплеи

Здесь я пытался найти 5-дюймовые квадратные дисплеи, чтоб максимально уменьшить колхоз, и приблизиться к оригиналу, однако ничего подобного я найти так и не смог. Поэтому остановился на аналогичном варианте на AliExpress, который предлагал GENA PILOT в своем видео (спасибо ему) в полной комплектации.

LCD приехали ко мне за месяц:

photo_2022-03-21_01-58-23.jpg

Робит!

Убедись, что у тебя найдется 2 лишних HDMI порта на видеокарте :music_whistling:

7. Сборка, настройка, проверка

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

Подгоняем пластиковые кнопки и устанавливаем их в корпус MFD-панели. Если нужно дорабатываем их напильником надфилем и наждачкой. 

Устанавливаем платы в корпус MFD рамки. Фиксируем немного термоклеем по краям. Нужно убедиться, что кнопки встали ровно и нормально нажимаются. Если необходимо, "подравниваем" кнопки на плате, особенно это касается кнопок под "качалками", если впаять кнопки криво, то они могут плохо нажиматься. 

Если все ок - приклеиваем термоклеем основательно. 

LCD дисплеи я также аккуратненько по краям посадил на термоклей. Плату управления и контроллер LCD с обратной стороны экранов прикрепил на толстый двусторонний скотч. По 4 "жвачки" по углам платы, чтоб был зазор и плата как бы висела в воздухе (тут желательно под плату положить еще диэлектрик, так как корпус LCD металлический и можно легко замкнуть что-то на плате). 

Подключаем USB + HDMI к компу.

Теперь нужно настроить расположение LCD экранов в конфигурации мониторов DCS. 

Для этого в папке DCS World\Config\MonitorSetup необходимо создать новый файл конфигурации мониторов. Здесь все индивидуально и зависит от разрешения и конфигурации ваших мониторов. В моем случае конфигурация такая (маленькие LCD в настройках Windows я развернул в вертикальное "книжное" положение, по умолчанию они используют "альбомное" отображение).

image.png

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

В моем случае координаты получились такими:

_  = function(p) return p; end;
name = _('Camera + LMFCD + RMFCD + Custom');
Description = 'Left MFCD on the left, Right MFCD on the right and camera on the center'
Viewports =
{
     Center =
     {
          x = 768;
          y = 0;
          width  = 1920;
          height = 1080;
          viewDx = 0;
          viewDy = 0;
          aspect = 1920 / 1080;
     }
}

LEFT_MFCD =
{
     x = 60;
     y = 280;
     width = 688;
     height = 688;
}

RIGHT_MFCD =
{
     x = 2748;
     y = 280;
     width = 688;
     height = 688;
}

UIMainView = Viewports.Center
GU_MAIN_VIEWPORT = Viewports.Center

Запусти DCS:

  • Установи разрешение экрана исходя из суммы ширины всех дисплеев и высоты самого высокого. В моем случае это 768+1920+768 = 3456x1080. Выбери конфигурацию мониторов.
  • Назначь кнопки OSB1 - OSB20 а также GAIN +-, SYM +-, BRT +-, CON +-.

Результат

photo_2022-03-21_03-03-29.jpgphoto_2022-03-21_02-55-02.jpg

Также записал коротенькое видео (снимал на кусок текстолита, за качество сорян)

Имеющиеся косяки и планы

  • На текущий момент я сделал только 1 MFD (для второго жду необходимые материалы, текстолит и прочую мелочь).
  • Нет крепления, его я не продумывал и поэтому пока колхоз.
  • Дисплеи не всегда с первого подключения определяются в системе (возможно у меня плохой кабель).
  • В корпусе не предусмотрены нормальные посадочные места для платы, поэтому все держится на термоклее.
  • Подсветку планирую сделать, но пока не знаю как. Внутри все довольно плотно, но что-то придумаю.
  • На кнопках нет символики. Я планировал сделать трафарет и покрасить кнопки серой краской поверх трафарета, чтоб прозрачными были только символы и при наличии подсветки все было бы аутентичненько, но я пока не знаю как сделать такой мелкий трафарет с буквами SYM, GAIN и т.д.
  • Внутри текущей рамки, есть посадочные места и отверстия под крепление, которые видимо планировал использовать автор 3D модели, однако мне они помешали и мне пришлось их спилить фрезой. Поэтому 3D модель, вероятно, придется оптимизировать с учетом этого недостатка.

Расходы

  1. 3D печать 2 рамок с кнопками - $ 35
  2. 2 x LCD панели - $ 78
  3. Текстолит, хлорное железо, диоды (FR207), кнопки (TACT 6x6-4.3) прочая мелочь ~ $ 10
  4. Arduino Pro Micro - $ 8

Ссылки на файлы одним архивом:

Пост писал на одном дыхании, так что мог что-то забыть/упустить.

Задавайте свои ответы если что, буду рад ответить :joystick:


Edited by Martyr
  • Like 5
  • Thanks 2

Настоящий летчик-испытатель должен свободно летать на всем, что только может летать, и с некоторым трудом на том, что, вообще говоря, летать не может.

Link to comment
Share on other sites

Солидно выглядит. Единственное, я слышал, что вместо диодных матриц удобней и выгодней использовать сдвиговые регистры. Сам не электронщик, просто что-то осело в голове :)

  • Like 1

i7 3770K@3,5Ghz / H77 / 16GB / GeForce 460 1GB / X52 / FaceTrackNOIR 1.7/ Win7 x64

----

Вы знаете сколько я слышал разных идеологий? И все они были прекрасны и убедительны. Коммунизм, толерантность, демократия, равноправие, капитализм, свободный рынок. А побеждает всегда почему-то информированность, точность прицела и масса секундного залпа. © bash.org.ru (чуть поправлено)

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...