Исходный адрес XBee в Arduino - PullRequest
       12

Исходный адрес XBee в Arduino

2 голосов
/ 26 сентября 2011

Я пытаюсь найти способ получения адреса отправителя радиостанции XBee в Arduino.

По сути, я хочу, чтобы мой чип XBee отправлял строку, которая также содержит свое происхождениеадрес (или идентификатор), чтобы я мог определить, откуда приходит сообщение, без необходимости запускать различный код на каждом отдельном Arduino.

Что мне делать?

РЕДАКТИРОВАТЬ

Я использую библиотеку xbee-arduino (http://code.google.com/p/xbee-arduino/).

xbee подключен напрямую к Arduino через Sparkfun Xbee Shield (http://www.sparkfun.com/products/9976)

Он обменивается данными с Connectport X2 под управлением XIG (http://code.google.com/p/xig/) поэтому я не могу запустить там любой код arduino, который бы смотрел адрес отправителя - его нужно найти локально на плате.

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Я считаю, что вам нужен Серийный номер XBee, который является уникальным в глобальном масштабе 64-битным адресом, который идентифицирует это устройство.

Доступны две команды AT: SH и SL , которые дают старшие и младшие 32 бита серийного номера. В дистрибутиве xbee-arduino есть пример программы, которая печатает их значения: AtCommand.pde

Затем эта программа выполняет команду AI , которая возвращает байт, указывающий состояние последнего запроса на присоединение к сети. Это вернет 0x00 в случае успеха.

Устройство ZigBee также имеет 16-битный адрес (используйте команду MY ), который гарантированно будет уникальным только в своей сети. С модемами XBee в стабильной сети это не изменится, если не произойдет конфликт адресов, но вам, вероятно, будет лучше использовать полное 64-битное значение, определенное с помощью SH и SL .

Все эти команды предполагают, что XBee, который вас интересует, подключен напрямую к Arduino. Все они могут быть выполнены удаленно, используя RemoteATCommand, но для этого требуется, чтобы вы передали последовательный номер удаленного модема, поэтому, если вы можете успешно выполнить вызов, то у вас уже был адрес.

Если интересующий вас XBee не подключен к Arduino, то вам нужно будет использовать команду ND (Node Discover) для сканирования сети. Я недостаточно знаком с API xbee-arduino, чтобы знать, делают ли они это доступным, но получение информации о каждом узле по мере его обнаружения требует немного больше работы.

0 голосов
/ 16 ноября 2012

Если вы используете режим API на этих чипах XBee (конечно, если вы используете библиотеку XBee-api), вам не нужно указывать адрес отправителя в сообщении. Эта информация автоматически указывается в кадре. Посмотрите на методы getRemoteAddress16 () и getRemoteAddress64 () в классе ZNetRxBaseResponse .

Итак, что вам нужно сделать, это отправить первое сообщение "привет", то есть Координатору (который вы можете легко адресовать как 0x0000) с Узла, которому вы хотите знать адрес. Используя вышеупомянутые методы, вы можете получить эту информацию.

...