Как обеспечить связь между двумя XBee
Как обеспечить связь между двумя XBee
В наличии имеется Arduino UNO (2 шт.), Arduino Motor Shield (1 шт.), XBee Shield (2 шт.) и XBee PRO (2 шт.).
Задача:
-при помощи вышеуказанных плат организовать беспроводную связь между роботом и пультом для этого робота.
(Для начала хотябы заставить мигать светодиод контакта №13 на плате приёмника через XBee.)
В предъидущей теме форума был решён вопрос как объединить (обеспечить питание) всех вышеуказанных блоков.
Теперь вопрос в том как обеспечить связь между двумя XBee.
Вот что я нашёл в интернете по теме XBee:
-для передатчика:
void setup()
{
Serial.begin(9600); // установка порта на скорость 9600 бит/сек
}
void loop()
{
delay(1000); // ждём 1 секунду
Serial.print('H'); // передаём симовол 'H'
delay(1000); // ждём 1 секунду
Serial.print('L'); // передаём симовол 'L'
}
-для приёмника:
int outputPin = 13; // здесь храним номер контакта
int val; // здесь будет храниться принятый символ
void setup()
{
Serial.begin(9600); // установка порта на скорость 9600 бит/сек
pinMode(outputPin, OUTPUT); // устанавливаем 13 контакт в режим вывода
}
void loop()
{
if (Serial.available()) { // если есть принятый символ,
val = Serial.read(); // то читаем его и сохраняем в val
if (val == 'H') { // если принят симовол 'H',...
digitalWrite(outputPin, HIGH); // то включаем светодиод
}
if (val == 'L') { // если принят симовол 'L',...
digitalWrite(outputPin, LOW); // то выключаем светодиод
}
}
}
«...работа через XBee - это просто работа с последовательным портом» © Сергей Деменков
Проблемы которые возникли:
1. Не смотря на то, что обе программы залились без ошибок ожидаемого так и не произошло. Что не так в программах? Что я увижу, когда 2 XBee соединятся между собой?
2. Нужно ли программировать XBee PRO платы приобретённые вместе для работы в режиме peer-to-peer? (Ходят слухи, что платы с завода уже настроены друг на друга.)
3. В интернете есть описание как программировать платы XBee через специальный программатор, также сказано, что можно обойтись платой Arduino UNO (предварительно вытащив из него Atmel). Расскажите подробно как это делается, чем программировать XBee PRO 52B.
Заранее благодарю!
Задача:
-при помощи вышеуказанных плат организовать беспроводную связь между роботом и пультом для этого робота.
(Для начала хотябы заставить мигать светодиод контакта №13 на плате приёмника через XBee.)
В предъидущей теме форума был решён вопрос как объединить (обеспечить питание) всех вышеуказанных блоков.
Теперь вопрос в том как обеспечить связь между двумя XBee.
Вот что я нашёл в интернете по теме XBee:
-для передатчика:
void setup()
{
Serial.begin(9600); // установка порта на скорость 9600 бит/сек
}
void loop()
{
delay(1000); // ждём 1 секунду
Serial.print('H'); // передаём симовол 'H'
delay(1000); // ждём 1 секунду
Serial.print('L'); // передаём симовол 'L'
}
-для приёмника:
int outputPin = 13; // здесь храним номер контакта
int val; // здесь будет храниться принятый символ
void setup()
{
Serial.begin(9600); // установка порта на скорость 9600 бит/сек
pinMode(outputPin, OUTPUT); // устанавливаем 13 контакт в режим вывода
}
void loop()
{
if (Serial.available()) { // если есть принятый символ,
val = Serial.read(); // то читаем его и сохраняем в val
if (val == 'H') { // если принят симовол 'H',...
digitalWrite(outputPin, HIGH); // то включаем светодиод
}
if (val == 'L') { // если принят симовол 'L',...
digitalWrite(outputPin, LOW); // то выключаем светодиод
}
}
}
«...работа через XBee - это просто работа с последовательным портом» © Сергей Деменков
Проблемы которые возникли:
1. Не смотря на то, что обе программы залились без ошибок ожидаемого так и не произошло. Что не так в программах? Что я увижу, когда 2 XBee соединятся между собой?
2. Нужно ли программировать XBee PRO платы приобретённые вместе для работы в режиме peer-to-peer? (Ходят слухи, что платы с завода уже настроены друг на друга.)
3. В интернете есть описание как программировать платы XBee через специальный программатор, также сказано, что можно обойтись платой Arduino UNO (предварительно вытащив из него Atmel). Расскажите подробно как это делается, чем программировать XBee PRO 52B.
Заранее благодарю!
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Как обеспечить связь между двумя XBee
Для начала нужно разобраться какого поколения у вас модуль XBee PRO. "Series 1" или "Series 2"? От этого зависит последовательность действий, которые следует выполнить, чтобы запустить связь.
Выяснить можно следующим образом. Если на модуле указано название фирмы производителя MaxStream - это XBee Series 1. Если же используется название Digi, то поколение указано сразу на самом модуле:
Выяснить можно следующим образом. Если на модуле указано название фирмы производителя MaxStream - это XBee Series 1. Если же используется название Digi, то поколение указано сразу на самом модуле:
Re: Как обеспечить связь между двумя XBee
3. "...XBee PRO 52B."
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Как обеспечить связь между двумя XBee
Ок.Там не цифра 2, а буква S. Правильно XBee PRO S2B. Это "Series 2".
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Как обеспечить связь между двумя XBee
Для XBee PRO Series 2 информация такая:
В сетях ZigBee существует три различных типа устройств:
В вашем случае в сети всего два девайса. Следовательно один должен быть координатором ZC, а другой конечным устройством ZED. Тип устройства можно изменить путем загрузки соответствующей прошивки в модуль XBee. Это делается с помощью программы X-CTU, которую можно скачать с сайта Digi.
В сетях ZigBee существует три различных типа устройств:
- Координатор ZigBee (ZC) — наиболее ответственное устройство.
- Маршрутизатор ZigBee (ZR) — может выступать в качестве промежуточного маршрутизатора, передавая данные с других устройств.
- Конечное устройство ZigBee (ZED) — главная задача принимать и отправлять сообщения.
В вашем случае в сети всего два девайса. Следовательно один должен быть координатором ZC, а другой конечным устройством ZED. Тип устройства можно изменить путем загрузки соответствующей прошивки в модуль XBee. Это делается с помощью программы X-CTU, которую можно скачать с сайта Digi.
Re: Как обеспечить связь между двумя XBee
ОТЛИЧНО! Установил X-CTU, что дальше?
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Как обеспечить связь между двумя XBee
Прошить модуль XBee нужной прошивкой можно с помощью Arduino Uno. Для этой операции придется временно извлечь микроконтроллер из панельки. Для извлечения МК удобно использовать тонкую отвертку. Для прошивки джамперы на плате XBee Shield должны быть установлены в положение USB.
Сначала обновим прошивку для координатора ZC.
1. Запускаем X-CTU
2. На вкладке «PC Settings» нужно выбрать COM-порт, к которому подключена плата Arduino.
3. Для проверки нажмите на кнопку "Test / Query". Если все ок, то должно появиться следующее сообщение:
4. Затем на вкладке "Modem configuration" надо выбрать в поле "Modem" тип модуля "XB24P-B" и в поле "Function Set" роль модуля "ZNET 2.5 COORDINATOR AT".
5. Также обратите внимание на значение параметра ID. Для модулей одной сети значение этого параметра должно быть одинаковым.
6. Установите галочку "Always update firmware" и нажмите кнопку "Write". Запустится процесс прошивки модуля.
После завершения прошивки у нас готов модуль-координатор.
Теперь необходимо прошить второй модуль, который будет конечным устройством ZED. Для этого надо повторить все шаги за исключением пункта 4. Для второго модуля надо выберать роль «ZNET 2.5 ROUTER/END DEVICE AT».
Пару слов об адресации
По умолчанию, модули прошитые прошивками версии ZNet 2.5 вещают в broadcast режиме. То есть сообщения получают все устройства в сети.
Сначала обновим прошивку для координатора ZC.
1. Запускаем X-CTU
2. На вкладке «PC Settings» нужно выбрать COM-порт, к которому подключена плата Arduino.
3. Для проверки нажмите на кнопку "Test / Query". Если все ок, то должно появиться следующее сообщение:
4. Затем на вкладке "Modem configuration" надо выбрать в поле "Modem" тип модуля "XB24P-B" и в поле "Function Set" роль модуля "ZNET 2.5 COORDINATOR AT".
5. Также обратите внимание на значение параметра ID. Для модулей одной сети значение этого параметра должно быть одинаковым.
6. Установите галочку "Always update firmware" и нажмите кнопку "Write". Запустится процесс прошивки модуля.
После завершения прошивки у нас готов модуль-координатор.
Теперь необходимо прошить второй модуль, который будет конечным устройством ZED. Для этого надо повторить все шаги за исключением пункта 4. Для второго модуля надо выберать роль «ZNET 2.5 ROUTER/END DEVICE AT».
Пару слов об адресации
По умолчанию, модули прошитые прошивками версии ZNet 2.5 вещают в broadcast режиме. То есть сообщения получают все устройства в сети.
Re: Как обеспечить связь между двумя XBee
Хорошо, какой мне выбирать вариант (см. рисунок)?
- Вложения
-
- XBP24BSE
- XBP24BSE.jpg (18.99 КБ) 32478 просмотров
Re: Как обеспечить связь между двумя XBee
..в продолжение
- Вложения
-
- No AT.jpg (113.67 КБ) 32478 просмотров
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Как обеспечить связь между двумя XBee
Попробуйте "ZIGBEE SE COORD API" для одного модуля и "ZIGBEE SE END DEVICE API" для другого.