Cleanflight поддерживает управление светодиодными лентами, и это очень круто. В этой статье я покажу вам как я подключал и настраивал светодиоды в Naze32 с прошивкой Cleanflight. Примерно то же самое будет и в случае CC3D.
RGB светодиоды не только помогают вам найти коптер или определить его положение в пространстве, они также могут отображать полетные данные, используя разные цвета, например: низкий заряд аккумулятора, полетный режим, RSSI, уровень газа и т.д.
Статья про то, как прошить CleanFlight на Naze32 или CC3D (англ.).
Другие способы включения и выключения светодиодов с пульта управления.
Рекомендуемые светодиодные ленты для Cleanflight
Функции для работы со светодиодами в Cleanflight в первую очередь рассчитаны на ленты с индивидуально адресуемыми светодиодами. Рекомендуемый тип WS2812. Эти светодиоды идут собранные в ленты, так что вы можете просто отрезать необходимую длину или нужное количество светодиодов. Им требуется всего 1 провод для управления и питание 5В.
Я использую светодиоды WS2811, они почти идентичны WS2812, и отлично работают. Они у меня остались от моих проектов TV Ambilight (англ.) и фонаря для велосипеда (англ.), это очень яркие светодиоды. Поддерживается управление 32 светодиодами, т.е. Cleanflight может менять цвет и яркость каждого отдельного светодиода.
Стоит примерно $15 за 1 метр на eBay, еще можно посмотреть на banggood это и это.
Припаиваем разъемы к светодиодной ленте
Я не сумасшедший фанат светодиодов, поэтому решил использовать только 9 штук, разделив их на 3 полосы по 3 штуки, так что размещу их на разных частях коптера.
У меня нет большого опыта в пайке, так что было достаточно сложно припаять разъемы на контактные площадки (Оскар преувеличивает 🙂 разъемы такого размера паяются очень легко, прим. перев.).
ВНИМАНИЕ: Нужно соблюдать направление установки светодиодных лент! (Спасибо Брайану, за этот комментарий).
Светодиодные полоски в сравнении с Naze32. Я удивлен, даже цвет совпадает. 😀
Сразу после пайки, я проверил светодиоды при помощи Arduino. Нужно использовать BEC на 5В для питания лент, т.к. светодиоды очень яркие и требуют немалого тока. Arduino (подключенное по USB) не способно дать такой ток, так что есть риск спалить плату. Я использовал библиотеку NeoPixel для тестирования с Arduino.
Используя разъемы папа-мама можно соединить их последовательно.
Добавим немного термоусадки, ленты стали выглядеть намного лучше!
*ВНИМАНИЕ. Эти светодиодные ленты очень чувствительны к перегреву. Я повредил несколько штук когда паял их. Если они повреждены, то просто не будут работать. Запомните — не нужно долго держать паяльник при пайке контактов.
Обновление: уточнение деталей:
Я использовал разъемы папа-мама на лентах. «Папа» — вход, «мама» — выход (они совместимы с серворазъемами).
Чтобы подключить светодиоды к Naze32 используйте один провод для подключения к сигнальному контакту на плате, а питание лент возьмите со свободного разъема к моторам.
Резать эти ленты можно обычными ножницами.
Для соединения лент я использовал простые серво разъемы и не делал ничего чтобы защитить светодиоды, они достаточно прочные. Я беспокоился только о контакте там где паял, так что обернул в термоусадку и залил термоклеем.
Ток потребляемый светодиодами
Вам наверное интересно, какой ток потребляют эти светодиоды? Ответ — примерно 18мА каждый (конечно ток меняется в зависимости от цвета, синий потребляет больше чем красный, но это не важно для литиевых аккумуляторов). Это ток потребляемый тремя светодиодами:
Включаем LED_Strip в Cleanflight
Как вы знаете на плате Naze32 ограниченное число выходов. Чтобы использовать управление светодиодами, мы можем воспользоваться одним из свободных входов управления. По молчанию все pin1-pin8 используются как вход; для того чтобы использовать их как выход, нужно включить PPM. В этом случае только pin1 будет использован для входных данных (все каналы), а остальные пины будут свободны. PPM — это здорово, он делает вашу разводку проводов проще и опрятнее. Я рекомендую использовать PPM даже без LED_strip.
Введите следующие команды в CLI для включения LED_strip:
# feature rx_ppm Enabled RX_PPM
# feature led_strip Enabled LED_STRIP
Подключаем светодиодную ленту к Naze32
В зависимости от числа светодиодов вам нужно подсчитать потребляемый ток и выбрать соответствующий BEC. Я рекомендую использовать отдельный BEC (например от регулятора) для питания светодиодов, и не использовать тот BEC что питает радиоприемник и полетный контроллер (в этом случае просто подключите + и — к свободным контактам выходов).
Как я упоминал, эти светодиоды требуют только 1 провод для данных и контакт для светодиодов это Radio pin5 на naze32 и CC3D.
Naze32 RC5 CC3D RCO5 ChebuzzF3/F3Discovery PB8 Sparky PWM5
RC5 также используется для SoftSerial и Parallel PWM на Naze32, это значит что вы не сможете использовать LED_Strip вместе с этими функциями.
Настраиваем светодиодную ленту в Cleanflight
Есть 2 способа настройки светодиодов в CleanFlight: первый — закладка LED в графическом интерфейсе, второй — через CLI
Настраиваем светодиоды через CLI
Для настройки нужно использовать команду led. Просто «led» без параметров выдаст текущую конфигурацию.
Каждый отдельный светодиод должен быть сконфигурирован командой вида «lednumber x,y:ddd:mmm»
lednumber — это порядковый номер светодиода в вашей ленте. Светодиоды нумеруются с 0.
Система светодиодов это матрица 16 на 16, x и y — это координаты. Так что если x, y = 0,0, то это левый верхний угол. 15,15 — это ячейка в правом нижнем углу.
ddd — это направление, где N — север, E — восток, S — юг, W — запад, U — верх, D — низ. Например светодиод направленный на юго-восток под углом 45 градусов вниз должен быть сконфигурирован как SED.
mmm — это режим светодиода. Поддерживаются следующие режимы:
- W — warning — предупреждение
- F — Flight mode — режим полета и ориентация
- I — indicator — индикатор
- A — Armed State — заармлен или нет
- T — Trust State — газ
Чтобы отметить конец ленты наберите:
led 4 0,0::
Например если я использую только 3 светодиода: первый на левом переднем луче, второй на правом переднем луче и один сзади рамы:
1 2 / / FRONT / | | / / 3 / /
То нужно определить мою светодиодную ленту как:
led 0 0,0:ND:IA led 1 0,15:ND:WF led 2 8,8:D:IA led 3 0,0:: save
Настраиваем через графический интерфейс, вкладка Led Strip
Наверное это самый простой способ настройки светодиодных лент.
Открываем CleanFlight Configurator, вкладку LED Strip. Если у вас уже есть какая-то конфигурация и вы не хотите ее использовать, нажмите «Clear All Wiring». Чтобы начать добавлять светодиоды нажмите «Wire Ordering Mode».
Теперь нажмите в сетке чтобы разместить светодиод. Я размещу 3 светодиода. Затем выйдите из режима «Wire Ordering».
Следующий шаг: кликаем на каждом светодиоде, чтобы назначить им функции (LED functions) и положение (LED orientation).
После того как настроили все светодиоды нажмите «Save» (минимальная версия прошивки 1.6).
Больше примеров можно найти на странице LED strip page (англ.).
Результат
Результат вышеприведенной настройки. Просто представьте что 3 светодиода размещены не вместе а где было указано.
Еще один пример конфигурации светодиодов в Cleanflight
В этот раз я действительно размещу светодиодные полосы на миникоптере. Я буду использовать 8 светодиодов. 3 на левом переднем луче, 3 на переднем правом и 2 сзади рамы.
Мои настройки через CLI
led 0 8,9:SD:A led 1 8,8:SD:AT led 2 0,0:WD:IA led 3 1,0:WUD:FT led 4 2,0:WD:WFT led 5 13,0:ED:WFT led 6 14,0:EUD:FT led 7 15,0:ED:IA led 8 0,0::
Та же самая конфигурация, но графически:
Мне кажется, все еще достаточно сложно использовать светодиоды в CleanFlight, надеюсь в будущем этот функционал будет улучшен и сделан более дружественным пользователю.
Вот как я разместил светодиодные ленты снизу коптера:
А теперь небольшое итоговое видео: