Xbee, Arduino и процессинговый запрос проектирования

У меня есть скетч обработки, который передает основные последовательные команды на xbee. Затем у меня есть два (скоро будет 3, может быть, 4) arduino со своими собственными xbee, которые получают данные и что-то делают.

Дело в том, что у каждого Arduino есть своя цель и, следовательно, свой собственный пакет данных.

Итак, чтобы реализовать это. Есть ли способ отправить сообщение на конкретный xbee? т.е. Могу ли я назначить xbee какой-либо индекс или канал, а затем заставить широковещательный xbee отправлять данные на любой индекс или канал, который ему нужен?

Или это нужно будет реализовать в программном обеспечении Arduino? т. е. Обработка префикса пакета данных с индексом/идентификатором, а Arduino игнорирует входящие сообщения с этим префиксом?

Или есть совсем другой вариант :P

Заранее спасибо за совет.


person d2kagw    schedule 25.01.2014    source источник


Ответы (2)


Хотя это и не конкретный ответ на ваш вопрос, при таком типе связи будет полезна некоторая проверка пакетов на ошибки. Отправьте данные, используя алгоритм проверки ошибок crc. Структура пакета может выглядеть примерно так:

0x7F 0x02 (Address Bytes) (Command Bytes) (CRC bytes) 0x7F 0x03

Где 0x7F — это символ DLE, используемый для указания того, что последует либо начальный байт, либо конечный байт, либо байт данных со значением DLE. Это означает, что любому символу DLE, являющемуся частью адреса или команды, должен предшествовать «заполненный» символ DLE. CRC вычисляется из адресных и командных байтов и используется для проверки целостности полученных данных. Байты проверки CRC включены в каждый пакет.

Этот тип связи предотвратит использование пакетов, идущих к неправильному источнику, а также использование ошибочных пакетов.

Чтобы узнать больше о последовательном кадрировании, можно начать здесь: http://eli.thegreenplace.net/2009/08/12/framing-in-serial-коммуникаций/.

person Wilsonator    schedule 27.01.2014

Насколько я понял, вы хотите иметь возможность определить разницу с тем, на какой Xbee вы отправляете данные. Вы можете сделать это, используя IP-адреса. Если у вас есть, например, два Xbee с IP-адресами:

  • Xbee1 - 192.168.80.50
  • Xbee2 - 192.168.80.51
  • Xbee3 - 192.168.80.52

Вы можете отправлять информацию между ними, просто подключив Xbee, который начнет связь, с Xbee, который ее получит. Если вы хотите иметь какую-либо связь по беспроводной сети (или Ethernet), вы должны иметь IP-адрес, назначенный каждому Xbee.

EDIT:
Если у вас есть сервер на компьютере, который вы создали сами, например, на Java. Вы можете подключить к нему Xbees и подключить их к компьютерному серверу. Затем вы можете настроить сервер для получения и отправки данных различным клиентам Xbee.

Я сделал что-то похожее на это: Поддержание связи между Arduino и Java-программа , но я не использовал Xbee, я использовал официальный WiFi-шилд.

Надеюсь, это помогло! -кад

person Kad    schedule 26.01.2014
comment
это только для модулей Xbee Wifi? или все устройства Xbee? - person d2kagw; 27.01.2014
comment
Все, что обменивается данными по сети, для работы должно иметь IP-адрес. Так что это для всех модулей Wi-Fi, а также модулей Ethernet. - person Kad; 27.01.2014