Какую работу выполняет FreeJoy
FreeJoy — свободно доступная настраиваемая прошивка для самодельных игровых устройств: кнопочных панелей, педалей, джойстиков и рычагов тяги. Конфигуратор позволяет назначить выводы, выбрать поведение переключателей, откалибровать оси и записать параметры в устройство. Для поддерживаемых функций собственный программный код не требуется.
Это экономит работу над USB-отчётами, опросом входов и типовой логикой управления. Механика, аккуратный монтаж и назначения в игре остаются частью проекта. Отсутствие опыта программирования не мешает начать. Подключи одну кнопку, посмотри её реакцию и только затем добавляй следующую. Для дисплея с собственным кодом есть дополнительный путь: руководство ИИ и программирование. Оно помогает разбить другую задачу на проверяемые этапы.
Сначала плата и версии программ
Исходный проект ориентирован на STM32F103C8, обычно установленный на Blue Pill. Цвет платы не подтверждает совместимость. Black Pill с F401/F411, ESP32 и Arduino Uno нельзя просто прошить тем же файлом. Проверь маркировку микросхемы, схему, требования к памяти и целевую платформу прошивки. Похожий клон также не получает автоматического подтверждения пригодности.
ST официально указывает для F103C8 64 КБ flash-памяти. Файл выпуска 1.7.3b0, проверенный здесь как данные, укладывается в этот диапазон; предполагать расширение до 128 КБ не требуется. При этом всё равно необходимо проверить реальную плату и выбрать правильный способ установки.
На 18 октября 2026 года официальные страницы помечают прошивку v1.7.3b0 и Qt Configurator 1.7.3b0 как последние выпуски под названием 1.7.3. Используй согласованные версии. Старые настройки и рисунки требуют проверки: история выпусков содержит изменение назначения выводов I²C. В выборе поможет сравнение микроконтроллеров. Более быстрый процессор сам по себе не обеспечивает совместимость с прошивкой для другой микросхемы.
USB HID, DirectInput и кнопки DX
HID означает Human Interface Device. С подходящей прошивкой FreeJoy определяется как игровой USB-контроллер и использует инфраструктуру HID в Windows. После настройки конфигуратор не обязан постоянно работать для обычного ввода. Можно подключить панель, убедиться, что она определилась, и пользоваться сохранёнными назначениями симулятора.
DirectInput — интерфейс Windows, через который игры могут читать контроллеры. «Кнопка DX» здесь означает сообщаемое нажатие джойстика, а не готовую команду выпуска шасси. Значение задаётся назначением в игре. XInput — другой интерфейс; игра, поддерживающая только XInput, может не распознать устройство. Старый симулятор также может принимать меньше кнопок, чем предоставляет FreeJoy. Поэтому проверь именно нужную игру, прежде чем строить большую панель.
План небольшой панели кокпита
В примере используются четыре кнопки без фиксации, один фиксируемый выключатель, инкрементальный энкодер с нажатием и линейный потенциометр 10 кОм. Требуются четыре отдельных команды, раздельные включение и выключение доступной функции, два направления регулировки и одна непрерывная ось. Заранее проверь, существуют ли такие назначения у выбранного самолёта или машины.
Таблица предлагает план для подходящей Blue Pill с новой конфигурацией. Цифровые входы настраиваются как Button_Gnd, контакты замыкаются на общую землю. Крайние выводы потенциометра подключаются к 3,3 В и GND, движок — к A0. Выполняй монтаж без питания. Сверь маркировку и доступные функции своей платы. Выводы USB, программирования и уже занятых интерфейсов должны оставаться зарезервированными, а не попадать в список свободных входов.
| Элемент | Предлагаемые выводы | Ожидаемое поведение |
|---|---|---|
| Четыре кнопки | B12, B13, B14, B15 → GND | Четыре отдельных обычных кнопки |
| Выключатель с фиксацией | B5 → GND | Два импульса: замыкание / размыкание |
| Энкодер с нажатием | A/B к B6/B7; кнопка B8; общая земля | Кнопка каждого направления и нажатие |
| Линейный потенциометр 10 кОм | 3,3 В / движок A0 / GND | Откалиброванная ось без центрирования |
От пустой платы до первого входа
Перед изменением готового контроллера сохрани настройки и запиши версию прошивки. Для новой платы проект описывает начальное программирование через ST-Link или USB-UART. Следуй официальной инструкции для нужного режима загрузки, питания и файла. Одного USB-кабеля недостаточно, чтобы пустая плата стала FreeJoy. Основы объясняет раздел прошивки.
Прочитай конфигурацию устройства, назначь сначала только B12 как Button_Gnd и нажми «Write Config to Device». Нажатием первой кнопки найди её физический номер, затем свяжи его с обычной логической кнопкой. Снова запиши и проверь результат. «Save Config to File» создаёт копию на компьютере, но не заменяет запись в плату. Отключи и подключи USB, чтобы убедиться в сохранении результата. Не добавляй остальные провода, пока этот этап не работает предсказуемо.
Физические контакты и логические кнопки
Физическая кнопка — обнаруженный контакт, логическая — сигнал, который получает компьютер. Номера могут различаться. Записывай отдельно название элемента, физический вход и логический выход. Один контакт может обслуживать несколько функций. Для фиксируемого выключателя ToggleSwich_On создаёт импульс при замыкании, а ToggleSwich_Off — при размыкании. Назначай отдельные команды включения и выключения только при их наличии в симуляторе.
Button_normal следует состоянию контакта; Button_Toggle меняет сохранённое состояние после каждого нажатия. Подавление дребезга убирает паразитные переходы, Delay Timer задерживает активацию, Press Timer задаёт её длительность в соответствующем режиме. Начни со стандартных значений и меняй один параметр за раз. Слишком большая задержка подавления дребезга может пропускать короткие нажатия, а длинный импульс — удерживать игровую команду. Проверь также запуск с выключателем, уже находящимся во включённом положении.
Больше функций и подключений
Документация указывает до 128 цифровых входов, восемь осей, четыре POV и пять модификаторов Shift. Это функциональные пределы, а не обещание любой одновременной комбинации без конфликтов выводов и ресурсов. Группы Radio сохраняют выбранную функцию, последовательные режимы перебирают назначения, Shift добавляет слой управления. Подпиши слои на панели, чтобы не вспоминать их во время полёта.
Количество контактов можно увеличить матрицей или поддерживаемыми сдвиговыми регистрами. Матрице нужны правильные строки, столбцы и диоды по схеме проекта. Обязательно проверь несколько одновременных нажатий. У 74HC165 и CD4021 назначаются Clock, Data и Latch с учётом конкретной микросхемы; документация рекомендует 3,3 В. 74HC595 выполняет другую задачу и не является заменой входного регистра. Выбор механики рассмотрен в разделе органов управления.
Другие документированные функции включают четыре PWM-канала освещения и до 24 отдельных светодиодов либо светодиодов в матрице. Версия 1.7.3 добавляет адресные WS2812b/PL9823, включение кнопками, таймеры одноцветных светодиодов и их внешнее управление через USB HID и конфигуратор. Проект указывает до 50 адресных светодиодов. Отчёты UART TX могут передавать данные внешним устройствам. Это не создаёт автоматически телеметрию симулятора или проверенную интеграцию с Cockpit Suite.
Энкодер: вращение отличается от нажатия
Инкрементальный энкодер выдаёт два сдвинутых сигнала, позволяющих определить направление вращения. FreeJoy может формировать две логические кнопки или менять ось. Нажатие ручки — отдельный контакт. Wiki различает до 15 обычных энкодеров и одного быстрого; Fast_Encoder использует A8 и A9, а не любые свободные выводы. Наш обычный энкодер подключён к B6/B7, его кнопка — к B8.
Назначь Encoder_A и Encoder_B согласно инструкции. Медленно поверни на десять щелчков в каждую сторону, затем повтори быстрее и сравни число срабатываний. Обратное направление, двойные шаги и пропуски требуют разных проверок: каналы, тип энкодера, качество контактов, времена. Wiki указывает 10 мс по умолчанию и рекомендует импульсы короче 50 мс. Это не гарантированное оптимальное значение для любого симулятора; меняй его по результатам воспроизводимого теста.
Оси: от датчика к полезному ходу
Назначь A0 аналоговым источником потенциометра и сопоставь с логической осью, например X. Неиспользуемые оси отключи. FreeJoy также документирует цифровые датчики AS5600 и определённые варианты TLE501x, внешние АЦП ADS1115 и MCP3201/02/04/08. Важны точная модель, интерфейс, канал и версия конфигурации. Это не означает поддержку произвольного датчика Холла или модуля I²C.
Сначала наблюдай исходное значение: оно должно последовательно меняться вместе с движением. Запусти калибровку, пройди реальные механические пределы и сохрани результат. Для самоцентрирующейся оси учитывается положение покоя; рычагу тяги обычно не нужен искусственный центр. Внутренние аналоговые входы имеют разрешение 12 бит. Более крупные числа в диапазоне USB не добавляют точности измерения и не устраняют люфт механизма.
Настройка мёртвых зон, фильтров и кривых
Центральная мёртвая зона скрывает небольшие колебания около середины, динамическая — небольшие изменения около текущего значения. Обе могут поглотить нужное движение, поэтому начинай с малого. Семь уровней фильтра сглаживают сигнал, но увеличивают задержку. Проект не рекомендует уровни выше 3 для чувствительных к времени реакции осей. Сильный фильтр не исправляет плохой контакт или свободное крепление.
Инверсия меняет направление. Кривые меняют чувствительность по ходу оси. Prescaler, комбинации осей, изменение, центрирование и сброс кнопками, а также кнопки от диапазонов оси — дополнительные документированные возможности. Сначала добейся надёжного линейного отклика. Затем добавляй только нужную функцию и сравнивай с сохранённой конфигурацией. Кривые FreeJoy и симулятора накладываются друг на друга, из-за чего труднее понять причину необычной реакции.
Проверка в симуляторе и поиск неисправностей
Открой joy.cpl в Windows и свойства контроллера. Начни с младших номеров кнопок и оси примера. Классическое окно может отображать не все кнопки большого устройства; отсутствие индикатора за его пределами не доказывает поломку. Затем назначь одну команду в симуляторе. Проверь нажатие, удержание, отпускание, переподключение и перезапуск. Соседние входы не должны реагировать.
Нет исходного контакта — проверь проводку и режим вывода. Физический вход есть, логического нет — проверь назначения, Shift и таймеры. Windows реагирует, игра нет — проверь выбранное устройство, предел кнопок и дубли назначений. Подтверждённое положение шасси для LED или OLED требует отдельной обратной телеметрии. Документированные LED-выходы и управление с компьютера тоже нуждаются в подходящей интеграции. Подробнее — USB-ввод и поиск неисправностей.
Развивай проект вместе с сообществом
После каждого успешного этапа сохраняй конфигурацию, план выводов и короткий результат проверки. Полезный вопрос выглядит так: «B12 физически реагирует, логическая кнопка 1 нет; обе версии 1.7.3b0; Shift отключён». На форуме Cockpit Suite помогаем также с корпусами для 3D-печати, фрезеровкой панелей на CNC и лазерными работами в LightBurn. Фото подписанных соединений упрощает обсуждение.
Cockpit Suite — молодой проект с уже доступным ПО для поддерживаемых симуляторов и устройств. Мы стремимся к единой программной среде и простой настройке подходящих сочетаний; это не непроверенное обещание интеграции FreeJoy. Мы хотим разбираться с трудностями вместе и по возможности отвечать в тот же день, иногда позже при позднем обращении. Опыт европейского сообщества и пользователей из других регионов улучшает руководства. Даже первая аккуратно описанная кнопка помогает следующему участнику.
Первоисточники и версии
Проверено 18 октября 2026 года. Возможности описаны по документации проекта и Microsoft. План панели и проверки — наш пример, а не физически испытанный набор.
- FreeJoy: project and featuresОфициальная документация; учитывай версию своей прошивки.
- FreeJoy firmware v1.7.3b0Официальная документация; учитывай версию своей прошивки.
- FreeJoy Configurator Qt releasesОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: flashing firmwareОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: configuration filesОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: buttonsОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: direct inputs and matricesОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: shift registersОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: encodersОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: axis configurationОфициальная документация; учитывай версию своей прошивки.
- FreeJoy: advanced settingsОфициальная документация; учитывай версию своей прошивки.
- Microsoft: HID architectureОфициальная документация; учитывай версию своей прошивки.
- Microsoft: XInput and DirectInputОфициальная документация; учитывай версию своей прошивки.
- STMicroelectronics: STM32F103C8Официальная документация; учитывай версию своей прошивки.