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

Цифровые и аналоговые входы в SerialStar

Цель

Разобраться с подключением внешних цифровых и аналоговых датчиков к модулям SerialStar и научиться передавать информацию об их состоянии по радио.

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

  • Модуль MBee-868-2.0 или MBee-868-3.0 – 2 шт
  • Антенны 868 МГц с разъемом SMA - 2 шт
  • Плата USB-UART MB-USBridge – 1 шт
  • Плата MB‑Tag – 1 шт
  • Батарейка CR2032 – 1 шт
  • USB-провод – 2 шт
  • Компьютер с терминальной программой

Общая информация о входах

Модули, работающие под управлением программного обеспечения SerialStar, имеют очень широкие возможности по организации передачи данных от цифровых и аналоговых датчиков. Эти возможности таковы, что позволяют в 90% случаев обойтись без дополнительного микроконтроллера на автономном узле. Понятно, что таким образом резко снижается стоимость узла, его энергопотребление и габариты. Вам не потребуется писать софт для дополнительного микроконтроллера. Достаточно будет произвести несложные настройки модуля с помощью AT-команд, на что обычно требуется всего несколько минут.

Чтобы было проще разбираться с доступными настройками для входов, давайте их разделим на 2 группы: цифровые и аналоговые. Собственно, вторую группу и группой-то назвать сложно – ведь в ней только один доступный режим. Но, так как разница между цифровым и аналоговым входом принципиальная, то пришлось пойти на такое неравное разделение. Начнем с самой многочисленной группы – цифровых входов. Ее тоже можно разделить на две части, а именно на системные входы и входы общего назначения.

Начнем с первой группы. Что же такое системный вход? Это такой вход, который предназначен для выполнения какой-либо одной функции, управляющей работой модуля. Роднит эти входы то, что информация об их состоянии не передается в эфирном пакете, а также то, что системным может быть назначен только один вывод модуля одновременно. К этой группе относятся следующие режимы:

  • UART RX (Режим №7) – вход последовательного интерфейса.
  • UART CTS (Режим №8) – вход последовательного интерфейса
  • SLEEP REQUEST (Режим №11) – вход для перевода модуля из спящего режима в активный

За подробной информацией о том, что каждый тип входа из себя представляет, и каким физическим выводам модуля он может быть назначен, обращайтесь к pdf-руководству sw_SerialStar или главе Линии ввода/вывода.

Ко второй группе относятся входы общего назначения. Такие режимы могут быть присвоены одновременно нескольким выводам. Информация об их текущем состоянии обязательно включается в эфирный пакет. К цифровым входам общего назначения относятся:

  • DIGITAL INPUT (Режим №3) – простой цифровой вход с подключенным к питанию подтягивающим резистором
  • COUNTER INPUT (Режим №13 и №14) – счетный вход, с активным отрицательным фронтом и подтягивающим резистором, подключенным к питанию
  • WAKEUP INPUT FALLING EDGE (Режим №15) – тревожный вход, с активным отрицательным фронтом и подтягивающим резистором, подключенным к питанию
  • WAKEUP INPUT RISING EDGE (Режим №16) - тревожный вход, с активным положительным фронтом и подтягивающим резистором, подключенным к земле

