Перейти к публикации

Рекомендованные сообщения

Опубликовано: (изменено)

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

Итак, в свое время была создана небольшая экосистема из электроники и софта. Где центральное место занимал контроллер F3 с платами периферии, которые осуществляли функции ввода/вывода (кнопки, оси тумблера, лампочки, моторчики...). В простейшем случае получался просто игровой джойстик, в более сложных задачах, мог получится достаточно развитый кокпит. Внутренний функционал железок настраивался с помощью программного конфигуратора. Функции ввода: тут как у большинства других контроллеров, такой же функционал по настройке кнопок/осей, различные датчики,как аналоговые так и цифровые. Режимы, такие как ZOOM, STOP, и прочие операции над осями, появились в арсенале еще в далеком 2009 году... Но самое интересное, это конечно реализация функций вывода.

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

Такой софт также был создан, и вошел в общую экосистему, программа-роутер F3ROTE v2. 

Все конечно становится скучнее, когда дело доходит до конкретных реализаций, ибо не все симуляторы позволяют выводить данные наружу, в т.ч. и ИЛ2. Да и не всем захочется так сильно заморачиваться.

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

Поэтому, поразмыслив решил. Пусть в контроллере останется самый базовый функционал. А вот все остальное, пусть будет реализовано во внешней программе, вышеназванном роутере. Тут немного подробнее расскажу про него.

Скрытый текст

 

Ядро роутера, сервер данных. Фактически просто таблица с данными, где каждая ячейка(переменная) имеет свой номер (индекс). К серверу подключаются клиенты (например симулятор, или сам контроллер), и записывают в определенные переменные нужные данные, например состояние какой то кнопки.

Так же клиенты "подписываются" на определенные, нужные им переменные. Задача сервера, отправлять значения переменных клиентам, которые на них подписаны. Отправка происходит только в момент изменения переменной.

Например, симулятор записывает в сервер в переменную N значение какой то лампочки, 1/0 (вкл/выкл). Зная про это, мы "подписываем" контроллер на эту переменную, и при ее изменении сервер будет отправлять нужное значение на какой то выбранный при настройке реальный светодиод.

 

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

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

Это была теория, теперь к более интересному, к практике. Пока жу несколько примеров, как можно организовать индикацию. Во всех случаях, используется только связка контроллер + роутер ( т.е. без симулятора).

итак пример 1:

выводи показания оси на цифровой индикатор

 

В качестве источника данных может выступать любой джойстик.

Вывод осуществляется на контроллер F3.1 на базе платы ProMicro

Еще более интересный пример. Можно использовать с любым джойстиком. Функции вывода не требуются, вывод осуществляется на дисплей ПК.

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

Что же, тут нужен чек-лист проверки. Вот небольшой отрезок:

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

Изменено пользователем kreml
  • Нравится 8
  • Поддерживаю! 3
Опубликовано: (изменено)

Здравствуйте, Станислав.

А где взять новый конфигуратор и роутер?

Изменено пользователем semenovkr
Опубликовано: (изменено)

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

Подходящие платы: ProMicro (на чипе atmega32u4),  teensy2.0 (At90usb128). В дальнейшем также появится поддержка плат на основе чипов stm32, сейчас идет предварительная работа по оценке нужного функционала.

Основной функционал:

датчики (оси) RAMS, TLE5010/5011, KMA200, MLX90316, MLX90333, встроенный АЦП.

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

кнопки: сдвиговые регистры cd4021, hc165d. кнопки подключенные по матричной схеме. Прямое подключение к свободным пинам платы.

цифровые дискретные и ШИМ выводы с прямым подключением к свободным пинам контроллера.

дополнительное подключение светодиодной индикации на основе св.диодных драйверов MAX7219, STP08CP05, STP16CP05.

действия с осями/кнопками: фильтрация, в т.ч. динамическая, изменение разрядности осей. Настройка кривой отклика осей. Режимы ZOOM (маневренность и точность), STOP, центрирование, триммирование. Сложение, вычитание, селективность осей. Оси управляемые от кнопок, кнопки управляемые осями. Привязка кнопок к дискретному выводу.

Встроенный AVR-ISP программатор.

Сохранение/чтение настроек в файлы.

 

-----

Сейчас думаю, где лучше все разместить. Пока временно(на постоянку)))) брошу на дропбокс

Изменено пользователем kreml
  • Нравится 5
  • Поддерживаю! 2
Опубликовано:

Сможете дать ссылку на дропбокс, когда будет готово. Хочу попробовать новый конфигуратор с teensy++ 2.0.

Опубликовано:

Вчера готовил выложить еще одно видео, быстрой обзор функционала новой прошивки. И прямо в процессе отловил таракана) Это о пользе создания всяких обзоров и мануалов. Пока пишешь прошивку, готовые функции после тестирования уходят на второй план, и могут в итоге быть забагованы в процессе добавления новшеств. А тут все по порядку, с самого начала проходишь.

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

Так что, если кто хочет помочь с Прошкой, буду рад помощи. 

Софт тут

Да, еще. Я не отрабатывал способы загрузки прошивки через стандартный загрузчик. Сразу затер его своей версией. 

Поэтому выложил 2 варианта файла прошивки, hex - стандартный формат файла, прошивать точно также как например MMJOY

cff - это файл для прошивки через встроенный программатор F3

  • Нравится 4
  • Спасибо! 2
  • Поддерживаю! 1
Опубликовано:

На дропбокс выложил новые конфигуратор и прошивки, в т.ч. для teensy2

Кстати, как оказалось на teensy++2.0 остался стандартный загрузчик. Смог его проверить, все отлично прошивается утилитой которая идет вместе с конфигуратором MMJOY

  • Нравится 1
  • Спасибо! 3

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...