В первую очередь я хочу предупредить, что это не рекламный пост, я не имею никакого отношения к фирме – производителю оборудования описанного в статье и не имею никаких печенек от неё кроме предоставленного для интеграцию в программу оборудования. Это обучающий пост, который показывает, как с помощью программы FLProg управлять этим оборудованием. Естественно будет небольшой обзор имеющихся у меня блоков и моего личного отношения к этим устройствам.
Теперь небольшая предыстория. Один из пользователей программы обратился в фирму «Ноотехника» с предложением создать пользовательский блок (в то время в программе уже была такая возможность) для работы с производимым ими оборудованием через программу FLProg. Руководитель предприятия пошёл другим путём. Он связался со мной и предложил предоставить мне образцы своей продукции для интеграции их в программу. Изучив предложение, я согласился, поскольку на сайте была библиотека для работы с модулем передатчика, в наличии было хорошее описание, и проблем я не видел. Посылка пришла очень быстро (что странно для почты России) даже с учетом пересечения границы.
Что пришло:
Модуль передатчика МТ1132
Модуль MT1132 предназначен для управления силовыми блоками системы nooLite с платформы Arduino, микроконтроллеров или ПК.
Конструктивно модуль выполнен в виде печатной платы, на которой расположен управляющий контроллер и передатчик.
Управление модулем осуществляется через последовательный интерфейс UART. Принятые по UART команды управления модуль передает на силовые блоки через встроенный радиопередатчик.
Силовой блок SD111-180
Радиоуправляемый светодиодный RGB контроллер (силовой блок) nooLite SD111-180 предназначен для управления светодиодной лентой на 12 В. Светодиодная лента может быть как трехцветная (RGB), так и одноцветная.
Силовой блок SU111-300
Силовой блок SU111-300 — это универсальный радиовыключатель, предназначенный для дистанционного включения/выключения освещения с возможность регулировки яркости для диммируемых источников света (лампы накаливания, светодиодные диммируемые лампы). Блок может работать в двух режимах: релейном и диммирования, зависящих от предполагаемого типа нагрузки. В релейном режиме SU111 300 способен работать с любым типом нагрузки.
Более подробную информацию об этих устройствах можно узнать на сайте производителя.
Блоки сделаны очень качественно. Подозреваю, что предприятие работает на базе какого – то бывшего советского предприятия, а в советские времена в Белоруссии производили хорошую технику. Хотя может я и ошибаюсь.
Оригинально реализована система включения привязки силовых блоков. Для включения этого режима необходимо сжать корпус в определённой точке, и сработает микропереключатель внутри. Но в инструкции это место показано достаточно чётко, так что я попал с первого раза.
Первое включение передатчика то же заставило немного понервничать. При подаче питания на плате ничего не засветилось, хотя светодиод на плате есть. Я привык, что индикация наличия питания есть на всех устройствах. На этом передатчике его нет. Я даже сначала решил, что плата не работает, и полез тестером мерить напряжения. Но все вроде в порядке. Тогда загрузил библиотеку с сайта, и начал пробовать примеры. Светодиод моргает при отправке команды. При этом и тут есть тонкость. Он моргает не при получении данных по UART, а именно при отправке команды в эфир. Эта особенность то же заставила понервничать. Уже при разработке компилятора внезапно перестали проходить команды на силовые блоки, и перестал моргать светодиод. Хотя я четко видел, что пакеты по UART уходят. Решил, что я всё-таки его спалил. Оказалась что ошибка в коде, и контрольная сумма, которая присутствует в пакете, у меня неправильно рассчитывалась. Соответственно передатчик этот пакет не принимал и команды не отправлял. После исправления кода, всё прекрасно заработало.
Теперь насчет библиотеки, которая лежит на сайте производителя. Первоначально я планировал использовать её. Но поковырявшись с ней, понял, что она меня не устраивает. Во первых она не поддерживает работу с контроллером светодиодной лены(SD111-180). Во вторых она не умеет управлять режимом диммирования для силового блока(SU111 300). Ну и напоследок она гвоздями прибита к SoftwareSerial. Это не всегда хорошо. Всё-таки в ряде случаев для экономии ресурсов лучше использовать аппаратный UART. Поэтому мне пришлось разрабатывать код самому (естественно подглядывая в реализацию библиотеки).
Во всём остальном это оборудование оставило очень приятное впечатление. Работает стабильно, возможностей много, качество на очень высоком уровне. По цене конечно выше чем привычное мне оборудование из Китая. Но в Китае аналогов пока нет (по крайней мере такого же комплекса я не нашёл), ну а по сравнению с дальним зарубежьем где производят подобные системы, цена даже очень привлекательна.
Ну а теперь посмотрим на реализацию управления передатчиком через программу FLProg.
Подключается передатчик к Arduino в соответствии со схемой.
Соединение RX (Arduino) – TX(MT1132) можно не использовать, поскольку обратную связь от передатчика к контроллеру (подтверждение отправки команды) я не реализовывал. Исключение этой связи позволяет при использовании аппаратного UART не отключать передатчик при проливке контроллера.
Для управления передатчиком в программе FLProg, в библиотеке элементов появился блок «Управление передатчиком Noo Lite» (папка «Разное»).
Отправка команды на передатчик происходит по переднему фронту импульса на входе «Send». Для каждой команды можно использовать отдельный блок, или команда может задаваться значением, подаваемым на вход «Comand».
Как и все остальные этот блок настраивается с помощью редактора блоков (вызывается двойным кликом на блоке, перенесённом в рабочую область схемы).
Если Вы параметрируете первый такой блок в схеме, то необходимо подключить новый передатчик.
При этом откроется окно подключения передатчика
В этом окне необходимо задать имя передатчика и выбрать порт, к которому он подключен. В случае использования SoftwareSerial, так же необходимо выбрать пины для этого порта.
После подключения передатчика необходимо установить канал, на котором команда будет передаваться.
Канал можно задать как константой, итак и использовать для этого вход. Соответственно при использовании входа, канал можно изменять програмно.
Ну и напоследок выбираем отправляемую команду.
Список поддерживаемых команд:
- Привязать приёмник
- Отвязать приёмник
- Включить нагрузку
- Выключить нагрузку
- Переключить состояние
- Запустить плавное понижение яркости
- Запустить плавное повышение яркости
- Изменить направление плавного изменения яркости
- Остановить плавное изменение яркости
- Задать яркость (0 — 120)
- Включить плавный перебор цветов (только для контроллера LED ленты)
- Переключить цвет (только для контроллера LED ленты)
- Переключить режим работы (только для контроллера LED ленты)
- Переключить скорость эффекта (только для контроллера LED ленты)
- Установить яркость для каждого канала (0-255) (только для контроллера LED ленты)
- Запомнить состояние
- Установить сохранённое состояние
Для выбора команды можно использовать и вход (в списке команд выбрать «Вход») и в этом случае в процессе выполнения программы можно изменять, команду подавая на вход «Comand» её номер.
Номера команд:
Номер команды | Команда |
---|---|
0 | Включить нагрузку |
1 | Запустить плавное понижение яркости |
2 | Выключить нагрузку |
3 | Запустить плавное повышение яркости |
4 | Переключить состояние |
5 | Изменить направление плавного изменения яркости |
7 | Установить сохранённое состояние |
8 | Запомнить состояние |
9 | Отвязать приёмник |
10 | Остановить плавное изменение яркости |
15 | Привязать приёмник |
16 | Включить плавный перебор цветов (только для контроллера LED ленты) |
17 | Переключить цвет (только для контроллера LED ленты) |
18 | Переключить режим работы (только для контроллера LED ленты) |
19 | Переключить скорость эффекта (только для контроллера LED ленты) |
Обратите внимание, что в этой таблице нет команд «Задать яркость (0 — 120)» и «Установить яркость для каждого канала (0-255) (только для контроллера LED ленты)». Для отправки этих команд необходимо использовать отдельный блок. Давайте рассмотрим эти команды поподробнее.
«Задать яркость (0 — 120)» — при выборе этой команды в редакторе блока появятся дополнительные параметры.
С помощью этих параметров можно задать значение яркости, передаваемое в команде как константу, или использовать вход. Во втором случае входа у блока появится вход «Value»
«Установить яркость для каждого канала (0-255) (только для контроллера LED ленты)» — при выборе этой команды в редакторе блока так — же появятся дополнительные параметры.
И так же как в предыдущей команде значение яркости для каждого канала можно задать как константой, так и использовать вход. У блока при этом появятся соответствующие входа – «R», «G», «B»
Ну, наверное, и всё, спасибо за внимание.