Управление выходами

Управление выходами в проекте SerialStar

Цель

Разобраться с управлением цифровыми выходами и научиться программировать ШИМ

Что потребуется

  • Модуль MBee-868-2.0 или MBee-868-3.0 – 2 шт
  • Плата USB-UART MB-USBridge – 1 шт
  • USB-провод – 1 шт
  • Компьютер с терминальной программой

Что делаем

Модуль на плате MB-USBridge

  1. Устанавливаемоба модуляна платы MB-USBridge, в соответствии с изображением.
  2. Предполагаем, что ПО SerialStar в модуль уже загружено. Если нет, то посмотрите, как это сделать здесь. Не забываем сбросить все настройки к заводским значениям. Там рассказано, как это сделать.
  3. Запускаем терминальную программу, выбираем номер порта и устанавливаем для него 9600 8N1 CTS/RTS. Очень желательно включить режим локального эха.
  4. Входим в командный режим («+++» или «SYSTEMBUTTON»).
  5. Вводим команду AT HV⏎ (здесь и далее ⏎ означает нажатие клавиши «ENTER») и на экране выводится полная информация о текущих настройках линий ввода/вывода.
  6. Плата MB-USBridge имеет на борту совсем немного периферии. Нам нужно выбрать какую-либо линию для того, чтобы было можно наблюдать результаты наших экспериментов. В качестве таковой проще всего будет использовать линию R0. С ней на плате соединен белый светодиод, который «по умолчанию» загорается при переходе модуля в командный режим. Для начала научимся включать/выключать его с помощью AT-команд. Поэтому из командного режима не выходим.
  7. Печатаем AT R0 4⏎ и AT AC⏎ Белый светодиод выключился? Все правильно. Мы только что переназначили линию R0 для работы в качестве цифрового выхода. Убеждаемся в этом набрав AT R0⏎. В ответ должны получить 4. Ну или можно воспользоваться уже знакомой нам командой AT HV⏎, которая удобна тем, что дает полную расшифровку режимов работы всех линий ввода/вывода. Режим 4 означает, что данная линия настроена на выход и «по умолчанию», ну то есть после сброса или включения питания, на ней устанавливается низкий уровень.
  8. А теперь включим светодиод обратно. Вводим AT R0 5⏎ и AT AC⏎. Загорелся? Значит все делаем правильно. Режим 5, как Вы догадались уже, полностью аналогичен режиму 4, только уровень «по умолчанию» устанавливается не низкий, а высокий.
  9. Вот. Мы уже умеем что-то включать или выключать. Уже неплохо. А как быть если это «что-то» имеет не только состояния «включено» или «выключено», а требует плавной регулировки? Для таких устройств в ПО SerialStar имеется возможность плавной регулировки с помощью ШИМ-сигналов и далее мы разберемся как ими управлять.
  10. Сначала немного теории. Всего имеется 4 независимых канала ШИМ. Работать в качестве ШИМ может работать за редкими исключениями практически любой вывод радиомодуля (см. Линии ввода/вывода). При этом допускаются множественные назначения. Это значит, что один и тот же ШИМ-канал может быть одновременно назначен нескольким выходам модуля. Например, если выводы модуля R0, R1 и R3 настроены для работы в качестве второго канала ШИМ, то при изменении рабочего цикла этого канала, на всех трех линиях сигнал будет меняться одинаково. Вы спросите, а зачем это нужно? Ведь чтобы получить одинаковые сигналы на 3-х линиях, достаточно их просто замкнуть между собой. Ну да, можно, когда устройство находится непосредственно перед Вами. А если система уже развернута? Допустим, к трем выводам модуля подключены независимые группы освещения, каждая со своим диммером. Первоначально ставилась задача независимого управления каждой группой и все прекрасно работало. Можно было регулировать свет раздельно в каждой группе с помощью соответствующих кнопок пульта (ну или 3-х слайдеров на приложении в вашем смартфоне). А потом вдруг ситуация поменялась. И теперь требуется этими тремя группами пропорционально управлять с помощью одной кнопки или одного слайдера. Перенастроить в этом случае систему – дело нескольких минут. Назначаем один и тот же канал всем трем выводам, подключенным к диммерам, и который ранее был ассоциирован с одним их слайдеров и получаем желаемый результат. Период во всех каналах равен 1 мс (т.е. импульсы следуют с частотой 1 КГц). Рабочий цикл может принимать значения 0 ÷ 13000. Число 0 означает, что сигнала на выходе нет. Число 13000 – на выходе постоянный высокий уровень. Обычно ШИМ-выход подключается к цепям регулировки с помощью простейшего фильтра, состоящего из последовательного резистора и конденсатора, подключенного на землю. Мы надеемся, что Вашей квалификации достаточно, чтобы самостоятельно определить их номиналы, зависящие от входного сопротивления цепи регулировки и требуемого уровня пульсаций. Кстати, если вы управляете яркостью светодиода, то никакого фильтра Вам не понадобится – частота следования импульсов достаточно большая и глаз просто не будет успевать отслеживать колебания яркости.
  11. А теперь переходим к практике. Печатаем AT R0 17⏎ и AT AC⏎. Белый светодиод погас? Тогда все правильно. Мы только что назначили линию R0 для работы в качестве первого канала ШИМ. А значения рабочих циклов «по умолчанию» для всех каналов равны 0. Вот он и выключился.
  12. Теперь включим его на половинной яркости. Вводим AT M1 6500⏎ и AT AC⏎. Загорелся опять. Значит все в порядке и с управлением выходами с помощью AT-команд Вы уже на короткой ноге. Идем дальше.
  13. Вы спросите, а зачем нам дальше? Сейчас расскажем. Дело в том, что командный интерфейс является удобным инструментом для первоначальной настройки модулей. Однако для динамического управления выходами он не очень годится. Дело в том, что каждая команда AT AC⏎ вызывает запись измененных параметров в энергонезависимую память, то есть уменьшает ресурс циклов записи/стирания. Поэтому с помощью AT-команд устанавливают, как правило, только состояние выходов «по умолчанию». Такое состояние еще иногда называют безопасным состоянием. В этом состоянии управляющий выход должен находиться при включении питания или после какого-нибудь системного сбоя. Например, если вывод модуля управляет нижним ключом, то безопасное состояние для него будет низкое, а если ключ верхний, то высокое. Для некоторых случаев, когда используется дифференциальное пропорциональное управление, безопасным будет считаться уровень напряжения, составляющий 50% полного размаха. Тогда потребуется присвоить такой линии один из каналов ШИМ и установить для него значение рабочего цикла 6500.
  14. А как быть, когда состояние выхода должно меняться достаточно часто? В этом случае без пакетного режима не обойтись. Пакетный режим, или как его еще называют, режим API-фрейма, предоставляет более гибкие возможности по управлению выходами. Например, есть возможность выбрать, как поступать с измененными параметрами: немедленно их применять без сохранения в энергонезависимой памяти, применять с сохранением или ставить их в очередь для того, чтобы затем применить и сохранить одной общей командой. Согласитесь, что если требуется изменить достаточно большое количество параметров, то запись их в очередь с последующим общим сохранением, уменьшит ресурс циклов стирания/записи значительно меньше, как если бы мы инициировали сохранение после изменения каждого параметра.
  15. Переводим модуль в пакетный режим в направлении хост-> модуль. Для этого печатаем в командном режиме AT AP 3⏎ и AT CN⏎. А теперь передаем с помощью терминальной программы следующую последовательность 16-тиричных чисел: 7E 00 06 07 00 4D 31 0C B2 BC. Если светодиод стал светиться менее ярко, чем до этого, значит пакет Вы отправили правильный и модуль выполнил команду, которая в нем содержалась. Этот пакет устанавливает рабочий цикл первого канала ШИМ равным 3250 т.е. четверть от максимума. Уверены, что сделали правильно, но изменения яркости не заметили? Тогда нажмите кнопку «RESET» на MB‑USBridge, светодиод должен загореться на 50% и передайте пакет снова. Только смотрите в этот раз внимательнее – все должно работать. Да, чуть не забыли сказать, что при работе в пакетном режиме не допускаются разрывы между символами более, чем удвоенная длительность одного символа. Так что ручной посимвольный ввод не подойдет. Поищите, пожалуйста, терминал, который обеспечивает возможность отправки заранее подготовленного пакета. Как Вы уже поняли, этот пакет изменил только текущее состояние выхода и не повлиял на его значение «по умолчанию» (ведь после сброса на выходе устанавливается 50% яркости, а не 25%, не так ли?). А разобраться какой байт за что в нем отвечает, Вы можете самостоятельно, изучив соответствующую главу в полном описании программного обеспечения «sw_SerialStar.pdf».
  16. А теперь, для закрепления успеха, передадим пакет, выключающий выход R0: 7E 00 06 07 00 4D 31 00 00 7A. Надеемся, что светодиод выключился. Если так, то считаем, что цель этого документа достигнута.

Главный вопрос

Предупреждая недоуменные взгляды и перелистывание прочитанного в поисках пропущенного ответа на самый важный вопрос:

Все это прекрасно. Мы уже поняли, что имеется возможность управлять выходами на модуле, подключенном к компьютеру. Но почему тогда Ваши изделия называются радиомодулями, и есть ли возможность сделать все тоже самое, только дистанционно?

Отвечаем, конечно есть. С помощью API-фреймов Вы можете по радио управлять выходами любого модуля, находящегося в зоне покрытия, абсолютно точно также, как делали это только что локально. Надо просто чуть-чуть изменить заголовок пакета, чтобы указать в нем идентификатор требуемого модуля. А подробнее об этом смотрите в «sw_SerialStar.pdf».