Arduino Xbee Shield
Примечание
Эта страница относится к продукту, который снят с производства.
Arduino Xbee Shield
Обзор
Xbee Shield позволяет плате Arduino обмениваться данными по беспроводной связи с использованием Zigbee. Он основан на модуле Xbee от MaxStream. Модуль может обеспечивать связь на расстоянии до 30 метров в помещении или 90 метров на открытом воздухе (при прямой видимости). Он может использоваться как замена последовательного/USB-соединения, или вы можете перевести его в командный режим и настроить для различных вариантов широковещательной и ячеистой сетевой связи. Шилд выводит каждый пин Xbee на контактную площадку для пайки со сквозным отверстием. Он также предоставляет гнездовые штыревые разъемы для использования цифровых пинов 2-7 и аналоговых входов, которые закрыты шилдом (цифровые пины 8-13 не перекрываются шилдом, поэтому вы можете использовать разъемы на самой плате).
Xbee Shield был создан в сотрудничестве с Libelium, которые разработали его для использования в своих мотах SquidBee (используемых для создания сенсорных сетей).
Схема
XbeeShieldSchematic.pdf (Схемы Eagle и разводки плат доступны на странице загрузок вики SquidBee от Libelium.)
Настройки джамперов
Xbee Shield имеет два джампера (маленькие съемные пластиковые гильзы, которые надеваются на два из трех пинов с обозначением Xbee/USB). Они определяют, как последовательная связь Xbee соединяется с последовательной связью между микроконтроллером (ATmega8 или ATmega168) и FTDI USB-Serial чипом на плате Arduino.
В положении Xbee (т.е. на двух пинах ближе к центру платы) вывод DOUT модуля Xbee подключен к выводу RX микроконтроллера, а DIN подключен к TX. Обратите внимание, что выводы RX и TX микроконтроллера по-прежнему подключены к выводам TX и RX (соответственно) чипа FTDI – данные, отправляемые микроконтроллером, будут передаваться на компьютер через USB, а также отправляться беспроводным модулем Xbee. Однако микроконтроллер сможет получать данные только от модуля Xbee, но не через USB от компьютера.
В положении USB (т.е. на двух пинах ближе к краю платы) вывод DOUT модуля Xbee подключен к выводу RX чипа FTDI, а DIN модуля Xbee подключен к выводу TX чипа FTDI. Это означает, что модуль Xbee может обмениваться данными напрямую с компьютером – однако это работает только если микроконтроллер извлечен из платы Arduino. Если микроконтроллер остается на плате Arduino, он сможет нормально обмениваться данными с компьютером через USB, но ни компьютер, ни микроконтроллер не смогут обмениваться данными с модулем Xbee.
Сетевое взаимодействие
Arduino Xbee Shield может использоваться с различными модулями XBee. Приведенные ниже инструкции предназначены для модулей XBee 802.15.4 (иногда называемых «Series 1» для отличия от модулей Series 2, хотя «Series 1» не фигурирует в официальном названии или описании продукта).
Адресация
Для корректного обмена данными между двумя модулями необходимо правильно настроить несколько параметров (хотя с настройками по умолчанию все модули должны быть способны обмениваться данными друг с другом). Они должны находиться в одной сети, что задается параметром ID (подробнее о параметрах см. раздел «Конфигурация» ниже). Модули должны быть на одном канале, что задается параметром CH. Наконец, адрес назначения модуля (параметры DH и DL) определяет, какие модули в его сети и канале будут получать передаваемые им данные. Это может происходить несколькими способами:
Если DH модуля равен 0, а DL меньше 0xFFFF (т.е. 16 бит), данные, передаваемые этим модулем, будут получены любым модулем, чей 16-битный адрес (параметр MY) равен DL.
Если DH равен 0 и DL равен 0xFFFF, передачи модуля будут получены всеми модулями.
Если DH отличен от нуля или DL больше 0xFFFF, передача будет получена только модулем, чей серийный номер совпадает с адресом назначения передающего модуля (т.е. чей SH равен DH передающего модуля, а SL равен его DL).
Опять же, это сопоставление адресов происходит только между модулями в одной сети и на одном канале. Если два модуля находятся в разных сетях или на разных каналах, они не могут обмениваться данными независимо от их адресов.
Конфигурация
Вот некоторые наиболее полезные параметры для настройки вашего модуля Xbee. Пошаговые инструкции по их чтению и записи см. в руководстве по Xbee Shield ниже. Убедитесь, что вы добавляете AT перед именем параметра при отправке команды модулю (например, для чтения параметра ID следует отправить команду ATID).
Команда |
Описание |
Допустимые значения |
Значение по умолчанию |
|---|---|---|---|
|
Сетевой ID модуля Xbee. |
0 - 0xFFFF |
3332 |
|
Канал модуля Xbee. |
0x0B - 0x1A |
0x0C |
|
Серийный номер модуля Xbee (SH – старшие 32 бита, SL – младшие 32 бита). Только для чтения. |
0 - 0xFFFFFFFF (для обоих) |
уникален для каждого модуля |
|
16-битный адрес модуля. |
0 - 0xFFFF |
0 |
|
Адрес назначения для беспроводной связи (DH – старшие 32 бита, DL – младшие 32). |
0 - 0xFFFFFFFF (для обоих) |
0 (для обоих) |
|
Скорость передачи данных для последовательной связи с платой Arduino или компьютером. |
0 (1200 бод), 1 (2400 бод), 2 (4800 бод), 3 (9600 бод), 4 (19200 бод), 5 (38400 бод), 6 (57600 бод), 7 (115200 бод) |
3 (9600 бод) |
Примечание
Хотя допустимые значения и значения по умолчанию в таблице выше записаны с префиксом «0x» (для обозначения шестнадцатеричных чисел), модуль не будет включать «0x» при отображении значения параметра, и вы должны опускать его при установке значений.
Вот еще несколько полезных команд для настройки модуля Xbee (к ним тоже нужно добавлять AT):
Команда |
Описание |
|---|---|
|
Восстановить заводские настройки (обратите внимание, что, как и изменения параметров, это не является постоянным, если не выполнить команду WR). |
|
Записать вновь настроенные значения параметров в энергонезависимую (долговременную) память. В противном случае они сохранятся только до потери питания модуля. |
|
Немедленно выйти из командного режима. (Если вы не отправляете команды модулю в течение нескольких секунд, командный режим автоматически завершится даже без команды CN.) |
Руководство по Arduino Xbee Shield
Arduino Xbee Shield позволяет вашей плате Arduino обмениваться данными по беспроводной связи с использованием Zigbee. Он был разработан в сотрудничестве с Libelium. Эта документация описывает использование шилда с модулями XBee 802.15.4 (иногда называемыми «Series 1» для отличия от модулей Series 2, хотя «Series 1» не фигурирует в официальном названии или описании продукта). Для модулей XBee ZNet 2.5 («Series 2») см. это руководство по настройке.
Простой пример
Вы сможете заставить две платы Arduino с Xbee Shield обмениваться данными друг с другом без какой-либо конфигурации, используя только стандартные команды последовательной связи Arduino (описанные в справочнике).
Чтобы загрузить скетч на плату Arduino с Xbee Shield, вам нужно установить оба джампера на шилде в положение «USB» (т.е. поместить их на два пина ближе к краю платы) или полностью снять их (но позаботьтесь, чтобы не потерять их!). Затем вы можете загрузить скетч обычным образом из среды Arduino. В данном случае загрузите скетч Communication | Physical Pixel на одну из плат. Этот скетч дает команду плате включить светодиод на пине 13 при получении символа „H“ через последовательное соединение и выключить его при получении „L“. Вы можете проверить его работу, подключившись к плате через монитор последовательного порта Arduino (убедитесь, что установлена скорость 9600 бод), набрав H и нажав Enter (или нажав кнопку Send). Светодиод должен загореться. Отправьте L, и светодиод должен погаснуть. Если ничего не происходит, возможно, на вашей плате Arduino нет встроенного светодиода на пине 13 – в этом случае вам нужно подключить собственный.
После загрузки скетча Physical Pixel и проверки его работоспособности отключите первую плату Arduino от компьютера. Переключите джамперы в положение Xbee (т.е. поместите каждый на центральный пин и пин, наиболее удаленный от края платы). Теперь нужно загрузить скетч на вторую плату. Убедитесь, что ее джамперы находятся в положении USB. Затем загрузите следующий скетч на плату:
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print('H');
delay(1000);
Serial.print('L');
delay(1000);
}
После завершения загрузки вы можете проверить работу через монитор последовательного порта Arduino. Вы должны видеть символы H и L, поступающие раз в секунду. Выключите монитор последовательного порта и отключите плату. Переключите джамперы в положение Xbee. Теперь подключите обе платы к компьютеру. Через несколько секунд вы должны увидеть, как светодиод на первой плате включается и выключается раз в секунду. (Это светодиод на самой плате Arduino, а не на Xbee Shield, который передает информацию о состоянии модуля Xbee.) Если так, поздравляем – ваши платы Arduino обмениваются данными по беспроводной связи. Это может показаться не слишком впечатляющим, когда обе платы подключены к одному компьютеру, но если вы подключите их к разным компьютерам (или запитаете от внешнего источника питания, не забыв переключить джампер питания на плате Arduino), они по-прежнему смогут обмениваться данными.
Несколько замечаний
Вы можете использовать любые стандартные команды последовательной связи Arduino с Xbee Shield. С джамперами шилда в положении Xbee команды print и println будут отправлять данные через Xbee Shield и USB-соединение (т.е. к другим Xbee Shield и к компьютеру одновременно). В этой конфигурации, однако, плата будет получать данные только от Xbee Shield, а не через USB (для получения данных от компьютера необходимо переключить джамперы).
Модуль Xbee на шилде по умолчанию настроен на работу на скорости 9600 бод, поэтому, если вы не перенастроите его, убедитесь, что передаете 9600 в команду Serial.begin() в вашем скетче.
Чтобы позволить компьютеру обмениваться данными напрямую с Xbee Shield, подключите его к плате Arduino, из которой извлечен микроконтроллер, и установите джамперы в положение USB. Затем вы можете отправлять и получать данные от модуля Xbee из любой терминальной программы. Это позволяет, например, видеть данные, которые модуль получает от других Xbee Shield (например, для сбора данных с датчиков из нескольких точек по беспроводной связи).
Настройка модуля Xbee
Вы можете настроить модуль Xbee из кода, работающего на плате Arduino, или из программного обеспечения на компьютере. Для настройки с платы Arduino джамперы должны быть в положении Xbee. Для настройки с компьютера джамперы должны быть в положении USB, а микроконтроллер должен быть извлечен из платы Arduino.
Чтобы перевести модуль в режим конфигурации, нужно отправить ему три плюса: +++, при этом должна быть пауза не менее одной секунды до и после, в течение которой вы не отправляете модулю никаких других символов. Обратите внимание, что это включает символы новой строки и возврата каретки. Таким образом, если вы пытаетесь настроить модуль с компьютера, убедитесь, что ваше терминальное ПО настроено на отправку символов по мере набора, не дожидаясь нажатия Enter. В противном случае оно отправит плюсы сразу за символом новой строки (т.е. вы не получите необходимую односекундную задержку после +++). Если вы успешно войдете в режим конфигурации, модуль вернет два символа „OK“, за которыми следует символ возврата каретки.
Отправка команды: +++
Ожидаемый ответ: OK (CR)
В режиме конфигурации вы можете отправлять AT-команды модулю. Командные строки имеют формат ATxx (где xx – имя настройки). Для чтения текущего значения настройки отправьте командную строку, за которой следует символ возврата каретки. Для записи нового значения настройки отправьте командную строку, сразу за которой следует новое значение (без пробелов и переносов строк), за которым следует символ возврата каретки. Например, для чтения сетевого 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.
Ссылки
Для получения дополнительной информации см. вики Libelium SquidBee.