Линии ввода/вывода

Учимся настраивать и управлять линиями ввода/вывода

Цель

Знакомство с возможностями, предоставляемыми ПО SerialStar по организации ввода/вывода с использованием встроенных в модуль ресурсов

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

  • Модуль MBee-868-2.0 или MBee-868-3.0 – 1 шт
  • Трансивер 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») и на экране выводится полная информация о текущих настройках линий ввода/вывода.
    AT HV
    >                                                  
    Target module: MBee-868-2.0.
    Non configurable pins:
    RF TX indication. Pin #25.
    RF RX indication. Pin #26.
    System button. Pin #36.
    Reconfigurable pins:
    L0 = 6. UART TX output. Pin #2.
    L1 = 7. UART RX input. Pin #3.
    .........
  6. Давайте разберемся, что мы видим на экране. Ну, во-первых, тип модуля. Во-вторых, из текста можно понять, что все линии ввода/вывода делятся на 2 группы
    • линии, которые жестко привязаны к модулю по своим функциям и расположению (Non configurable pins)
    • линии, которыми Вы можете управлять по собственному усмотрению.
  7. Не настраиваемых выводов не так много – всего три. Их назначение вполне ясно. Вход системной кнопки имеет встроенный резистор, подтягивающий его до питания. Кстати, кнопку нельзя переназначить для того, чтобы всегда имелась возможность сбросить настройки к заводским значениям, даже после всех Ваших экспериментов. Таким образом исключается возможность превращения модуля в красивую безделушку.
  8. Настраиваемых выводов значительно больше – целых 24 для MBee-868-2.0 и 25 для MBee-868-3.0. Обратимся теперь к Рисунку 2. Он должен помочь Вам понять на чем основана система названий конфигурируемых линий ввода/вывода. Итак, те из них, что расположены с левой стороны модуля имеют в имени первую букву L(Left), внизу B(Bottom)и, наконец, справаR(Right). Удобно? Мы старались.

IO assignment

  1. Настройки, которые сделаны нами «по умолчанию», адаптированы для максимального использования платы MB-Tag. Однако, скромный перечень периферии, установленной на ней, позволяет продемонстрировать только основные возможности, предоставляемые ПО SerialStar по управлению вводом/выводом. Не все существующие режимы работы линий ввода/вывода представлены в заводских настройках. И не все из существующих режимов доступны для каждого вывода модуля. Это происходит вследствие некоторых ограничений, накладываемых применяющейся в модуле микросхемой. За подробным описанием всех режимов работы со всеми ограничениями обращайтесь к основному документу по проекту Техническое руководство ПО «SerialStar».

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

Режим работы Код режима Выводы модуля Применение
DISABLED 0 2-4, 6, 7, 9, 11-19, 24, 27-35 Вывод не используется
NOT AVAILABLE 1 15 Вывод не доступен
ADC 2 29, 30, 33-35 Аналоговый вход
DIGITAL INPUT 3 2-4, 6, 7, 9, 11-19, 24, 27-35 Цифровойвход
DIGITAL OUTPUT LOW 4 2-4, 6, 7, 9, 11-19, 24, 27-35 Цифровой выход, низкий уровень
DIGITAL OUTPUT HIGH 5 2-4, 6, 7, 9, 11-19, 24, 27-35 Цифровой выход, высокий уровень
UART TX 6 2-4, 6, 7, 9, 11-15, 24, 27-35 Может быть присвоен только одной линии
UART RX 7 2-4, 6, 7, 9, 11-15, 24, 27-35 Может быть присвоен только одной линии
UART CTS 8 2-4, 6, 7, 9, 11-19, 24, 27-35 Может быть присвоен только одной линии
UART RTS 9 2-4, 6, 7, 9, 11-19, 24, 27-35 Может быть присвоен только одной линии
SYSTEM LED 10 2-4, 6, 7, 9, 11-19, 24, 27-35 Системный светодиод, индицирующий работу в командном режиме.
Может быть присвоен только одной линии
SLEEP REQUEST 11 2-4, 6, 7, 9, 27-35 Может быть присвоен только одной линии
SLEEP STATUS 12 2-4, 6, 7, 9, 11-19, 24, 27-35 Может быть присвоен только одной линии
COUNTER INPUT1 13 2-4, 6, 7, 9, 27-35 Счетный вход №1. Разрядность счетчика 4 байта. Активный перепад отрицательный
COUNTER INPUT2 14 2-4, 6, 7, 9, 27-35 Счетный вход №2. Разрядность счетчика 4 байта. Активный перепад отрицательный
WAKEUP INPUT FALLING EDGE 15 2-4, 6, 7, 9, 27-35 Тревожный вход с отрицательным перепадом
WAKEUP INPUT RISING EDGE 16 2-4, 6, 7, 9, 27-35 Тревожный вход с положительным перепадом
PWM1 17 2-4, 6, 7, 9, 11-15, 24, 27-35 ШИМ канал №1
PWM2 18 2-4, 6, 7, 9, 11-15, 24, 27-35 ШИМ канал №2
PWM3 19 2-4, 6, 7, 9, 11-15, 24, 27-35 ШИМ канал №3
PWM4 20 2-4, 6, 7, 9, 11-15, 24, 27-35 ШИМ канал №4
RS485 DIRECTION 21 2-4, 6, 7, 9, 11-19, 24, 27-35 Может быть присвоен только одной линии
  1. Теперь учимся настраивать ввод/вывод. Для этого существуют AT-команды. Код команды соответствует названию вывода. Например, чтобы узнать, как настроена линия L2 без необходимости ползать по обширному тексту, получаемому по команде HV, требуется набрать AT L2⏎. Получаем в нашем случае число 3. Смотрим в таблицу и понимаем, что эта линия настроена как цифровой вход. А если он не нужен или от него хочется чего-то другого? Чтобы его выключить отдаем команду AT L2 0⏎. Далее применяем сделанные изменения командой AT AC⏎ и проверяем что получилось с помощью AT L2⏎ или AT HV⏎.
  2. Теперь Вам все должно быть понятно. Может быть у Вас даже возникла идея поэкспериментировать и посмотреть, а что получится, если какому-либо выводу назначить режим, отсутствующий в списке или не предназначенный для него? Так вот, ничего у Вас не выйдет. ПО SerialStar всегда сверяет Вашу команду со списком доступных для данной линии режимов. Ну то есть, список в таблице является не уведомительным, а запретительным. Тем самым мы избавляем Вас от неприятных ситуаций.
  3. Некоторые режимы могут назначаться нескольким линиям ввода одновременно, а некоторые только одной. Если попытаетесь такой заповедный режим присвоить еще одному выводу, то он конечно присвоится. Только та линия, которая работала в нем раньше перейдет в состояние DISABLED. В общем всегда контролируйте то, чего Вам удалось достичь с помощью команды AT HV⏎.
  4. Все. Можно переходить к проверке полученных знаний.

