Начну со схем.
Схема подключения приемника:
Здесь к blue pill подключается радиомодуль, контроллер двигателя и две сервомашинки. Аккумулятор подключается к контроллеру управления двигателя, на нем стоит стабилизатор на 5 вольт, с которого берется питание для управляющей электроники. Сервомашинки также запитываются с этих 5 вольт. Радиомодуль питается от +3,3 вольт со стабилизатора blue pill. Здесь имеется делитель напряжения, который подключен к аккумулятору, для контроля его напряжения. Информация шлется на пульт управления.
Сам приемник:
Программа для приемника: тут
Схема подключения пульта управления:
Здесь чуть побольше компонентов. Аккумулятор подключается на порт +5 вольт blue pill. Для зарядки аккумулятора к нему подключен модуль зарядки. С blue pill при помощи 3,3 вольт запитывется экран, радиомодуль, джойстики. Потенциометры джойстиков подключены к каналам АЦП blue pill, их тактовые кнопки и остальные две подключены на остальные порты в режиме вход.
Пульт управления внутри:
Программа для пульта управления: тут
Пульт в собранном виде:
В меню пульта 4 строки: 1 строка - это режим полета, во 2 строке просто отображаются данные АЦП и т.д. в 3 строке настраиваются чувствительность рулей и субтример (начальное положение элевонов), в 4 строке ничего нет (можно добавить).
Нажатие правого джойстика - переход на одну строку вниз, левый - на одну строку вверх, нажатие одновременно двух джойстиков заходит в подменю выбранной строки, аналогично производится выход. Две другие кнопки используется для настройки чувствительности в меню строки Sensors, их одновременное длительное нажатие, в любом нахождении меню, включает подсветку. В режиме полета нажатие любого из джойстиков активирует работу двигателя или дективирует, чтобы при заходе в режим полета двигатель не работал сразу и случайно не отпилить себе пальцы винтом не поранил крутящим винтом.
При отключении пульта во время работы приемника, через 2 секунды отключается двигатель.
Расскомментировав эти строчки в main.c (до надпсиси END OF DEBUG_RC OUT):
пульт можно подключить по USB к ПК при помощи любой Terminal программы (я пользовался CoolTerm), в которой нужно выбрать COM порт и присоединится к blue pill:
и в окне получить информацию о подключении радиомодуля:
Считывая установочные данные, записанные в регистры радиомодуля, можно убедиться, что модуль работает и данные совпадают с установленными. В данном случае я получил статус работы радиомодуля, его мощность передачи (максимальная), номер канала (11), скорость передачи (1 Мбит в секунду), размер передаваемого пакета (32 байта - максимальный) и количество бит контрольной суммы (в моем случае 16 бит). Если модуль не подключен или неисправен в терминал выводит такое сообщение:
Зайдя сюда в подменю Settings:
в терминал посыпятся такие строчки:
Здесь данные в таком порядке: X1: значение c АЦП правого джойстика по вертикали, Y1: значение c АЦП правого джойстика по горизонтали, значение с АЦП левого джойстика, которым управляется двигатель, значения только по вертикали, далее напряжения аккумулятора пульта, напряжения аккумулятора на приемнике, значение кнопки правого джойстика, значение кнопки левого джойстика, значения кнопок что находятся справа на пульте, субтример, чувствительность 1 и 2 (2 не используется), а также статус связи с приемником.
Как видно сигнала нет, так как примник был отключен. Также я зажал кнопку правого джойстика и просто левую кнопку, они выдают "1".
Включаю приемник и перевожу правый джойстик в правый верхний угол:
получаю сообщение что сигнал есть, а данные джойстика показывают максимальные значения.
АЦП на Blue Pill имеет разрешение 12 бит, максимальное значение котрого 4095, но в терминале видно, что оно 255, все потому что я 12 бит перевел в 8 бит (1 байт), так как один элемент массива передоваемого пакета равен 1 байту, чтобы одним байтом можно было слать значения одной из осей джойстика.
Аналогичным образом можно подключить приемник к ПК, узнать статус радиомодуля и получаемые данные с пульта, в main.c расскомментировав эти строчки:
Использовать джойстики для управления в таких проектах, вместо нормальных стиков не очень хорошо. Во-первых, для управления газа стик должен сохранять свое положение, а не быть подпружиненным и возвращаться на середину, убрать эту пружинку в джойстика очень проблемно, но я думаю можно. Во-вторых, это должны быть стики, так сказать длинные палочки, для более плавного и точного управления за счёт отдаления пальца от центра потенциометра или увеличения радиуса, это можно решить, наколхозив что-то длинное на джойстики. Специальные стики заточены именно под это, что нельзя сказать про джойстики, но на них цена уже совсем другая, например: стик FlySky.
Крыло сложно в управлении (по-моему мнению) по сравнению с моделями, имеющими хвост со стабилизатором и килем.
И наконец, то, чего мы так долго ждали!!! Видео полетов. К сожалению, видео очень короткое, так как полет был недолгий.
В ВИДЕО ПРИСУТСТВУЕТ ПАРУ ПЛОХИХ СЛОВ!
В заключении хочу написать, что это был мой первый опыт постройки подобной игрушки.
Самолёт полетел вполне уверенно, но что-то пошло не так, если честно, я не понял в чем причина, может это из-за джойстиков или все-таки конструкция крыла. Я думаю, что на этом я не остановлюсь и попробую как-нибудь еще, пересмотрев ошибки.
Всем спасибо!
Ссылки на товары которые я использовал:
Отладочная плата Blue Pill
Радиомодуль
Программатор St-Link
Набор из контроллера, двигателя винта и сервомашинок
Джойстики
Стики от FlySky
Модуль зарядки
Макетная плата
Экран от Nokia 5110
Тактовые кнопки
Аккумулятор