Связь XBee S2C и XBee S1 Pro

У меня есть XBee S1 Pro, который настроен как координатор. и XBee S2C, который сконфигурирован как конечный узел. Оба загружены с прошивкой 802.15.4. Используя XCTU, я отправлял и получал данные в прозрачном режиме.

Теперь я настроил конечный узел в режим API-1 и подключил его к Arduino Nano. Я хочу прочитать полезную нагрузку. Вот мой код Arduino:

void setup() {
  Serial.begin(9600);
  Serial.println("Setup done...");
  while (!Serial) {;}
}

void loop() {
  if (Serial.available()) {
    for (int i = 0; i < 8;i++) {
      byte discard = Serial.read();
    }
    Serial.write(Serial.read());
    Serial.print(",");
  }

Когда я посылаю привет от координатора, я получаю:

Setup done...
FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,FFFFFFFF
,

Есть ли более простой способ сделать это, например, использовать библиотеку Arduino XBee? Может ли кто-нибудь любезно помочь мне?

1 ответ

Подтвердили ли вы, что два модуля XBee подключены к одной сети? Насколько я понимаю, S1 был просто 802.15.4, а S2 был ZigBee. Возможно, вам следует начать свой проект с идентичного сетевого оборудования, чтобы устранить это как источник проблем.

Я бы рекомендовал следовать руководству и использовать этот код, чтобы установить рабочую отправную точку для любого кода, который вы хотите написать.

Изменить: добавление кода

Прежде всего, вам нужно иметь два последовательных порта. Один для вашей консоли, где вы можете увидеть вывод Serial.print() и другой для связи с модулем XBee.

Во-вторых, начните с этого цикла:

void loop() {
    // echo bytes received on XBee module to serial console
    if (XBee.available()) {
        Serial.write(XBee.read());
        Serial.print(",");
    }
    // echo bytes received on serial console to XBee module
    if (Serial.available()) {
        XBee.write(Serial.read());
    }
}

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

Возможно, вы захотите сохранить свой модуль XBee на 9600 бод, но увеличьте интерфейс stdio (Serial) до 115200, поскольку вы печатаете более одного символа на байт, полученный от модуля XBee.

Другие вопросы по тегам