Memorial day is 05/25/2015 – Orders will ship out on May 26th. There will not be any deliveries or shipping on Monday. Any order placed after 11am ET on Friday May 22nd will not start to ship out until Tuesday May 26th.

Can't get my XBees communicating again
Moderators: adafruit_support_bill, adafruit

Can't get my XBees communicating again

by kcranley on Mon Feb 11, 2013 7:40 am

Hi
I have one XBee (S1) connected to an Arduino R3, powered by my PC, and running a sketch which receives signals from another XBee (S1), connected to a Boarduino, powered by a laptop, and connected to a PIR sensor, and running a sketch which sends signals to the first XBee.

I had this working on my desktop, intending to put the Boarduino/PIR sensor in a remote place eventually.

However, when the laptop decides to go to sleep, the Boarduino power goes off, and I can usually get the whole thing going again after a lot of wire swapping, resetting etc, but just at the moment, the XBees are not communicating.

Can you suggest a simple way of restoring communication if the Boarduino/PIR combination should temporarily lose power?
KC
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am

Re: Can't get my XBees communicating again

by adafruit_support_bill on Mon Feb 11, 2013 8:30 am

I can usually get the whole thing going again after a lot of wire swapping, resetting etc

What kind of wire-swapping do you have to do? It should just come up running.

adafruit_support_bill
 
Posts: 37568
Joined: Sat Feb 07, 2009 10:11 am

Re: Can't get my XBees communicating again

by kcranley on Mon Feb 11, 2013 8:52 am

When the communication doesn't resume, I try a lot of things. I replace the Boarduino sketch with the Bare Minimum sketch - to do this, RX/TX needs to be reversed. This seems to be necessary to run X-CTU, to determine if the XBees actually work, and having done that, my sketches need to be re-uploaded, so to return to the original wiring, the RX/TXs need to be reversed again.

Apologies if this is a bit jumbled
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am

Re: Can't get my XBees communicating again

by adafruit_support_bill on Mon Feb 11, 2013 9:25 am

So you change the wiring & sketch to verify that the XBee is still working, then put it back to the way it was? Normally, the Boarduino should just come up running on power-up. It is possible that there might be some issue with the power-up timing of the XBee vs the Boarduino, but I would expect that a simple reset would get you running again.

Do you have a simple wall-wart or battery supply for the Boarduino/XBee? There might be something funky in the way your laptop's USB port powers up.

adafruit_support_bill
 
Posts: 37568
Joined: Sat Feb 07, 2009 10:11 am

Re: Can't get my XBees communicating again

by kcranley on Mon Feb 11, 2013 10:23 am

Yes - that's right - I put it back the way it was when it worked. I now have it on an external supply, and that makes no difference.
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am

Re: Can't get my XBees communicating again

by adafruit_support_bill on Mon Feb 11, 2013 12:52 pm

Are you sure the problem is at the Boarduino end? Maybe it is the receiving side that needs to be reset to re-sync.

adafruit_support_bill
 
Posts: 37568
Joined: Sat Feb 07, 2009 10:11 am

Re: Can't get my XBees communicating again

by kcranley on Mon Feb 11, 2013 1:05 pm

How do you do that? The receiving end is another XBee (also on Adafruit adapter) with an Arduino Uno R3, powered by my desktop Windows PC.
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am

Re: Can't get my XBees communicating again

by adafruit_support_bill on Mon Feb 11, 2013 1:38 pm

Press the reset button on the Uno.

adafruit_support_bill
 
Posts: 37568
Joined: Sat Feb 07, 2009 10:11 am

Re: Can't get my XBees communicating again

by kcranley on Mon Feb 11, 2013 1:48 pm

OK - I've been doing that too - still nothing
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am

Re: Can't get my XBees communicating again

by adafruit_support_bill on Mon Feb 11, 2013 1:53 pm

Do the XBee leds indicate any transmission activity when the Boarduino powers up?

adafruit_support_bill
 
Posts: 37568
Joined: Sat Feb 07, 2009 10:11 am

Re: Can't get my XBees communicating again

by kcranley on Mon Feb 11, 2013 2:13 pm

No - the red lights don't come on - except every few minutes the receive end's red light comes on but only for a few seconds, and not in response to a reset. The green lights on both XBees are blinking.
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am

Re: Can't get my XBees communicating again

by adafruit_support_bill on Mon Feb 11, 2013 3:29 pm

Post the code you are using.

adafruit_support_bill
 
