Построение беспроводной сети на модулях PWD-433
Модули PWD-433: Общее описание
Внешний вид модулей PWD-433 в комплекте со средствами разработки встроенного ПО приведен на рис. 1, их электрические характеристики – в таблице 1. «Сердцем» модулей является однокристальный трансивер nRF9E5 компании Nordic Semiconductor. Структурные схемы модуля PWD-433 и используемого в нем трансивера приведены на рис. 2 и 3 соответственно.
Функциональные возможности однокристального трансивера в большей степени определяют функциональность самого модуля: среди встроенной периферии стоит отметить 12-разрядный АЦП с 4 мультиплексированными входами, аппаратный ШИМ-контроллер, цифровые последовательные интерфейсы UART (возможно исполнение с драйверами физического уровня RS-232 и USB) и SPI.
Трансивер имеет встроенный микроконтроллер с архитектурой 8051 с предустановленной управляющей программой. Отличительной особенностью модуля является возможность использования не только предустановленной, но и собственной управляющей программы: для этого в комплекте с модулем можно заказать соответствующие программно-аппаратные средства для разработки, отладки и загрузки встроенного ПО модуля. Таким образом, повышается гибкость применения модулей и появляется возможность использования модулей как конечных устройств.
Таблица 1
Типичным применением модулей являются: беспроводные датчики (как с аналоговым, так и с цифровым измерительным элементом), беспроводные системы управления (с возможностью как цифрового, так и ШИМ управления), системы передачи цифровых и аналоговых данных, различного рода системы сигнализации и оповещения.
Программная поддержка модулей PWD-433
На диске, поставляемым вместе с модулями, а также на сайте поставщика модулей (www.prochip.ru/support/pwd43 /ссылка утрачена/) доступно свободно распространяемое программное обеспечение и полный комплект документации. Здесь можно ознакомиться с примерами написания встроенного ПО на языках Си и ассемблер, скачать свободно распространяемый компилятор GCC для микроконтроллера модуля, утилиты для программирования, позволяющие загружать собственную управляющую программу в модуль (для этого также потребуется специальный программатор), драйверы USB для операционных систем Windows 9x/NT/XP и Linux v2.4 и выше (в будущем предполагается разработка драйверов для других ОС, в частности, для Windows CE). Кроме того, доступна программа хоста модулей (подробнее о ней будет рассказано ниже), позволяющая легко реализовать беспроводную сеть на модулях PWD-433 на базе платформы РС, а также наглядно демонстрирующую интерфейс с модулем на уровне команд.
Типы беспроводных сетей, поддерживаемые модулем PWD-433
Встроенный протокол модуля поддерживает два типа сетей: «точка — точка» и «звезда» (рис. 4). В простейшем варианте — «точка — точка» — каждый модуль может служить инициатором обмена. Но, учитывая, что связь между модулями полудуплексная, необходимо обеспечить исключение ситуации одновременного начала передачи пакета обоими модулями. При организации беспроводной сети типа «звезда» один модуль в сети является ведущим («хост»), а все остальные – ведомыми. Таким образом, только ведущий модуль может быть инициатором обмена, а ведомые модули должны отвечать на запросы ведущего. Сложные типы сетей, в том числе с динамической маршрутизацией и с возможностью ретрансляции пакетов, на уровне встроенного ПО модуля не поддерживаются. Однако при использовании внешних контроллеров с соответствующими алгоритмами работы поддержка сетей такого типа возможна.
Протокол обмена данными по радиоканалу
Для однозначной идентификации модуля в сети служит уникальный 32-битный адрес, записываемый в память модуля на заводе-изготовителе. Таким образом, перед началом обмена данными локальному модулю необходимо задать адрес удаленного модуля. Текущий адрес удаленного модуля можно занести в энергонезависимую память соответствующей командой конфигурации, что очень удобно при организации сетей «точка — точка». Однако при работе по схеме «звезда», адреса всех удаленных модулей должны храниться во внешнем управляющем контроллере сети.
Протокол обмена низкого уровня, носящий название ShockBurst, реализован в модулях аппаратно. Суть протокола следующая: на каждую посылку, передаваемую модулем, должно немедленно прийти подтверждение приема от удаленного модуля. В случае, если подтверждение не пришло, передача пакета повторяется до тех пор, пока не будет достигнуто время таймаута передачи, определяемое в конфигурации передающего модуля. Процедура запроса данных с удаленного модуля наглядно показана на рис. 5 (с точки зрения обмена данными по радиоканалу). Такой протокол обмена обеспечивает полный контроль над потерей данных. В дополнение к этому, каждый пакет дополняется 16-битной контрольной суммой. При приеме пакета контрольная сумма проверяется аппаратно, и в случае несовпадения принимаемый пакет отбрасывается (подтверждение приема не высылается), что влечет за собой повторную отправку пакета передающим модулем.
Для защиты от узкополосных помех в модуле реализован так называемый хоппинг – каждый пакет отправляется на разной, случайном образом изменяющейся несущей частоте (модуль работает в 50 частотных каналах). Если пакет информации не был доставлен по причине наличия помехи на текущей несущей частоте, он автоматически будет послан повторно на другой несущей. Это обеспечивается протоколом низкого уровня и совершенно «прозрачно» для пользователя.
Структура пакетов ShockBurst в беспроводной сети на модулях PWD-433 представлена на рис. 6. Размер пакета статичен, объем данных в пакете составляет 32 байта (включая адрес и контрольную сумму). В модулях реализован криптографический алгоритм защиты полезных данных: это обеспечивает конфиденциальность передаваемой информации.
Управляющий интерфейс модуля
Управление и обмен данными с модулями PWD-433 происходит через последовательный интерфейс (существуют три варианта физического уровня этого интерфейса: UART, RS-232 и USB). Для совместимости с промышленными контроллерами и упрощения протокола обмена модули управляются при помощью AT-команд — буквенно-цифровых одностроковых посылок. Таким образом, управлять модулем можно, к примеру, при помощи персонального либо промышленного компьютера через стандартный терминал. Для этого необходимо лишь подключить модуль к последовательному интерфейсу компьютера (RS-232 или USB), настроить терминал на соответствующий порт и указать скорость (19200 бод). В случае с подключением через USB необходимо установить соответствующие драйверы. После этого в системе будет доступен виртуальный COM-порт модуля.
Перечень команд модуля с краткими описаниями приведен в табл. 2. Полное описание каждой команды можно найти в документации к модулю. Управляющая команда может быть локальной (адресоваться модулю, подключенному к последовательному интерфейсу), либо удаленной (адресоваться выбранному ранее удаленному модулю). По умолчанию команда является локальной. Для того чтобы послать удаленную команду, нужно предварительно задать адрес удаленного модуля командой «М», а перед именем команды ввести символ «@».
Любая команда должна начинаться со своего имени (один заглавный символ), после которого могут следовать параметры команды. Длина всех команд строго фиксирована, поэтому после ввода ее имени следует обязательно ввести все ее параметры (если таковые имеются). Цифровые параметры представляются в шестнадцатеричном виде (один байт – два символа из множества 0…F). Следует отметить, что даже если используется только младший полубайт параметра команды, все равно следует вводить оба полубайта (например, “0A”). После завершения ввода всей команды она немедленно выполняется.
Ответом на любую команду будет строка, дополненная символами возврата каретки и новой строки (10h+13h). Если формат команды был введен неверно, ответом будет строка «NAK» (Not AcKnowledgement). В случае отсутствия связи с удаленным модулем (при наступлении таймаута приема или передачи пакета), ответ на команду этому модулю будет «ERR» (Error).
Алгоритм работы с устройством следующий: при подключении модуля в последовательный порт выдается строка «READY», информирующая о готовности и исправности локального модуля. Все настройки устройства, а также адрес удаленного модуля, используемого по умолчанию, автоматически загружаются при включении. При необходимости настройки модуля можно изменить:
- команда «T» устанавливает таймаут приема и передачи пакета;
- команда «R» устанавливает мощность передатчика и чувствительность приемника модуля;
- команда «P» настраивает цифровые выводы модуля на прием-передачу;
- команда «A» задает режим работы АЦП;
- команда «W» конфигурирует ШИМ-контроллер модуля;
- команда «E» служит для запоминания текущих настроек в энергонезависимой памяти модуля;
- команда «I» служит для определения текущих настроек.
После настройки конфигурации можно посылать команды и получать информацию от удаленных модулей. Для этого, как было написано выше, необходимо выбрать адрес удаленного модуля командой «М», а затем послать удаленную команду. При реализации схемы беспроводной сети «звезда» в управляющем устройстве локального модуля (к примеру, в персональном компьютере) необходимо вести базу данных по адресам удаленных модулей.
При добавлении нового модуля в состав беспроводной сети выполняется алгоритм получения адреса нового удаленного модуля. Реализуется этот алгоритм при помощи команды «N», которую необходимо выполнить на локальном модуле. После получения данный команды локальный модуль переходит в режим ожидания пакета идентификации от нового удаленного модуля. Для отправки пакета идентификации на новом удаленном модуле должна быть нажата специальная кнопка идентификации (кратковременно замкнуты выводы 1 и 2 модуля), либо послана команда «В» (в случае, если удаленный модуль имеет внешний управляющей контроллер). Следует отметить, что это единственное исключение из правил обмена информацией между модулями в беспроводной сети типа «звезда» (инициатором обмена в данном случае выступает удаленный, а не локальный модуль). Если пакет идентификации не был послан в течение таймаута приема пакета на локальном модуле, последний переходит в режим ожидания с соответствующим ответом «ERR» (ошибка приема пакета). Для удобства использования данной команды целесообразно временно увеличить таймаут приема пакетов (командой «Т»), либо циклически исполнять команду приема идентификационного пакета (что предпочтительнее).
В случае успешного приема пакета идентификации адрес удаленного модуля выводится в последовательный порт локального устройства, после чего он должен быть внесен в базу данных управляющего контроллера для последующего использования.
Следует отметить, что текущий адрес удаленного модуля можно сохранить в энергонезависимой памяти командой «E». Если это сделать после проведения процедуры идентификации нового модуля, можно избежать необходимости запоминания внешним контроллером адреса удаленного модуля, если таковой в сети один (в случае построения сети «точка — точка»).
Cтуит отметить возможность перехода модуля в спящий режим на заданное время (команда «S»). Этот режим предназначен для работы удаленных модулей от батарейного питания: ток потребления модуля в спящем режиме не превышает 2 мкА. Возможный вариант использования такого режима: центральный модуль снимает данные с дистанционного, затем переводит его в спящий режим на определенный промежуток времени. Следующий запрос локальный модуль делает через этот промежуток времени плюс небольшая задержка, требуемая удаленному модулю для выхода из спящего режима. Далее процесс повторяется. Таким образом, удаленный модуль бульшую часть времени будет находиться в спящем режиме, что позволит питать его от батареи малой емкости достаточно долго.
Также модуль может служить для управления каким-либо устройством по последовательному интерфейсу: в последовательный порт удаленного модуля можно послать произвольную последовательность данных (как текстовых, так и бинарных) командой «U».
Программа хоста модулей PWD-433 для платформы PC
Для модулей PWD-433 доступна свободно распространяемая программа хоста для платформы PC. Данная программа реализует хост беспроводной сети «звезда» и включает в себя базу данных по удаленным модулям, графический интерфейс для настройки, посылки и получения данных с модулей, алгоритм поиска новых модулей и добавления их в базу, а также доступ к базе данных и управление модулями по сетевому протоколу Telnet.
Программа может быть использована как в целях ознакомления с возможностями и интерфейсом модулей, так и для применения в проектах, требующих работы с развитой беспроводной сетью типа «звезда» и допускающих использование PC-совместимого контроллера в качестве центрального управляющего узла сети.
Перед загрузкой программы к последовательному порту управляющей системы необходимо подключить модуль PWD-433, который будет служить управляющим устройством. При запуске программа сканирует все последовательные порты на наличие локального модуля. Если к системе подключено несколько устройств, будет использоваться модуль с наименьшим номером последовательного порта.
Параметры и адрес локального модуля хранятся в базе данных программы, и в случае замены локального модуля программа предлагает произвести его конфигурацию (см. рис. 7).
Данное окно конфигурации одинаково как для локального, так и для удаленных модулей и включает в себя:
Поля конфигурации:
- Условное название модуля (текстовая строка до 200 символов), которое вносится в базу данных программы и позволяет пользователю различать модули между собой.
- Таймаут передачи и приема пакета в миллисекундах. Максимально возможное значение – 65535. При установке параметра в «0» таймаут равен бесконечности (не рекомендуется использовать, так как контроль над модулем может быть потерян).
- Мощность передатчика и чувствительность приемника. В большинстве случаев это максимальная мощность и чувствительность (+10 дБм и –100 дБм соответственно). Другие значения следует использовать либо в целях сокращения потребляемой модулем энергии, либо для уменьшения радиуса действия модуля в случае такой необходимости.
- Конфигурация цифровых портов ввода-вывода. Здесь задается режим работы каждого из четырех портов (ввод или вывод). При работе в качестве вывода также можно задать значение (0/1), выдаваемое в порт.
- Конфигурация ШИМ-контроллера модуля: частота и коэффициент заполнения. При включенной опции ШИМ-сигнал выводится на первый порт цифрового ввода-вывода (его предыдущие настройки игнорируются).
Информационные поля:
- Уникальный MAC-адрес модуля.
- Статус доступности модуля.
- Версия встроенного программного обеспечения модуля.
- Значения всех каналов АЦП и значение напряжения питания модуля.
После задания конфигурации настройки локального модуля сохраняются в базе данных программы, а также в энергонезависимой памяти модуля. Это позволяет устройству начать корректное функционирование сразу после включения питания, еще до подсоединения к базе данных.
Далее открывается главное окно программы (рис. 8). В базе данных модулей первой записью всегда являются параметры локального модуля. Далее следует список удаленных модулей.
Все колонки в таблице базы данных соответствуют полям в окне конфигурации. Стоит лишь добавить, что таймаут приема-передачи отображается в миллисекундах, частота сигнала ШИМ — в герцах, коэффициент заполнения лежит в пределах от 0 до 1. Значение АЦП представляется как 2 байта в шестнадцатеричном виде. Значение измеряемого напряжения на соответствующем канале вычисляется следующим образом:
[Напряжение на входе]=([Измеренное значение]*[Диапазон измерения канала])/4096,
где:
[Напряжение на входе] – значение напряжения на входе в вольтах;
[Диапазон измерения канала] – верхняя граница измерения соответствующего канала АЦП в вольтах;
[Измеренное значение] – измеренное значение АЦП.
Конфигурация цифровых портов модуля представлена в таблице в виде двух 4-разрядных двоичных чисел, разделенными косой чертой. Первое число определяет конфигурацию портов (1 – ввод, 0 – вывод), второе – значение логических уровней в портах. Младший разряд числа соответствует четвертому порту модуля, старший — первому.
Для добавления удаленного модуля в базу данных служит кнопка «Добавить модуль». После этого начинается поиск удаленных модулей (рис. 9). По умолчанию запускается автоматическая процедура поиска: все, что нужно сделать для добавления модуля в базу данных – это нажать кнопку идентификации на удаленном модуле. Если МАС-адрес удаленного модуля известен, можно ввести его вручную.
После проведения процедуры идентификации нового удаленного модуля необходимо задать его начальную конфигурацию — аналогично тому, как это делалось с локальным модулем.
Для изменения конфигурации модулей, присутствующих в базе данных, необходимо установить курсор на соответствующую строку, и нажать кнопку «Настройка модуля». При большом количестве модулей в базе данных необходимый модуль можно найти по его названию или порядковому номеру (кнопки «Поиск по имени» и «Поиск по номеру»).
Для опроса одного модуля служит кнопка «Опрос модуля». Также есть возможность опроса всех модулей в базе данных (кнопка «Опрос всех модулей»).
Удалить устройство из базы данных можно с помощью кнопки «Удалить модуль».
В колонке «Статус» отображается доступность модуля при последнем обращении. При запуске программы статус удаленных модулей неизвестен, поэтому в данном случае рекомендуется произвести опрос всех модулей.
При ознакомлении с интерфейсом модуля на уровне АТ-команд, очень удобным инструментом является окно терминала (кнопка «Окно терминала», рис. 10). В этом окне можно в реальном режиме времени увидеть все команды, посылаемые модулем, а также ответы модуля на эти команды. Направление данных показано стрелкой перед началом каждой строки: стрелка направо – команда модулю, стрелка налево – ответ модуля.
Доступ к базе данных модулей по протоколу Telnet
Важной особенностью описываемой программы является возможность доступа к базе данных модулей по протоколу Telnet, реализуемому в сетях TCP/IP. Для этого управляющий контроллер, на котором выполняется программа хоста беспроводной сети, должен иметь подключение к сети TCP/IP через любой доступный интерфейс физического уровня (Ethernet, 801.11 и т. п.). Чтобы перевести программу в режим управления по Telnet, нужно нажать кнопку «Доступ через Telnet», при необходимости указав настройки (через меню «Telnet / Настройка …», рис. 11). Следует отметить, что при этом отключается возможность конфигурации и управления модулями через основной графический интерфейс программы.
Для подключения к базе данных по сети необходимо запустить на удаленном компьютере Telnet-клиент, указав IP-адрес или имя машины, на которой выполняется программа хоста беспроводной сети. В большинстве операционных систем Telnet клиент является частью системы, и для его запуска необходимо в текстовой консоли набрать telnet <имя хоста> [: порт]. В случае если порт явно не указывается, подразумевается использование порта 23, традиционно используемого для протокола Telnet. В случае невозможности использования этого порта (например, он уже занят, либо к нему закрыт доступ брандмауэром сети), в настройках протокола Telnet-программы хоста необходимо задать другое значение порта, и обязательно указывать назначенный порт при вызове Telnet-клиентов на удаленных машинах. Также в настройках Telnet-хоста можно ограничить число одновременных подключений к базе, а также таймаут удаленного соединения в секундах.
При успешном подключении удаленной машины в ее терминал будет выдано соответствующее сообщение. При работе с базой данных через Telnet доступны следующие команды:
- Help – выдать список и краткое описание команд;
- ItemCount – получить количество записей (модулей) в базе данных;
- GetNode [Х] – получить данные с модуля Х;
- Bye – завершить сеанс.
Окно терминала с примерами выполнения вышеописанных команд приведено на рис. 12.
В случае если запрашиваемый модуль оказывается недоступным, посылаются последние сведения о модуле, хранимые в базе данных. Если запрашиваемый модуль оказывается доступным, его данные в базе обновляются.
Из соображений безопасности в описываемой версии программы отсутствует возможность реконфигурации модулей по протоколу Telnet. В будущих версиях будет введена система авторизации пользователя, что позволит в значительной мере повысить уровень защиты данных от несанкционированного доступа, а также ввести возможность дистанционной конфигурации модулей.
Пример структуры сети с использованием модулей PWD-433 и программы-хоста
На рис. 13 представлен пример структуры сети, беспроводный сегмент которой построен по схеме «звезда» на модулях PWD-433. Управляющим контроллером в данном случае является х86-совместимый компьютер с операционной системой Windows 98/2000/XP и установленной программой хоста сети. Управляющий контроллер имеет подключение к сети TCP/IP, по которой может осуществляться доступ к базе данных модулей некоторого числа удаленных клиентов.
Представленная структура сети может найти широкое применение в различных системах промышленной автоматизации и сбора данных, системах «умный дом», пожарно-охранной сигнализации. Конечные узлы такой сети могут передавать информацию с различных датчиков (как цифровых, так и аналоговых): это могут быть датчики температуры, влажности, движения, положения и т. п. Кроме того, конечные узлы сети могут служить для управления различными устройствами. Благодаря наличию в модулях ШИМ-контроллера, возможно плавное управление сервоприводами, освещением и т. п. Последовательный порт модуля может быть использован для управления интеллектуальными цифровыми устройствами, либо для связи с различными промышленными контроллерами.
Отсутствие в беспроводной части сети узлов ретрансляции и маршрутизации пакетов с одной стороны несколько ограничивает ее структуру, но с другой стороны повышает надежность и скорость передачи данных. При необходимости реализации сложной структуры сети возможен вариант с несколькими беспроводными сегментами, объединенными по TCP/IP. К примеру, при комплексной автоматизации здания целесообразно на каждом этаже организовать независимые беспроводные сегменты сети с собственными управляющими контроллерами, а управляющие контроллеры, в свою очередь, объединить локальной сетью TCP/IP. Следует отметить, что в этом случае должен присутствовать центральный координатор сети, управляющий всеми контроллерами, входящими в сеть TCP/IP.
Управление конечными устройствами и получение с них информации может производиться через удаленные терминалы, которые могут подключаться к TCP/IP сети через любой физический интерфейс (в том числе и беспроводной, к примеру, 801.11b).
Заключение
Описываемая структура сети является лишь частным примером, демонстрирующим потенциальные возможности как модулей PWD-433, так и программного обеспечения, работающего совместно с этими модулями. Следует отметить, что командный интерфейс модуля достаточно прост и универсален, что позволяет использовать в качестве управляющего контроллера как х86- и ARM-совместимые платформы, так и простейшие микроконтроллеры. Благодаря наличию встроенного в модуль микроконтроллера и достаточно развитой периферии, есть возможность и вовсе отказаться от внешнего управляющего контроллера и каких-либо дополнительных элементов, и использовать модуль как законченное устройство.
Беспроводная сеть типа «звезда», реализуемая на модулях PWD-433, подходит для большинства задач. Отсутствие возможности построения сложных типов беспроводных сетей с динамической конфигурацией и маршрутизацией пакетов удешевляет стоимость каждого узла сети, а также повышает скорость и надежность передачи информации.
Немаловажным фактором является возможность работы конечных узлов сети на модулях PWD-433 от автономных источников питания с малым энергопотреблением. Это позволяет создавать полностью автономные беспроводные системы, не требующие никаких внешних проводных коммуникаций.
Модули PWD-433 работают в промышленном диапазоне температур, что делает возможным их применение в промышленных системах и устройствах, работающих вне помещений.
Высокая помехоустойчивость, защита от коллизий и сквозное шифрование данных также позволяют применять модули в промышленных системах, в системах пожарно-охранной сигнализации и других ответственных задачах.