Связь Xbee с компьютера на Arduino - SoftwareSerial Pins

Я пытаюсь настроить беспроводную связь между компьютером (координатором) и Arduino Mega (маршрутизатором), используя два xbees.

Вот конфигурация координатора: ZIGBEE COORDINATOR AT Старший серийный номер: 13A200 и низкий серийный номер: 407B69E6

PAN ID: 1111
DH: 13A200
DL: 40813BFC (Rooter serial number low)
Baud Rate: 9600

Вот конфигурация маршрутизатора: ZIGBEE ROUTER AT Последовательный высокий: 13A200 и последовательный низкий: 40813BFC

PAN ID: 1111
DH: 13A200
DL: 407B69E6 (Coordinator serial number low)
Baud Rate: 9600

Я использую Xbee Explorer Regulated для подключения модуля Xbee к плате и плату USB Explorer для подключения xbee к компьютеру. Я могу общаться с Arduino на компьютер. Все данные, отправленные с последовательного монитора Arduino IDE, принимаются в окне терминала XCTU. Если я переключаю модули, я все еще могу общаться.

Код Arduino

#include <SoftwareSerial.h>

uint8_t pinRx = 4 , pinTx = 2; // the pin on Arduino
long BaudRate = 9600;
char GotChar, getData;
SoftwareSerial xbee(pinRx, pinTx);

void setup() 
{
  Serial.begin(9600);
  Serial.println( "Welcome to the XBee Communication Test" );
  Serial.print("BaudRate:");
  Serial.println(BaudRate);
  Serial.print(" Rx Pin#");
  Serial.println(pinRx,DEC);
  Serial.print(" Tx Pin#");
  Serial.println(pinTx,DEC);
  xbee.begin( BaudRate );
  xbee.println("Setup Completed!");
}

void loop() 
{
  if (Serial.available()) 
  {
    GotChar = Serial.read();
    // Send it to Computer
    xbee.print(GotChar);
    // print it to serial monitor
    Serial.print(GotChar);
  }
  while (xbee.available()>0)
  {  
    //Serial.println("Ohohoh");
    getData = xbee.read();
    Serial.print(getData);
    // send it back
    xbee.println(getData);
  }
}

Проблема

Я не могу отправить данные с компьютера на Arduino.

Когда я отправляю символ с компьютера с помощью терминала XCTU, на плате USB Explorer загораются светодиоды TX и RSSI. То же самое происходит и на Arduino, светодиоды DOUT и RSSI загораются, и ничего не принимается. Я попытался установить DH и DL в режим вещания, используя 0 и FFFF в качестве значений для координатора, но это не решило проблему.


person UserK    schedule 23.10.2014    source источник
comment
Поделитесь своим кодом Arduino. Если при замене модулей XBee связь остается односторонней, проблема заключается в хостах (аппаратных или программных). Тот факт, что DOUT на модуле Arduino XBee мигает, указывает на то, что XBee отправляет последовательные данные в Arduino, но они просто не попадают в вашу программу.   -  person tomlogic    schedule 24.10.2014
comment
Хорошо, я обновил вопрос.   -  person UserK    schedule 24.10.2014
comment
Ваш код говорит 9600 бод, но ваша конфигурация XBee говорит 57600 (но если вы отправляете OK, я предполагаю, что это просто ошибка копирования/вставки). Вы уверены, что pinRx правильно? Если вы подключите последовательный кабель к контактам 2 и 4 Arduino, сможете ли вы отправлять данные по нему? Продолжайте работать над изоляцией проблемы, пока не определите все известные исправные/работающие компоненты вашей установки. Обратите внимание, что установка DH и DL на 0 — это ярлык для указания координатора, а не для режима вещания.   -  person tomlogic    schedule 24.10.2014


Ответы (2)


Я подумал, что проблема связана с проводкой, поэтому я дважды проверил схему, которую использовал. Затем, как предложил TomLogic, я попытался установить другую последовательную связь, используя контакты 12 и 13. И, наконец, я заставил эти два модуля работать правильно!

Конфигурации для координатора и маршрутизатора правильные, как и код Arduino! Контакт 4 нельзя использовать с SoftwareSeria в качестве RX.

Не все контакты на Mega и Mega 2560 поддерживают прерывания изменения, поэтому для приема можно использовать только следующие: 10, 11, 12, 13, 50, 51, 52, 53, 62. , 63, 64, 65, 66, 67, 68, 69

person UserK    schedule 25.10.2014

Это просто исходит из вашей скорости передачи данных, ваш Xbee общается со скоростью 57600 бод, а ваш arduino - со скоростью 9600 бод. Дело в том, что Xbee читает медленнее, чем Arduino, и наоборот, поэтому возникает проблема.

Решение. Попробуйте установить как Xbee, так и Arduino на 9600 бод.

Надеюсь, я вам помог :)

person Thanatheos    schedule 24.10.2014
comment
Извините, это была ошибка копирования и вставки. Спасибо за ответ - person UserK; 24.10.2014