Arduino:Знакомство с Arduino/Знакомство с беспроводным модулем Arduino: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
Строка 18: Строка 18:
Убеждаемся, что на ее беспроводном модуле переключатель '''Serial Select''' выставлен в положение '''USB'''. Теперь загружаем на вторую плату вот этот скетч:
Убеждаемся, что на ее беспроводном модуле переключатель '''Serial Select''' выставлен в положение '''USB'''. Теперь загружаем на вторую плату вот этот скетч:


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
void setup()
void setup()
{
{
Строка 51: Строка 51:
Чтобы активировать у модуля режим настройки, ему нужно отослать три плюса: '''+++'''. Кроме того, в пределах одной секунды до и после отправки этой команды модулю не должно быть отправлено ни одного другого символа. Это касается и символа новой строки, и символа возврата каретки. Таким образом, если вы настраиваете модуль с компьютера, вам нужно убедиться, что терминал отправляет сообщения в тот момент, когда вы их пишите – не дожидаясь, когда вы нажмете {{клавиша|Enter}}. В противном случае он отправит эти три плюса вместе с символом новой строки, в результате чего вы не получите желаемую '''«секунду тишины»''' после отправки трех плюсов. Если вы успешно вошли в режим настройки, модуль в ответ отправит два символа – '''OK''', вслед за которыми будет идти символ возврата каретки.
Чтобы активировать у модуля режим настройки, ему нужно отослать три плюса: '''+++'''. Кроме того, в пределах одной секунды до и после отправки этой команды модулю не должно быть отправлено ни одного другого символа. Это касается и символа новой строки, и символа возврата каретки. Таким образом, если вы настраиваете модуль с компьютера, вам нужно убедиться, что терминал отправляет сообщения в тот момент, когда вы их пишите – не дожидаясь, когда вы нажмете {{клавиша|Enter}}. В противном случае он отправит эти три плюса вместе с символом новой строки, в результате чего вы не получите желаемую '''«секунду тишины»''' после отправки трех плюсов. Если вы успешно вошли в режим настройки, модуль в ответ отправит два символа – '''OK''', вслед за которыми будет идти символ возврата каретки.


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Отправляем: +++. Получаем: OK<CR>.
Отправляем: +++. Получаем: OK<CR>.
</syntaxhighlight>
</syntaxhighlight>
Строка 57: Строка 57:
Теперь, когда мы в режиме настройки, модуль готов получать от нас '''AT'''-команды. Они будут иметь форму '''«ATxx»''', где '''«xx»''' – это название параметра. Чтобы сосчитать значение того или иного параметра, впишите команду, а в конце добавьте символ возврата каретки. Чтобы записать в параметр какое-либо значение, впишите команду, сразу за ней – новое значение (т.е. безо всяких пробелов и символов новой строки), а в конце – символ возврата каретки. К примеру, чтобы узнать '''ID''' сети модуля (что определяет другие модули, с которыми он будет коммуницировать), используйте команду '''«ATID»''':
Теперь, когда мы в режиме настройки, модуль готов получать от нас '''AT'''-команды. Они будут иметь форму '''«ATxx»''', где '''«xx»''' – это название параметра. Чтобы сосчитать значение того или иного параметра, впишите команду, а в конце добавьте символ возврата каретки. Чтобы записать в параметр какое-либо значение, впишите команду, сразу за ней – новое значение (т.е. безо всяких пробелов и символов новой строки), а в конце – символ возврата каретки. К примеру, чтобы узнать '''ID''' сети модуля (что определяет другие модули, с которыми он будет коммуницировать), используйте команду '''«ATID»''':


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Отправляем: ATID<enter>. Получаем: 3332<CR>.
Отправляем: ATID<enter>. Получаем: 3332<CR>.
</syntaxhighlight>
</syntaxhighlight>
Строка 63: Строка 63:
Чтобы поменять '''ID''' сети модуля:
Чтобы поменять '''ID''' сети модуля:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Отправляем: ATID3331. Получаем: OK<CR>.
Отправляем: ATID3331. Получаем: OK<CR>.
</syntaxhighlight>
</syntaxhighlight>
Строка 69: Строка 69:
Теперь проверяем, вошло ли новое изменения в силу:
Теперь проверяем, вошло ли новое изменения в силу:


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Отправляем: ATID<enter>. Получаем: 3331<CR>.
Отправляем: ATID<enter>. Получаем: 3331<CR>.
</syntaxhighlight>
</syntaxhighlight>
Строка 75: Строка 75:
Вносимые вами изменения будут работать до тех пор, пока модуль не будет отключен от питания. Чтобы изменения сохранились на более долгий срок (или до следующего изменения), их нужно сохранить в долговременную память, и это делается при помощи команды '''ATWR'''.
Вносимые вами изменения будут работать до тех пор, пока модуль не будет отключен от питания. Чтобы изменения сохранились на более долгий срок (или до следующего изменения), их нужно сохранить в долговременную память, и это делается при помощи команды '''ATWR'''.


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Отправляем: ATWR<enter>. Получаем: OK<CR>.
Отправляем: ATWR<enter>. Получаем: OK<CR>.
</syntaxhighlight>
</syntaxhighlight>
Строка 81: Строка 81:
Чтобы сбросить модуль до фабричных настроек, используйте команду '''ATRE'''.
Чтобы сбросить модуль до фабричных настроек, используйте команду '''ATRE'''.


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Отправляем: ATRE<enter>. Получаем: OK<CR>.
Отправляем: ATRE<enter>. Получаем: OK<CR>.
</syntaxhighlight>
</syntaxhighlight>

Версия от 12:30, 20 мая 2023

{{#setlogo:ArduinoCommunityLogo.png}}

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Знакомство с беспроводным модулем 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.

Дополнительные материалы

Более подробно о беспроводном модуле можно почитать на странице с его аппаратным описанием.

См.также

Внешние ссылки