Проверяем

Чтобы не надо было ничего переставлять или перекоммутировать, продолжаем работать с модулем, установленным на MB-USBridge. Итак, попробуем переназначить линию системного светодиода на какую-нибудь другую. Чтобы для проверки правильности действий не потребовалось бы бежать за тестером, выбираем для экспериментов линию, которая имеет на плате MB-USBridge подключенный светодиод. Останавливаемся на линии RTS, исходя из соображений того, что она также является выходом и, следовательно, мы никак не навредим микросхеме FT232.

  1. Входим в командный режим.
  2. Смотрим (Рисунок 2), какой линии соответствует сигнал RTS (выход модуля). Это линия R3. Из Таблицы 1 также узнаем, что режиму системного светодиода соответствует код 10.
  3. Отправляем команды AT R3 10⏎ и AT CN⏎.
  4. Снова входим в командный режим и убеждаемся, что загорается теперь не белый светодиод, а желтый СTS (просто подпись под светодиодом сделана относительно хоста, а для модуля это по-прежнему линия RTS), расположенный под антенным разъемом модуля.
  5. Печатаем AT HV⏎ и... ничего на экране не видим. Догадались почему? Да мы же только что с Вами заблокировали передачу данных со стороны компьютера. Высокий уровень на RTS как раз и нужен для того, чтобы подтормозить хост. А системный светодиод, в свою очередь, предназначен для индикации высоким уровнем нахождение в командном режиме. Вот и имеем, то, что имеем.
  6. Что делать будем? По Вашему усмотрению. Можно вернуть все назад к заводским настройкам (помните, как?). А можно в терминале отключить аппаратный контроль потока CTS/RTS и продолжать мучить модуль.

Выводы

Программное обеспечение SerialStar имеет самые широкие возможности по использованию имеющейся на модулях MBee-868 цифровой и аналоговой периферии. Мы потратили много сил на то, чтобы Вам было просто ей управлять. Список режимов работы линий ввода/вывода не придуман нами от «балды», а является результатом многолетнего обобщения нашего опыта при работе над проектами в области, теперь называемой IoT. Максимальное и умелое задействование встроенной периферии, позволит Вам резко снизить стоимость конечного узла типовой IoT-системы (ведь хост-микроконтроллер в 99% случаев оказывается не нужен).

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

Все это прекрасно, но хотелось бы понять, а есть ли возможность сделать все, что мы только что изучили, дистанционно, то есть по радио? Отвечаем. Да, есть. Иначе и затеваться бы со всем этим не стоило. Все, что Вы сейчас освоили, можно сделать и по радио (ну разве что дистанционный ответ на команду HV не предусмотрен – эфир занимать надолго не хочется- тесно в нем). Но об этом ищите или в главном документе, или в последующих документах «app…», в которых будет описываться работа в пакетном режиме.

А если надо чего-то большего?

Понятно, что в жизни всегда есть место каким-то особым случаям, для которых базовых возможностей SerialStar по работе с вводом/выводом оказывается недостаточно. Или может быть Вам требуется изменить настройки «по умолчанию» так, чтобы не надо было бы долго и нудно настраивать модули перед установкой их в целевое изделие. Что делать? Пишите на форум, звоните, спрашивайте. Мы находимся в России и прекрасно поладим. Внутренняя структура ПО SerialStar делает возможным достаточно быстро внести изменения в имеющийся функционал, с тем, чтобы подготовить версию, оптимальную именно для Вас.