Martyr Posted March 21, 2022 Share Posted March 21, 2022 (edited) Всем привет. Некогда посетила меня идея попробовать сделать с нуля 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 модель MFD рамки 3D модель квадратной кнопки 3D модель прямоугольной кнопки-качалки Рамки решил печатать черным пластиком, а кнопки - прозрачным, с расчетом на то, чтоб сделать им еще подсветку. Важно! 3D модели кнопок имеют размер 1 в 1 под отверстия в рамке, поэтому их нужно печатать в масштабе 95-94% от оригинала, чтоб был зазор, иначе кнопки придется долго и нудно обтачивать на этапе постобработки, чтоб они "сели" на свои места в рамке. Результат получился таким: 2. Arduino и схема подключения В качестве основы для контроллера джойстика решил взять Arduino Pro micro на базе чипа ATmega32U4. Девайс вроде минимальный по размерам, а контактов достаточно для создания нужного числа кнопок. Каждая MFD-панель имеет 28 кнопок, соответственно для двух панелей необходимо по крайней мере 56 кнопок. В Arduino для настройки множества кнопок применяются схемы в виде матрицы состоящая из "строк" и "столбцов". Выглядит это примерно таким образом: Как видно из схемы для каждой кнопки также нужно подключать диод для того, чтоб Arduino смог определять какая из кнопок в "строке" нажата. Путем нетрудных расчетов для получения 56 кнопок нам необходима матрица из 8 строк и 7 столбцов. Итоговая схема для 2 панелей у меня получилась такой: 3. Программирование контроллера с помощью MMJOY Для программирования контроллера я использовал информацию и софт с сайта проекта mmjoy. Вкратце опишу процесс подключения, настройки и загрузки прошивки в контроллер исходя из текущей схемы. Скачай архив с актуальной версией MMJOY2 и распакуй в корень диска C (не рекомендуется, чтоб в пути к MMJOY была кириллица или пробелы). Подключи плату контроллера Arduino к компьютеру. Устройство должно определиться как Arduino Leonardo и должны установиться драйверы. Если драйверы не установятся, то установи их вручную через диспетчер устройств (devmgmt.msc), указав папку разархивированного MMJOY2 в качестве источника драйверов. Переведи в режим bootloader, для этого на плате ProMicro нужно кратковременно замкнуть и отпустить два контакта GND и RST. При этом в диспетчере устройств пропадет Arduino Leonardo и появится новое устройство Arduino Leonardo bootloader и в диспетчере устройств запомни номер COM порта, который отобразиться рядом с именем устройства. Через 8 сек. Arduino вернется в обычный рабочий режим. Запусти MMJoySetup.exe из распакованного архива MMJOY2. Перейди на вкладку "Прошивка". Укажи следующие значения в полях: Файл прошивки: C:\MMjoy2\Firmware\Firmware_lufa_[MMJOY2_ATMEGA32U4].hex Чип: ATmega32U4 Загрузчик: Arduino Порт: COM порт из предыдущего шага, например, COM4 (у тебя может быть другой порт!) Теперь переведи Arduino в режим bootloader замкнув кратковременно контакты RST + GND. После того как bootloader определится в системе поле с номером порта должно стать зеленым. В этот момент нужно сразу нажать "Загрузить прошивку". Если все сделано верно, то появится окно с терминалом cmd.exe в котором будет отображаться процесс загрузки прошивки. В результате в системе должно определиться новое устройство MMJOY2. Выбери устройство в "Список устройств и конфигурация". Изображение джойстика слева должно стать синего цвета, это будет означать, что MMJoySetup определил контроллер с новой прошивкой и готов к программированию. Перейди на вкладку "Настройка кнопок". И задай такие значения для рядов и строк, а также укажи напротив полей "Кнопка 1" - "Кнопка 56" соответствующие номера 1 - 56: Ряды и колонки соответствуют таковым из принципиальной схемы, которую я приводил выше. Только название контактов несколько отличается, от их маркировки на плате. Приведу, на всякий случай, схему какому контакту на плате соответствуют адреса в конфигураторе MMJoySetup: Нажми "Записать в контроллер". На этом программирование завершено. 4. Разработка печатной платы Печатную плату я решил делать сам "по старинке": фольгированный текстолит + трафарет на лазерном принтере перенесенный утюгом на плату + хлорное железо. Теплая, ламповая, Классика! Однако метод изготовления не принципиален. У меня было несколько идей какую именно конфигурацию платы использовать. Сначала я хотел сделать квадратную цельную плату, которая помещалась бы полностью внутрь рамки, однако из-за того, что у меня не оказалось подходящего инструмента, чтоб аккуратно выпилить такой квадрат в текстолите, и после нескольких неудачных попыток от такой идеи я решил отказаться, а вместо этого сделать 4 отдельные платки на каждую "грань" MFD панели, которые планировал соединить друг с другом проводами. Для реализации схемы нужен двусторонний текстолит, так как схема достаточно плотной получается, и на одной стороне все контакты не помещаются. Ближе к делу. Трафарет я нарисовал в sPlan6. На всякий случай выложу 2 варианта: Вариант цельной платы (требует доработок, так как в корпус MFD-рамки она не влезет!) Вариант цельной платы (PDF версия для печати) Вариант с 4 отдельными платами Вариант с 4 отдельными платами (PDF версия для печати) Background для sPlan схемы Нужно распечатать один из вариантов (рекомендую вариант из 4 плат) в 100% масштабе, желательно, на термотрансферной бумаге. Я печатал на мелованной бумаге (тоже пригодна для ЛУТ-технологии изготовления плат). Трафарет подготовлен таким образом, что при складывании листа одна сторона платы будет как-раз на своем месте над обратной стороной. При переносе тонера на текстолит, нужно очень точно расположить трафарет и желательно проверять "на просвет" что все дорожки на своих местах. 5. Делаем печатную плату Печатаем трафарет, утюжим, травим платы в хлорном железе: Лудим сплавом розе. Далее нужно аккуратно распилить плату на 4 отдельные, просверлить отверстия сверлом в 1 мм. Я использовал такую микродрель с цанговым патроном (на фото установлена фреза вместо сверла ). Отверстия в плате рассчитаны под тактовые кнопки TACT 6x6-4.3, высотой в 4,3 мм: Запаиваем кнопки и диоды по схеме. Диоды желательно использовать минимального размера. Впихнуть на плату их не просто. (Фото итогового результата распаянных элементов, к сожалению, я не сделал). 6. Подбираем LCD дисплеи Здесь я пытался найти 5-дюймовые квадратные дисплеи, чтоб максимально уменьшить колхоз, и приблизиться к оригиналу, однако ничего подобного я найти так и не смог. Поэтому остановился на аналогичном варианте на AliExpress, который предлагал GENA PILOT в своем видео (спасибо ему) в полной комплектации. LCD приехали ко мне за месяц: Робит! Убедись, что у тебя найдется 2 лишних HDMI порта на видеокарте 7. Сборка, настройка, проверка Платы спаиваем по схеме тонкими проводами. Фиксируем их на плате спермотермоклеем, так как они легко отрываются от посадочных мест. Проверяем, что все кнопки работают, и нигде не ошиблись на этапе пайки/прогроммирования. Тестировать удобно в MMJoySetup, выбрав контроллер из списка и перейдя на вкладку "Настройка кнопок". Нажми также "Считать из контроллера". Нажатие кнопок будет отображаться красным цветом. Подгоняем пластиковые кнопки и устанавливаем их в корпус MFD-панели. Если нужно дорабатываем их напильником надфилем и наждачкой. Устанавливаем платы в корпус MFD рамки. Фиксируем немного термоклеем по краям. Нужно убедиться, что кнопки встали ровно и нормально нажимаются. Если необходимо, "подравниваем" кнопки на плате, особенно это касается кнопок под "качалками", если впаять кнопки криво, то они могут плохо нажиматься. Если все ок - приклеиваем термоклеем основательно. LCD дисплеи я также аккуратненько по краям посадил на термоклей. Плату управления и контроллер LCD с обратной стороны экранов прикрепил на толстый двусторонний скотч. По 4 "жвачки" по углам платы, чтоб был зазор и плата как бы висела в воздухе (тут желательно под плату положить еще диэлектрик, так как корпус LCD металлический и можно легко замкнуть что-то на плате). Подключаем USB + HDMI к компу. Теперь нужно настроить расположение LCD экранов в конфигурации мониторов DCS. Для этого в папке DCS World\Config\MonitorSetup необходимо создать новый файл конфигурации мониторов. Здесь все индивидуально и зависит от разрешения и конфигурации ваших мониторов. В моем случае конфигурация такая (маленькие LCD в настройках Windows я развернул в вертикальное "книжное" положение, по умолчанию они используют "альбомное" отображение). Глобальные координаты рендера в 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 +-. Результат Также записал коротенькое видео (снимал на кусок текстолита, за качество сорян) Имеющиеся косяки и планы На текущий момент я сделал только 1 MFD (для второго жду необходимые материалы, текстолит и прочую мелочь). Нет крепления, его я не продумывал и поэтому пока колхоз. Дисплеи не всегда с первого подключения определяются в системе (возможно у меня плохой кабель). В корпусе не предусмотрены нормальные посадочные места для платы, поэтому все держится на термоклее. Подсветку планирую сделать, но пока не знаю как. Внутри все довольно плотно, но что-то придумаю. На кнопках нет символики. Я планировал сделать трафарет и покрасить кнопки серой краской поверх трафарета, чтоб прозрачными были только символы и при наличии подсветки все было бы аутентичненько, но я пока не знаю как сделать такой мелкий трафарет с буквами SYM, GAIN и т.д. Внутри текущей рамки, есть посадочные места и отверстия под крепление, которые видимо планировал использовать автор 3D модели, однако мне они помешали и мне пришлось их спилить фрезой. Поэтому 3D модель, вероятно, придется оптимизировать с учетом этого недостатка. Расходы 3D печать 2 рамок с кнопками - $ 35 2 x LCD панели - $ 78 Текстолит, хлорное железо, диоды (FR207), кнопки (TACT 6x6-4.3) прочая мелочь ~ $ 10 Arduino Pro Micro - $ 8 Ссылки на файлы одним архивом: Яндекс Диск Google Drive MMJOY2 Конфиг дисплеев Camera+LMFCD+RMFCD+Custom.lua Пост писал на одном дыхании, так что мог что-то забыть/упустить. Задавайте свои ответы если что, буду рад ответить Edited March 21, 2022 by Martyr 5 2 Настоящий летчик-испытатель должен свободно летать на всем, что только может летать, и с некоторым трудом на том, что, вообще говоря, летать не может. Link to comment Share on other sites More sharing options...
Serjevski Posted March 25, 2022 Share Posted March 25, 2022 Солидно выглядит. Единственное, я слышал, что вместо диодных матриц удобней и выгодней использовать сдвиговые регистры. Сам не электронщик, просто что-то осело в голове :) 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 More sharing options...
Recommended Posts