Arduino:Знакомство с Arduino/Знакомство с беспроводным модулем Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Знакомство с беспроводным модулем Arduino[1]
Через беспроводной модуль Arduino, соединенный с XBee-модулем, плата Arduino может коммуницировать по беспроводной связи стандарта ZigBee. То есть в результате получается что-то вроде «небоскреба», где «фундаментом» служит сама Arduino, сверху к ней подключен беспроводной модуль, а сверху к беспроводному модулю подключен XBee-модуль. В данной статье описывается использование XBee-модуля, работающего со стандартом связи 802.15.4. Иногда такие модули называют «модулями 1-ой серии» (т.е. «Series 1»), чтобы отличить их от модулей 2-ой серии («Series 2»). Впрочем, «Series 1» не фигурирует в официальных названии и документации к этому продукту.
Простой скетч-пример
В этом примере мы наладим «общение» между двумя платами Arduino, к которым присоединены беспроводные модули. Это общение будет осуществляться посредством стандартных команд языка Arduino, использующихся для последовательной коммуникации (подробнее читайте тут).
Чтобы загрузить скетч на плату Arduino с беспроводным модулем, снимаем с него XBee-модуль. Затем загружаем на одну из плат скетч, как это делается обычно – через IDE Arduino. В данном случае нам нужен скетч Physical Pixel, и он открывается по нажатию в IDE Arduino на Файл > Примеры > 04.Communication > PhysicalPixel (File > Examples > 04.Communication > PhysicalPixel). Этот скетч заставляет плату включать светодиод на 13-ом контакте всякий раз, когда она будет получать символ «H», и выключать – когда она будет получать символ «L». Чтобы проверить, правильно ли все загрузилось, подключите плату к монитору порта (убедитесь, что скорость составляет 9600 бод), впишите «H» и нажмите ↵ Enter (или кнопку «Послать»). Светодиод должен загореться. Затем отправьте «L», и светодиод должен выключиться. Если ничего не происходит, то у вашей Arduino, вероятно, просто нет встроенного светодиода на 13-ом контакте. В этом случае светодиод нужно будет подключить самостоятельно.
Загрузив скетч и убедившись, что все работает, отключаем первую Arduino от компьютера. Затем ставим переключатель Serial Select на беспроводном модуле в положение Micro. Теперь нам нужно загрузить скетч на вторую плату.
Убеждаемся, что на ее беспроводном модуле переключатель Serial Select выставлен в положение USB. Теперь загружаем на вторую плату вот этот скетч:
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print('H');
delay(1000);
Serial.print('L');
delay(1000);
}
Загрузив скетч, проверяем, работает ли он – это делается через монитор порта в IDE Arduino. Вы должны увидеть, как скетч передает символы «H» и «L» (с интервалом в одну секунду). Если все нормально, выключаем монитор порта и отключаем вторую плату от компьютера. Меняем положение переключателя на Micro. Теперь подключаем обе платы к питанию. Спустя несколько секунд светодиод на первой плате должен начать включаться и выключаться. И это должен быть светодиод, находящийся на самой плате, а не на XBee-модуле, потому что у этого светодиода совсем другая задача – информировать о состоянии XBee-модуля. Если все работает, поздравляем!
Это значит, что обе платы нашли между собой общий язык – как и планировалось.
Несколько примечаний
С беспроводным модулем можно использовать все стандартные команды языка Arduino, использующиеся для последовательной коммуникации. Если переключатель будет стоять в положении Micro, то при помощи функций print() и println() данные можно будет передавать и через беспроводной модуль, и через USB-соединение (т.е. одновременно и на другие беспроводные модули, и на компьютер). А вот получать данные можно будет только через беспроводной модуль.
По умолчанию беспроводной модуль настроен на скорость 9600 бод, поэтому при написании/редактировании скетча в функции Serial.begin() нужно указать именно «9600» – разве что вы не перенастроили модуль на другую скорость.
Чтобы выполнить прямую коммуникацию между компьютером и беспроводным модулем, подключите его к Arduino со снятым микроконтроллером и выставьте переключатель в положение USB. В результате вы сможете отсылать и получать данные от беспроводного модуля при помощи программы-терминала. Это позволит, к примеру, видеть данные, которые беспроводной модуль получает от других модулей (например, собирает данные с датчиков, расположенных в разных местах).
Настройка беспроводного модуля
Настройку беспроводного модуля можно выполнить двумя способами – через код, запущенный на плате Arduino, или через ПО на компьютере. Для настройки через плату переключатель должен стоять в положении Micro. Для настройки через компьютер переключатель должен стоять в положении USB, а у платы должен быть снят микроконтроллер.
Чтобы активировать у модуля режим настройки, ему нужно отослать три плюса: +++. Кроме того, в пределах одной секунды до и после отправки этой команды модулю не должно быть отправлено ни одного другого символа. Это касается и символа новой строки, и символа возврата каретки. Таким образом, если вы настраиваете модуль с компьютера, вам нужно убедиться, что терминал отправляет сообщения в тот момент, когда вы их пишите – не дожидаясь, когда вы нажмете ↵ Enter . В противном случае он отправит эти три плюса вместе с символом новой строки, в результате чего вы не получите желаемую «секунду тишины» после отправки трех плюсов. Если вы успешно вошли в режим настройки, модуль в ответ отправит два символа – OK, вслед за которыми будет идти символ возврата каретки.
Отправляем: +++. Получаем: OK<CR>.
Теперь, когда мы в режиме настройки, модуль готов получать от нас AT-команды. Они будут иметь форму «ATxx», где «xx» – это название параметра. Чтобы сосчитать значение того или иного параметра, впишите команду, а в конце добавьте символ возврата каретки. Чтобы записать в параметр какое-либо значение, впишите команду, сразу за ней – новое значение (т.е. безо всяких пробелов и символов новой строки), а в конце – символ возврата каретки. К примеру, чтобы узнать ID сети модуля (что определяет другие модули, с которыми он будет коммуницировать), используйте команду «ATID»:
Отправляем: ATID<enter>. Получаем: 3332<CR>.
Чтобы поменять ID сети модуля:
Отправляем: ATID3331. Получаем: OK<CR>.
Теперь проверяем, вошло ли новое изменения в силу:
Отправляем: ATID<enter>. Получаем: 3331<CR>.
Вносимые вами изменения будут работать до тех пор, пока модуль не будет отключен от питания. Чтобы изменения сохранились на более долгий срок (или до следующего изменения), их нужно сохранить в долговременную память, и это делается при помощи команды ATWR.
Отправляем: ATWR<enter>. Получаем: OK<CR>.
Чтобы сбросить модуль до фабричных настроек, используйте команду ATRE.
Отправляем: ATRE<enter>. Получаем: OK<CR>.
Обратите внимание, что Reset, как и другие команды, не будет записываться в долговременную память. Для этого нужно воспользоваться командой ATWR.
Дополнительные материалы
Более подробно о беспроводном модуле можно почитать на странице с его аппаратным описанием.