Плата расширения Wireless SD

Плата расширения Wireless SD - вид спереди Плата расширения Wireless SD - вид сзади

Общие сведения

С помощью специального беспроводного модуля плата расширения Wireless SD позволяет платам Ардуино взаимодействовать между собой на расстоянии без использования проводов. Конструкцией платы расширения предусмотрено использование беспроводных модулей XBee от компании Digi либо других модулей с аналогичным расположением выводов. Радиус действия такого модуля может достигать 30 метров в помещении и до 100 метров на открытом пространстве (в пределах прямой видимости). В обычном режиме модуль может работать в качестве последовательного приемопередатчика. Командный режим работы модуля позволяет конфигурировать настройки радиопередатчика и тонкости его работы с mesh-сетями сложной топологии. На плате расширения для каждого вывода XBee-модуля предусмотрена отдельная контактная площадка.

Плата расширения содержит встроенный разъем для подключения SD-карты памяти. Для доступа к карте в качестве вывода CS используется вывод 4. Данный вывод следует указывать при вызове методов библиотеки SD и нельзя задействовать для каких-либо других целей. Помимо вывода 4, во взаимодействии по интерфейсу SPI также участвуют выводы 11, 12 и 13.

Встроенный переключатель позволяет соединять беспроводной модуль либо с USB-UART преобразователем, либо с микроконтроллером.

Схема и исходный проект

Файлы EAGLE: arduino_WirelessShield_SD_v3-reference-design.zip

Схема: arduino_WirelessShield_SD_v3-schematic.pdf

Положения переключателя

На плате расширения Wireless SD есть встроенный переключатель обозначенный как "Serial Select". Данный переключатель позволяет выбрать, к какому устройству будет подключен XBee-модуль: к микроконтроллеру (ATmega8 или ATmega168) или к микросхеме преобразователя USB-UART, расположенной на плате Ардуино. Взаимодействие беспроводного модуля с обеими устройствами осуществляется по последовательному интерфейсу.

В положении Micro, вывод DOUT беспроводного модуля соединен с выводом RX микроконтроллера, а вывод DIN - с TX. В этом случае беспроводной модуль будет взаимодействовать с микроконтроллером. Помните, что выводы микроконтроллера RX и TX будут по-прежнему соединены с выводами TX и RX USB-UART преобразователя (соответственно). Поэтому, данные, отправляемые микроконтроллером, будут поступать не только на беспроводной модуль, но и передаваться на компьютер через USB. При таком положении переключателя микроконтроллер нельзя прошить через USB.

В положении USB, вывод DOUT беспроводного модуля соединен с выводом RX USB-UART преобразователя, а вывод DIN - с выводом TX. Фактически это позволяет модулю непосредственно взаимодействовать с компьютером без участия микроконтроллера. Для корректной работы платы расширения в этом режиме, необходимо прошить в микроконтроллер программу-заглушку (приведенную ниже) либо выпаять его из платы.

Программа-заглушка:

void setup() { }
void loop() { }

Работа с беспроводной сетью

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

Адресация

Существует множество параметров, которые необходимо задать для корректного взаимодействия двух модулей (хотя, как правило, все модули по умолчанию уже настроены на взаимодействие друг с другом). Во-первых, они должны работать в одной и той же сети, идентификатор которой задается параметром ID (подробное описание параметров приведено ниже в разделе "Настройка"). Во-вторых, модули должны работать с одним и тем же каналом, который задается параметром CH. В-третьих, у передающего модуля должен быть задан адрес модуля-получателя (параметры DH и DL), находящегося в пределах его сети. Существует несколько вариантов значения этих параметров:

  • Если параметр DH модуля равен 0, и значение DL меньше 0xFFFF (т.е. 16 бит), то передаваемые данные будут получены любым модулем, у которого 16-битное значение параметра MY совпадает с DL.
  • Если DH равен 0 и DL равен 0xFFFF, то передаваемые данные будут получены всеми модулями.
  • Если значение DH не равно 0, или значение DL больше 0xFFFF, то передаваемые данные будут получены только тем модулем, серийный номер которого совпадает с установленным адресом получателя (т.е., у которого параметр SH совпадает со значением DH передающего модуля, а параметр SL - со значением DL соответственно).

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

В зависимости от прошивки, модули класса "Series 2" могут работать в качестве координатора (Coordinator), маршрутизатора (Router) или конечного устройства (End Device). Поэтому, перед работой с беспроводным модулем необходимо выбрать его прошивку, соответствующую требуемой функциональности. Для адресации модулей Series 2 используются значения только 2 байт: SL (serial low) и SH (serial high).

Настройка

Ниже приведены несколько наиболее важных параметров, используемых при настройке XBee-модулей. Пошаговые инструкции, описывающие процесс чтения и записи этих параметров с помощью AT-команд, описаны здесь:

Не забывайте, что каждая команда, отправляемая модулю, должна начинаться с символов "AT" (например, чтобы считать параметр ID, необходимо отправить команду ATID).

Команда  Описание  Возможные значения  Значение по умолчанию 
ID ID - идентификатор сети, в которой работает XBee-модуль. 0 - 0xFFFF 3332
CH Канал, на котором работает XBee-модуль. 0x0B - 0x1A 0X0C
SH и SL Серийный номер XBee-модуля (SH содержит старшие 32 бита, SL - младшие 32 бита). Параметр только для чтения. 0 - 0xFFFFFFFF
(как SH, так и SL)
уникальное у каждого модуля
MY 16-битный адрес модуля. 0 - 0xFFFF 0
DH and DL Адрес получателя (DH содержит старшие 32 бита, DL - младшие 32 бита). 0 - 0xFFFFFFFF
(как DH, так и DL)
0 (как DH, так и DL)
BD Скорость последовательной передачи данных между модулем и Ардуино или модулем и компьютером. 0 (1200 bps)
1 (2400 bps)
2 (4800 bps)
3 (9600 bps)
4 (19200 bps)
5 (38400 bps)
6 (57600 bps)
7 (115200 bps)
3 (9600 baud)

Примечание: в приведенной выше таблице некоторые значения в колонках "Возможные значения" и "Значение по умолчанию" записаны с префиксом "0x" (который указывает на шестнадцатеричную систему счисления). Однако для задания настроек модуля этот префикс не используется. 

Вот еще несколько полезных команд для конфигурирования XBee-модулей (каждую команду также необходимо предварять префиксом AT):

Команда  Описание    
RE Сбросить настройки на заводские (помните, что без последующего вызова команды WR изменение настроек любой командой является временным).    
WR Записать измененные параметры в энергонезависимую память (для длительного хранения). Без вызова этой команды все измененные данные будут утеряны при отключении питания.    
CN Выйти из командного режима. (Если в течение нескольких секунд не посылать модулю никаких команд, то он сам выйдет из командного режима по таймауту, даже без команды CN).    

Для получения дополнительной информации о настройке XBee-модулей, см. инструкцию по эксплуатации модулей 802.15.4 или инструкцию по эксплуатации модулей ZB от компании Digi International.