Плата расширения Arduino Wireless с модулями XBee 802.15.4

Плата расширения Arduino Wireless позволяет Ардуино взаимодействовать между собой по беспроводному интерфейсу Zigbee. В этом документе описываются основные аспекты использования платы расширения с модулем XBee 802.15.4 (иногда его также называют "Series 1", чтобы отличать от модулей Series 2, несмотря на то, что официального названия "Series 1" не существует).

Простой пример

Вам понадобится два Ардуино с установленными платами расширения Arduino Wireless. Взаимодействие между устройствами по беспроводному интерфейсу будет осуществляться с использованием только стандартных команд для работы с последовательным интерфейсом (подробнее описаны в справке). 

Чтобы прошить программу в Ардуино с установленной платой расширения Wireless, необходимо снять модуль XBee. После этого можно прошивать устройство прямо из среды программирования Ардуино. В одну из плат прошейте программу Communication | Physical Pixel, которая включает светодиод на 13 выводе в случае получения по последовательному интерфейсу символа 'H', и выключает его - в случае получения символа 'L'. Правильность работы программы можно проверить, подключившись к Ардуино программой Serial Monitor (не забудьте убедиться, что скорость обмена была выставлена в 9600 бод). После ввода символа 'H' и нажатия Enter (либо кнопки Send) светодиод должен загореться. Точно так же попробуйте отправить Ардуино символ 'L' - светодиод должен погаснуть. Если этого не происходит, то скорее всего у вас Ардуино без встроенного светодиода на 13 пине (действительно ли это так, можно убедиться, заглянув в список устройств Ардуино).

После того, как вы прошили программу Physical Pixel в Ардуино и убедились, что она работает корректно, отсоедините первый Ардуино от компьютера и передвиньте его переключатель в положение Micro. Теперь необходимо прошить второй Ардуино. Убедитесь, что его переключатель установлен в положение USB, и прошейте в устройство следующую программу:

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.print('H');
  delay(1000);
  Serial.print('L');
  delay(1000);
}

После завершения процесса прошивки, можете убедиться в работоспособности этой программы с помощью Serial Monitor: в терминале вы должны увидеть символы 'H' и 'L', поступающие с интервалом в одну секунду. После этого закройте serial Monitor и отсоедините Ардуино, установив переключатель в положение Micro. Теперь подключите питание к обеим платам. Через несколько секунд вы увидите, как мигает светодиод на первой плате с интервалом в одну секунду. (Имеется ввиду светодиод на самой плате Ардуино, а не светодиод на плате расширения, который характеризует состояние беспроводного Xbee-модуля). Если это действительно так - поздравляем, ваши платы Ардуино успешно взаимодействуют друг с другом по беспроводному интерфейсу.

Несколько замечаний

Для взаимодействия с платой расширения Xbee можно использовать любые стандартные команды Ардуино, предназначенные для работы с последовательным интерфейсом. Когда переключатель находится в положении Micro, команды print и println будут отправлять данные через Xbee-модуль и USB-соединение (т.е. и другим Xbee-модулям и компьютеру одновременно). Однако в этом режиме устройство может получать данные только от XBee-модуля, прием данных через USB-соединение работать не будет. 

По умолчанию Xbee-модуль в плате расширения настроен на работу со скоростью 9600 бод. Поэтому, если не перенастраивать его на другую скорость, в функции Serial.begin() вашей программы необходимо указывать параметр 9600.

Чтобы заставить компьютер работать непосредственно с самим Xbee-модулем, подключите плату расширения к Ардуино, у которого снят микроконтроллер, и передвиньте его переключатель в положение USB. Такое подключение позволит вам отправлять и получать данные от XBee-модуля с помощью любой программы-терминала. Например, это позволит вам наблюдать данные, которые получает модуль от других плат расширения с Xbee-модулями (другими словами, можно организовать беспроводной сбор данных от нескольких датчиков, расположенных в разных местах, и многое другое).

Настройка Xbee-модуля

Сконфигурировать Xbee-модуль можно как со стороны компьютера, так и со стороны программы, выполняемой микроконтроллером Ардуино. Для настройки модуля с помощью Ардуино необходимо установить переключатель платы расширения в положение Micro. А для настройки с помощью компьютера - установить переключатель в положение USB и извлечь микроконтроллер из основной платы Ардуино.

Чтобы перевести модуль в режим конфигурации, необходимо отправить ему последовательность из трех знаков "плюс": +++, причем до и после отправки должен быть выдержан интервал не менее, чем в 1 секунду, в течение которого на модуль не отправляются никакие символы. В число таких символов, в том числе, входят символы новой строки и возврата каретки. Поэтому, при конфигурировании Xbee-модуля с компьютера, важно убедиться, что ваш терминал отправляет символы сразу по мере их ввода, а не ожидает нажатия Enter. В противном случае, терминал может отправлять модулю последовательность из трех знаков "плюс" вместе с символом новой строки (т.е. необходимой задержки в одну секунду после "+++" не будет). Если вы успешно перевели модуль в режим конфигурации, то он вернет в ответ два символа - 'OK' с символом новой строки.

Отправляемая команда Ожидаемый ответ
+++ OK<CR>

После перехода в режим конфигурации, модулю можно отправлять различные AT-команды. Текстовые команды имеют вид ATxx (где xx - это название того или иного параметра). Для того, чтобы считать текущее значение параметра - необходимо отправить модулю команду и символ новой строки (т.е. как-бы нажать Enter). Чтобы записать новое значение какого-либо параметра - необходимо отправить команду вместе с новым значением (без пробелов, в одной строке) и символ новой строки. Например, для того, чтобы считать сетевой идентификатор модуля ID (определяющий порядок взаимодействия с другими Xbee-модулями), нужно отправить команду 'ATID':

Отправляемая команда Ожидаемый ответ
ATID<enter> 3332<CR>

Чтобы изменить сетевой идентификатор модуля ID, введите:

Отправляемая команда Ожидаемый ответ
ATID3331<enter> OK<CR>

Теперь проверьте, вступили ли внесенные изменения в силу:

Отправляемая команда Ожидаемый ответ
ATID<enter> 3331<CR>

Пока вы не заставите модуль записать изменения в энергонезависимую память, все измененные настройки буду действовать до выключения питания. Поэтому, чтобы навсегда сохранить изменения (до внесения очередных поправок), следует использовать команду ATWR:

Отправляемая команда Ожидаемый ответ
ATWR<enter> OK<CR>

Чтобы сбросить все настройки модуля на заводские - используйте команду ATRE:

Отправляемая команда Ожидаемый ответ
ATRE<enter> OK<CR>

Обратите внимание, что, как и другие команды, команда сброса будет иметь лишь временный эффект, до записи заводских настроек в постоянную память с помощью команды ATWR.

Ссылки

Для получения дополнительной информации, см.: техническое описание платы расширения для Xbee, страницу Digi о Xbee-модулях