Posts: 37568
Joined: Sat Feb 07, 2009 10:11 am

Re: Can't get my XBees communicating again

by kcranley on Tue Feb 12, 2013 5:16 am

Here is the sketch on the Boarduino for detecting PIR signals and sending a stream of H's or L's depending on whether the PIR signal is high or low: (There is some redundant code for a Real Time Clock which hasn't been included yet).
Code: Select all | TOGGLE FULL SIZE
//
// PIR motion detector with LED indicator
// Status info by XBee to PC
// 11 Jan 2013
//

#include <Wire.h>
#include <RTClib.h>
#include <SoftwareSerial.h>

RTC_DS1307 RTC;

SoftwareSerial XBSerial = SoftwareSerial(2, 3);

int PIRpin = 4;      // digital pin 4 for PIR
int LEDpin = 13;   // digital pin 13 for LED
int PIRval;             // PIR HIGH or LOW value

void setup() {
  pinMode(LEDpin, OUTPUT);    // set the LED pin as ouput
  pinMode(PIRpin, INPUT);     // set the PIR pin as an input

  // Setup SoftwareSerial port
  XBSerial.begin(9600);
  Serial.begin(9600);
  XBSerial.println("Setup finished.");
  if (! RTC.isrunning())
  {
    Serial.println("RTC is NOT running!");
  }
}

void loop() {
  PIRval = digitalRead(PIRpin);    // read PIR
  if (PIRval == HIGH) {
    Serial.print("H");
    digitalWrite(LEDpin, HIGH);    // LED ON
  }
  else {
    Serial.print("L");
    digitalWrite(LEDpin, LOW);     // LED OFF
  }
  delay(100);
}

and here is the sketch on the Arduino for receiving XBee signals and outputting h's or l's depending on what it has received from the remote PIR:

Code: Select all | TOGGLE FULL SIZE
//XBeeReceive
//Sketch for receiving XBee transmissions from RemotePIR on remote
//Boarduino connected to a PIR and XBee
//KC  11-Jan-13

int LedPin = 13;
int speakerPin = 9;

void setup() {
  //
  Serial.begin(9600);
  pinMode(LedPin, OUTPUT);
  pinMode(speakerPin, OUTPUT);
}

void playTone(int tone, int duration){
  for (long i = 0; i < duration*1000L; i += tone*2){
    digitalWrite(speakerPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(speakerPin, LOW);
    delayMicroseconds(tone); 
  }
}

void loop() {
  //   
  if (Serial.available())
  {
  int data = Serial.read();
    if (data == 'H')
    {
      //Serial.println("Somebody's in the garden");
      digitalWrite(LedPin, HIGH);
      Serial.write("h");
      playTone(956, 50);
      playTone(500, 50);
      playTone(250, 50);
      playTone(125, 50);
    }
    else if (data == 'L')
    {
      digitalWrite(LedPin, LOW);
      Serial.write("l");
    }
    else
    {
      digitalWrite(LedPin, LOW);     
    }
  //delay(10);
  } 
}
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am

Re: Can't get my XBees communicating again

by adafruit_support_bill on Tue Feb 12, 2013 8:24 am

On the Boarduino side, you have XBeeSerial and Serial. After setup, you only write the Serial.

XBSerial.println("Setup finished.");

Serial.println("RTC is NOT running!");

Serial.print("H");

Serial.print("L");

adafruit_support_bill
 
Posts: 37568
Joined: Sat Feb 07, 2009 10:11 am

Re: Can't get my XBees communicating again

by kcranley on Wed Feb 13, 2013 5:52 am

Sorry - my code is messy because I have been trying different things, and I'm still learning the basics. I am confused as to whether I should be using Serial or XBSerial. What I want to do is to send the characters "L" or "H" from the PIR/Boarduino/XBee (SENDER) powered by the Laptop to the Arduino/XBee/PC (RECEIVER) so that I can see either "l" or "h" on the PC serial monitor, and a LED comes on when the PIR goes high. I want to see either "L" or "H" on the Laptop serial monitor also, so that I can see that everything is doing what it's supposed to be doing.

Currently, using only XBSerial on the SENDER and only Serial on the RECEIVER, it is doing what I want. However, when I move the SENDER away from the Laptop, and power it with an external source, it no longer transmits.

Can you suggest what I might do to have the SENDER placed remotely, on external power, so that I can see on the PC when the PIR has been activated?
kcranley
 
Posts: 19
Joined: Sat Jul 21, 2012 4:35 am