Начнем с простого цифрового входа. Такой режим используют обычно для подключения цифровых датчиков, работающих на замыкание. Как правило, это датчики, информация с которых носит вспомогательный характер. Что значит вспомогательный? Это такие датчики, которые не требуют экстренной реакции при срабатывании. Это могут быть, например, датчики состояния какого-либо промышленного контроллера. Такие контроллеры имеют, как правило, несколько выходов, индицирующих его текущее состояние. Допустим, что перед Вами поставлена задача организации сбора телеметрии с системы автоматического управления в которой используются промышленные контроллеры. Берем радиомодуль, настроенный на автоматическую передачу информации о состоянии линий ввода/вывода с требуемым периодом. Определяем сколько выходов нас интересуют, подключаем их к модулю и устанавливаем им режим №3. Надо только помнить, чтобы напряжение, которое появляется на выходах контроллера не превышало бы напряжение питания модуля. Ну если оно все-таки окажется больше, то всегда можно соединить модуль с выходом контроллера с помощью простейшей защитно-согласующей цепочки в виде комбинации резисторов и диодов. Вот и все. Теперь информация о состоянии всех интересующих выходов контроллера будет включаться в эфирный пакет. Для экономии энергии (чтобы не передавать лишние байты, которые принимали бы только два значения 0 или 1, состояние входа передается в старшем бите кода режима. Например, если в пакете содержатся байты 04 03, это означает, что физический вывод модуля №4 является простым цифровым входом, на котором в момент передачи пакета был зафиксирован низкий уровень. А последовательность 04 83 показывает, что уровень был высокий.

Основным предназначением счетных входов, является сбор данных с приборов учета ресурсов. Это могут быть счетчики воды, газа, электросчетчики и т.д. Посмотрите наш документ, специально посвященный этой теме «app_SerialStar_Metering.pdf» и Вы поймете, что организовать беспроводной сбор показаний со счетчиков воды гораздо проще и быстрее, чем Вы предполагали до сих пор. ПО SerialStar не запрещает Вам присваивать один и тот же режим счетного входа нескольким выводам модуля. Тут, правда, надо понимать, что в этом случае в счетчике, ассоциированном с режимом, будет копиться сумма импульсов, зарегистрированных на всех входах с одинаковым режимом. И к тому же в эфирном пакете содержимое этого счетчика будет повторяться столько раз, скольким выводам этот режим назначен.

Переходим к тревожным входам. Они нужны для того, чтобы максимально оперативно передать информацию о срабатывания какого-либо цифрового датчика. Это могут быть датчики открытия дверей, разбития стекла, срабатывания пожарной сигнализации и т д. А некоторые компании, работающие в сфере ЖКХ, очень любят подключать к тревожным входам геркон, которые сигнализирует о наличии в районе установки счетчика воды сильного магнитного поля, порождаемого магнитом, которым некоторые не очень сознательные граждане останавливают счетчики. Для организации тревожного входа доступны два режима, отличающиеся только активными уровнями. Имеющийся выбор между ними позволяет обойтись без инвертора при подключении датчиков с разной активной полярностью. Информация о текущем состоянии кодируется старшим битом режима так же, как и в случае простого цифрового входа. Это сделано для того, чтобы можно было определить какой именно тревожный вход вызвал отправку пакета. Например, если получена такая последовательность: 06 0F, то это значит, что на шестом выводе модуля зафиксирован отрицательный перепад, вызвавший отправку пакета. А если пришло 06 90, то вывод номер 6 настроен на срабатывание по положительному фронту, и именно этот сигнал инициировал передачу.

Практическая часть

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

  1. Устанавливаем оба модуля на платы MB-USBridge.
  2. В обоих модулях настройки должны быть приведены к значениям «по умолчанию». Если Вы не знаете или забыли, как это сделать, то посмотрите главу Загрузка ПО SeralStar.
  3. Запускаем терминальную программу, выбираем номер порта и устанавливаем для него 9600 8N1 CTS/RTS.
  4. Входим в командный режим («+++» или «SYSTEMBUTTON»).
  5. Вводим команду AT HV⏎ (здесь и далее  ⏎ означает нажатие клавиши «ENTER»). И на экране выводится полная информация о текущих настройках линий ввода/вывода. Настройки «по умолчанию» в SerialStar сделаны так, чтобы продемонстрировать как можно больше возможностей программы с использованием платы MB‑Tag. Из сообщения на экране видно, что из 4-х возможных режимов цифровых входов в наличии имеются 3. Это L2, настроенный как простой цифровой вход, L3 – счетный вход №2 и R1 – счетный вход №1. Для демонстрации работы тревожного входа, избавимся от избыточности, переведя линию L3 из режима счетного в режим тревожного входа: AT L3 15⏎.
  6. Включаем режим периодического сна AT SM 4⏎ и уменьшаем период сна до 5 секунд, чтобы было не очень утомительно ждать очередного пакета: AT SP 500⏎.
  7. Сохраняем и применяем изменения AT CN⏎. Переставляем модуль в плату MB‑Tag, вставляем батарейку и замыкаем джампер JP1.
  8. Если модуль настроен правильно, что с периодом пять секунд должны загораться светодиоды RF RX, RF TX и DO1. Если этого не происходит, то пробегитесь, пожалуйста, повнимательнее по предыдущим пунктам чтобы понять, что Вы могли сделать не так. Надеемся, что сбросить настройки в самом начале пути к значениям «по умолчанию» Вы не забыли.
  9. Устанавливаем второй модуль на MB-USBridge. В нем настраивать ничего не надо.
  10. Если Вы экспериментируете на столе, то антенну достаточно установить на один модуль. Если требуются более значительные расстояния, то антенны надо прикрутить на оба модуля.
  11. А теперь внимание на экран. С периодом 5 секунд должны приходить примерно такие пакеты от модуля, установленного на MBee-Tag:

18 98 04 83 06 8F 09 04 1D 02 FF FF 1F 04 21 02 FF FF 22 0D 00 00 00 00

Первые два байта, несут информацию о температуре и напряжении на батарейке. За подробностями об этих байтах можно обратиться к «app_SerialStar_Temperature_Sensor.pdf». Нас же интересуют пока только цифровые входы. Итак, как нам уже известно после команды HV, вывод номер 4 настроек как простой цифровой вход. Ищем его в строке и видим после 4 число 83. Старший бит равен 1, значит на этом входе сейчас высокий уровень. Правильно – ведь он дотянут до питания встроенным резистором.

  1. Ставим джампер на X6 и через секунды принимаем пакет

    18 98 04 03 06 8F 09 04 1D 02 FF FF 1F 04 21 02 FF FF 22 0D 00 00 00 00

    Видим, что число 83 поменялось на 03. Если так, то с простым входом мы разобрались.

  2. Счетные мы уже обсуждали в главе Подключение счетчика воды, поэтому повторяться не будем. Лучше посмотрим, как работает тревожный вход.

  3. Ждем прихода пакета и сразу же замыкаем пинцетом или джампером контакты X4. Пакет должны получить немедленно:

    18 98 04 03 06 0F 09 04 1D 02 FF FF 1F 04 21 02 FF FF 22 0D 00 00 00 00

    Видим, что после 06 находится 0F, то есть на шестом выводе, работающем в режиме тревожного входа с активным отрицательными перепадом, зафиксирован низкий уровень. Значит отправка пакета была вызвана именно этим событием.

  4. Собственно, с цифровыми входами все. Надеемся, что с их настройкой в SerialStar проблем у Вас не будет.

  5. Осталось разобраться с единственным режимом в группе аналоговых. Номер этого режима 2. Смотрим внимательно еще раз на принятый пакет и ищем код режима 2. Видим, что таких входов два. Первый назначен выводу 29 (1D), а второй выводу 33 (21). Сразу после кода режима видим оцифрованное значение FF FF. Как же интерпретировать это число? Сейчас все будет ясно. Дело в том, каждый экземпляр микросхемы, которая используется в модулях, уникален и имеет свои собственные калибровочные коэффициенты аналого-цифрового преобразователя. Если после преобразования не провести коррекцию результата в соответствии с алгоритмом, разработанным производителем микросхемы, то паспортная точность обеспечиваться не будет. В процессе коррекции иногда происходят неизбежные ошибки округления. Результат преобразования изначально представляет собой положительное число, после коррекции он становится числом в дополнительном коде. Следовательно, число FF FF представляет собой просто -1. А отрицательный знак появился в результате округления в процессе коррекции. То есть теперь нам понятно, что если неожиданно в качестве результата получено очень большое число, то его надо интерпретировать как 0 потому, что отрицательного результата быть не может.

  6. Немного дополнительных данных про аналоговый вход: число эффективных бит равно 12, внутреннее опорное напряжение АЦП равно 2,5В (это значит, что входное напряжение должно находится в пределах 0÷2,5В), подтягивающие резисторы отсутствуют.

  7. А теперь возьмем какой-нибудь провод (удобно использовать провода «мама - мама» для плат breadboard) и соединим первые контакты разъемов X1 и X3 на плате MB‑Tag. Теперь снова смотрим на принятый пакет и видим, что после чисел 1D 02 следуют уже не FF FF, а другие значения. Как их перевести в вольты? Очень просто: принятое число переводим в десятичный формат умножается на 2,5 и затем произведение делится на 4096. Помните только, что на плате MB‑Tag на аналоговых входах установлены делители на 4, которые нужны для того, чтобы подключать контроллеры со стандартным выходным сигналом 0÷10В. Поэтому не забудьте умножить результат на 4 (должен получиться результат около 0,28 В).

  8. Вот и все. Нам бы очень хотелось, что сведения и опыт, которые Вы получили при изучении данного материала оказались бы полезными.

А если не все понятно или хочется чего-то большего?

Тогда пишите на форум или в почту. Вам обязательно помогут.