Arduino Wireless Shield с радиомодулями XBee Series 2
Узнайте, как настроить беспроводную связь ZigBee с помощью Arduino Wireless Shield.
Примечание
Это устаревший продукт.
Arduino Wireless Shield позволяет плате Arduino обмениваться данными по беспроводной связи с использованием протокола ZigBee. В этом документе описывается использование платы расширения с модулем XBee ZB ZigBee RF. Модули XBee ZB ZigBee RF и XBee 802.15.4 OEM RF несовместимы по радиоканалу, поскольку используют разные чипсеты. В частности, XBee 802.15.4 OEM RF реализует протокол 802.15.4, тогда как XBee ZB ZigBee RF реализует протокол ZigBee или протокол ZNet 2.5. Digi International продолжает поддерживать как ZigBee, так и ZNet 2.5, поэтому вы свободны использовать любой из них на радиомодулях Series 2. Помните, что только радиомодули с одинаковым типом прошивки могут общаться друг с другом.
Модули XBee 802.15.4 поддерживают связь «точка-точка» или «многоточечную» без маршрутизации, поэтому они готовы к работе «из коробки» для установления однорангового соединения между двумя радиомодулями без какой-либо настройки.
Модули XBee с прошивкой ZNet 2.5 или ZB предназначены для формирования сетей с топологией «звезда», «кластерное дерево» или «mesh», где существует иерархия устройств и всегда необходим один координатор. Поэтому простая одноранговая связь с этими модулями сложнее, чем с модулями 802.15.4. Каждый модуль ZB должен иметь прошивку, настроенную как координатор, маршрутизатор или конечное устройство, прежде чем вы сможете начать обмен данными.
В сети ZigBee должен быть только один координатор, который управляет всей сетью. К каждому координатору может быть подключено несколько маршрутизаторов, а также множество конечных устройств, которые могут напрямую общаться с координатором или передавать сообщения другим конечным устройствам через маршрутизаторы и координатор. Хотя каждый модуль должен быть настроен для определённой роли, преимущество заключается в том, что вы можете формировать более широкие сети, чем с модулями 802.15.4. Протокол ZigBee позволяет установить радиосвязь между модулями, находящимися далеко друг от друга, отправляя сообщения через несколько маршрутизаторов от одного конечного устройства к другому. Также можно создавать сети, в которых конечные устройства экономят энергию, переходя в спящий режим, но не теряют сообщения во время сна.
Для обеспечения простого обмена данными между двумя радиомодулями ZB вам нужно настроить один с прошивкой координатора, а другой – с прошивкой маршрутизатора или конечного устройства. В следующем разделе показано, как это сделать.
Настройка модуля XBee
Эти инструкции покажут, как заставить две платы Arduino обмениваться данными друг с другом через радиомодули ZB с помощью Wireless Shield.
Чтобы настроить модуль ZB как координатор, маршрутизатор или конечное устройство, вам нужно сменить прошивку. Для этого вам понадобится программное обеспечение Digi X-CTU. Скачайте его по этой ссылке.
Чтобы настроить модули с компьютера, переведите переключатель последовательного порта в положение USB и загрузите пустой скетч:
void setup() { }
void loop() { }
Затем установите радиомодуль на Wireless Shield.
Настройка конечного устройства
Откройте программу X-CTU и введите номер COM-порта модуля Arduino XBee в поле «Com Port Number». Затем нажмите кнопку Add. Созданный COM-порт появится в двух текстовых полях слева. Выберите оба и нажмите кнопку «Test / Query», появится экран, подобный этому:
Наиболее важными являются настройки PAN ID (ID) и старшее слово серийного номера (SH) и младшее слово (SL). Радиомодули с одинаковым PAN ID могут общаться друг с другом. Радиомодули с разными PAN ID будут игнорировать сообщения друг друга. Серийный номер состоит из двух 16-битных чисел, хранящихся в двух адресах: SH (serial high) и SL (serial low). Это уникальный адрес радиомодуля, который используется для отправки сообщений ему. В настройках ниже вам нужно изменить только PAN ID. Используйте одинаковый номер для обоих радиомодулей, чтобы они могли общаться. Прочитайте параметры SH и SL и запишите их, потому что вам нужно будет сообщить координатору этот адрес на следующем шаге.
Теперь настройка конечного устройства завершена. Установите флажок «Always Update Firmware» и нажмите кнопку «Write», и конфигурация будет загружена на ваш модуль. Если вы не можете прочитать эти параметры из списка, вы можете перейти на вкладку «Terminal» и ввести три символа «плюс»: +++, чтобы войти в режим конфигурации, затем введите ATSH и ATSL, чтобы получить серийный номер модуля, модуль ответит следующим образом:
Отправить команду |
Ожидаемый ответ |
Что делает |
|---|---|---|
|
|
Переводит радиомодуль в командный режим |
|
|
Читает старшее слово серийного номера |
|
|
Читает младшее слово серийного номера |
Вы также можете настроить PAN ID следующим образом:
Отправить команду |
Ожидаемый ответ |
Что делает |
|---|---|---|
|
|
Переводит радиомодуль в командный режим |
|
|
Устанавливает PAN ID в 1111 |
|
|
Сохраняет новую конфигурацию во флеш-памяти |
Настройка координатора
Установите второй модуль в разъём Wireless Shield и повторите процедуру подключения к X-CTU. Перейдите на вкладку «Modem Configuration» и нажмите кнопку «Read». Этот модуль должен быть распознан с прошивкой XB24-B, и вам нужно изменить его функцию, переключив на «ZNET 2.5 COORDINATOR AT». Номер версии изменится на 1047. Теперь вам нужно сделать три простых действия:
1. Измените PAN ID и впишите тот, который вы назначили для конечного устройства (1111 в примере выше).
2. В параметр DH впишите числа, которые вы записали из параметра SH конечного устройства.
3. В параметр DL впишите числа, которые вы записали из параметра SL конечного устройства.
Как и для предыдущего модуля, настройка завершена: вам нужно установить флажок «Always Update Firmware» и нажать кнопку «Write», и конфигурация будет загружена на ваш модуль.
Обратите внимание, что вам не нужно было задавать адрес назначения конечного устройства. Это потому, что конечное устройство всегда общается с координатором. Модули теперь образуют сеть. Координатор управляет только одним конечным узлом, поэтому это работает как прозрачная последовательная связь. Вы должны быть в состоянии заставить две платы Arduino с Wireless Shield общаться друг с другом, используя стандартные команды последовательного порта Arduino (описанные в справочнике). Ниже приведён пример.
Простой пример
Чтобы загрузить скетч на плату Arduino с Wireless Shield, переведите переключатель в положение USB. Затем вы можете загрузить скетч обычным способом из среды Arduino. В данном случае загрузите скетч Communication | Physical Pixel на одну из плат. Этот скетч инструктирует плату включать светодиод на пине 13, когда она получает символ „H“ через последовательное соединение, и выключать светодиод при получении символа „L“. Вы можете проверить его, подключившись к плате через монитор последовательного порта Arduino (убедитесь, что скорость установлена на 9600 бод), набрав H и нажав Enter (или щёлкнув «Отправить»). Светодиод должен включиться. Отправьте L, и светодиод должен выключиться. Если ничего не происходит, возможно, ваша плата Arduino не имеет встроенного светодиода на пине 13 (проверьте список плат), в этом случае вам нужно будет подключить свой собственный.
После загрузки скетча Physical Pixel и проверки его работоспособности отключите первую плату Arduino от компьютера. Переведите переключатель в положение Micro. Теперь вам нужно загрузить скетч на вторую плату. Убедитесь, что её переключатель находится в положении USB. Затем загрузите следующий скетч на плату:
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print('H');
delay(1000);
Serial.print('L');
delay(1000);
}
После завершения загрузки проверьте его работу с помощью монитора последовательного порта Arduino. Вы должны видеть символы H и L, приходящие раз в секунду. Выключите монитор последовательного порта и отключите плату. Переведите переключатель в положение Micro. Теперь подключите обе платы к питанию. Через несколько секунд вы должны увидеть, как светодиод на первой плате включается и выключается раз в секунду. (Это светодиод на самой плате Arduino, а не на плате расширения XBee, который отображает информацию о состоянии модуля XBee.) Если так, поздравляем, ваши платы Arduino общаются по беспроводной связи.
Несколько замечаний
Модуль XBee на плате расширения по умолчанию настроен на работу со скоростью 9600 бод, поэтому, если вы не переконфигурируете его, вам нужно убедиться, что вы передаёте значение 9600 в команду Serial.begin() в вашем скетче.
Если вы хотите углубиться в настройку и работу с сетями ZigBee на модулях XBee Series 2, мы рекомендуем прочитать книгу Роберта Фалуди: Building Wireless Sensor Networks, изданную O’Reilly.
Ссылки
Для получения дополнительной информации смотрите страницу оборудования платы расширения XBee и страницу Digi XBee.