Как обеспечить связь между двумя XBee

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
OlegerCA
Сообщения: 38
Зарегистрирован: 28 фев 2012, 18:03

Как обеспечить связь между двумя XBee

Сообщение OlegerCA »

В наличии имеется 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.

Заранее благодарю!
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Как обеспечить связь между двумя XBee

Сообщение Mr.Kubikus »

Для начала нужно разобраться какого поколения у вас модуль XBee PRO. "Series 1" или "Series 2"? От этого зависит последовательность действий, которые следует выполнить, чтобы запустить связь.

Выяснить можно следующим образом. Если на модуле указано название фирмы производителя MaxStream - это XBee Series 1. Если же используется название Digi, то поколение указано сразу на самом модуле:
xbee-series.jpg
xbee-series.jpg (55.95 КБ) 32513 просмотров
С уважением, Григорий
GitHub FB ВК
OlegerCA
Сообщения: 38
Зарегистрирован: 28 фев 2012, 18:03

Re: Как обеспечить связь между двумя XBee

Сообщение OlegerCA »

3. "...XBee PRO 52B."
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Как обеспечить связь между двумя XBee

Сообщение Mr.Kubikus »

Ок.Там не цифра 2, а буква S. Правильно XBee PRO S2B. Это "Series 2".
С уважением, Григорий
GitHub FB ВК
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Как обеспечить связь между двумя XBee

Сообщение Mr.Kubikus »

Для XBee PRO Series 2 информация такая:

В сетях ZigBee существует три различных типа устройств:
  • Координатор ZigBee (ZC) — наиболее ответственное устройство.
  • Маршрутизатор ZigBee (ZR) — может выступать в качестве промежуточного маршрутизатора, передавая данные с других устройств.
  • Конечное устройство ZigBee (ZED) — главная задача принимать и отправлять сообщения.
В любой сети ZigBee должен быть один координатор ZC и сколько угодно маршрутизаторов ZR и оконечных устройств ZED.

В вашем случае в сети всего два девайса. Следовательно один должен быть координатором ZC, а другой конечным устройством ZED. Тип устройства можно изменить путем загрузки соответствующей прошивки в модуль XBee. Это делается с помощью программы X-CTU, которую можно скачать с сайта Digi.
С уважением, Григорий
GitHub FB ВК
OlegerCA
Сообщения: 38
Зарегистрирован: 28 фев 2012, 18:03

Re: Как обеспечить связь между двумя XBee

Сообщение OlegerCA »

ОТЛИЧНО! Установил X-CTU, что дальше? 8-)
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Как обеспечить связь между двумя XBee

Сообщение Mr.Kubikus »

Прошить модуль XBee нужной прошивкой можно с помощью Arduino Uno. Для этой операции придется временно извлечь микроконтроллер из панельки. Для извлечения МК удобно использовать тонкую отвертку. Для прошивки джамперы на плате XBee Shield должны быть установлены в положение USB.

Сначала обновим прошивку для координатора ZC.

1. Запускаем X-CTU
2. На вкладке «PC Settings» нужно выбрать COM-порт, к которому подключена плата Arduino.
x-ctu-1.png
x-ctu-1.png (22.95 КБ) 32505 просмотров
3. Для проверки нажмите на кнопку "Test / Query". Если все ок, то должно появиться следующее сообщение:
x-ctu-2.png
x-ctu-2.png (9.51 КБ) 32505 просмотров
4. Затем на вкладке "Modem configuration" надо выбрать в поле "Modem" тип модуля "XB24P-B" и в поле "Function Set" роль модуля "ZNET 2.5 COORDINATOR AT".
x-ctu-3.png
x-ctu-3.png (41.2 КБ) 32505 просмотров
5. Также обратите внимание на значение параметра ID. Для модулей одной сети значение этого параметра должно быть одинаковым.
6. Установите галочку "Always update firmware" и нажмите кнопку "Write". Запустится процесс прошивки модуля.

После завершения прошивки у нас готов модуль-координатор.

Теперь необходимо прошить второй модуль, который будет конечным устройством ZED. Для этого надо повторить все шаги за исключением пункта 4. Для второго модуля надо выберать роль «ZNET 2.5 ROUTER/END DEVICE AT».

Пару слов об адресации

По умолчанию, модули прошитые прошивками версии ZNet 2.5 вещают в broadcast режиме. То есть сообщения получают все устройства в сети.
С уважением, Григорий
GitHub FB ВК
OlegerCA
Сообщения: 38
Зарегистрирован: 28 фев 2012, 18:03

Re: Как обеспечить связь между двумя XBee

Сообщение OlegerCA »

Хорошо, какой мне выбирать вариант (см. рисунок)?
Вложения
XBP24BSE
XBP24BSE
XBP24BSE.jpg (18.99 КБ) 32505 просмотров
OlegerCA
Сообщения: 38
Зарегистрирован: 28 фев 2012, 18:03

Re: Как обеспечить связь между двумя XBee

Сообщение OlegerCA »

..в продолжение
Вложения
No AT.jpg
No AT.jpg (113.67 КБ) 32505 просмотров
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Как обеспечить связь между двумя XBee

Сообщение Mr.Kubikus »

Попробуйте "ZIGBEE SE COORD API" для одного модуля и "ZIGBEE SE END DEVICE API" для другого.
С уважением, Григорий
GitHub FB ВК
Ответить