Связь поочередно через Arduino Xbeeshield - PullRequest
3 голосов
/ 13 сентября 2011

У меня есть адаптер ladyada xbee на стороне компьютера и arduino xbeeshield, с которым я пытаюсь установить связь по беспроводной сети. Оба xbees настроены правильно, так что я могу получать данные с xbeeshield на компьютер. Однако это не работает иначе, то есть xbeeshield не отображает байт, посылаемый с компьютера поочередно. Есть идеи, что я могу делать не так? (Примечание. Когда я подключаю плату Arduino к компьютеру с помощью USB-кабеля, программа echo работает просто отлично. Кажется, это проблема только в беспроводном режиме)

обработка кода

void setup() {
  Serial.begin(9600); 
}

void loop() {
  if (Serial.available()) {
    Serial.print((char) Serial.read());
    delay(10);
  }
}

Я просто посылаю нажатия клавиш с компьютера и жду ответа. Я не получаю.

Ответы [ 2 ]

0 голосов
/ 06 октября 2014

Попробуйте использовать библиотеку softwareSerial и подключите Tx и Rx к контактам 4 и 2. Запустите следующий эскиз и расскажите, что происходит. Измените значение Baudrate, чтобы оно соответствовало вашему собственному

#include <SoftwareSerial.h>

uint8_t pinRx = 2 , pinTx = 4; // the pin on Arduino

long BaudRate = 57600; // Please set your Baudrate. It should match the one in XC-TU
char GotChar, getData;
// Xbee SoftwareSerial initialization
SoftwareSerial xbee(pinRx, pinTx); // RX, TX

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);
  // set the data rate for the SoftwareSerial port
  xbee.begin( BaudRate );
  xbee.println("Setup Completed!");
}

void loop() 
{
  if (Serial.available()) 
  {
    GotChar = Serial.read();
    xbee.print(GotChar);
    Serial.print(GotChar);
  }
  while (xbee.available()>0)
  {  
    Serial.println("Ohohoh");
    getData = xbee.read();      
    Serial.print(" Received: );
    Serial.print(getData);
    Serial.println();

    if(getData == 'a')
    {    
      Serial.println(" sbam");
    }  
    else if(getData == 'b')
    {
      Serial.println(" sbo");
    }
  }  
}

Загрузите программу и откройте последовательный монитор. Появляется ли на компьютере сообщение «Установка завершена»? Что произойдет, если вы отправите «a» или «b» с ПК на Arduino?

0 голосов
/ 16 февраля 2012

Я использую код, на который я ответил на следующий вопрос в отношении отправки последовательных байтов с ПК на Xbee / Arduino. Он работал хорошо в течение нескольких месяцев. Убедитесь, что вы настроили как свои модули Xbee на ПК, так и на стороне Arduino. Убедитесь, что ваши идентификаторы PAN такие же.

Arduino принимает решение в соответствии с пакетом, полученным от последовательного порта

Какую версию модулей Xbee вы используете? Мой код работает с Series 1, но должен работать и с более новыми версиями.

...