xbee mesh network, 1 coordinator xbee w/ arduino and 2 router xbees

Good day! :slight_smile:

I have been reading "Building Wireless Sensor Networks" by Robert Faludi and I'm stuck on Chapter 5 : Simple Sensor Network. On page 142 of the book the author gave a step by step procedure on how to configure coordinator and router xbees, schematic diagram of the project and a Processing sketch. The project is about monitoring room temperatures. It uses 3 xbees--1 coordinator and 2 routers. The coordinator gets the analog values read by the router xbees and display them in a thermometer like GUI. The problem is that I can't run the Processing sketch. It gives "noclassdeffounderror gnu/io/serialporteventlistener " error. Since I don't know much about Processing I decided to give up on that and finish it off using Arduino.

This are the radio configuration:

Coordinator API
PAN ID 511
API Enable 2

Router AT
PAN ID 511
Channel Verification 1
AD0/DIO0 2
IO Sampling Rate 3E8

At first, I used 3 xbees (Xbee Pro S2B - Zigbee) without controllers. Using the XCTU Software I know the coordinator detects the routers because when I switch from Configuration Working Mode to Network Working Mode and play the Radio Module Network, I can see the 3 xbees connected. But when I exit the XCTU and open the COM PORT of the Coordinator in Arduino, all I get are ASCII characters. I can't display them because I can't copy :roll_eyes: but it starts with "~" which is an indication of a start byte. That's when I decided to hook it up with an arduino Uno (duh? :.).

I then uploaded this code:

float temp;

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

void loop(){
  if (Serial.available() >= 21){
    if(Serial.read() == 0x7E){     //start byte 
      for(int i=1; i<19; i++){
        byte discardByte=Serial.read();
      }
      int analogMSB = Serial.read();
      int analogLSB = Serial.read();   
      int analogReading = analogLSB + (analogMSB * 256);
      
      temp = analogReading / 1023.0 * 1.23;
      temp = temp - 0.5;
      temp = temp / 0.01;
      temp = temp * 9/5 + 32;
      
      Serial.print(temp);
      Serial.println(" C");      
    }
  }
}

But I can't determine which xbee is sending the temperature so I added an if statement determining the last two bytes of the xbees address (they have the same first six byte).

float temp;
int router;

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

void loop(){
  if (Serial.available() >= 21){
    if(Serial.read() == 0x7E){      
      for(int i=1; i<19; i++){
        if(i == 11 && Serial.read() == 0x06){
          router = 1;
          int analogMSB = Serial.read();
          int analogLSB = Serial.read();   
          int analogReading = analogLSB + (analogMSB * 256);
          
          temp = analogReading / 1023.0 * 1.23;
          temp = temp - 0.5;
          temp = temp / 0.01;
          temp = temp * 9/5 + 32;
          
          Serial.print("1: ");
          Serial.print(temp);
          Serial.println(" C");
        }
        if(i == 11 && Serial.read() == 0x14){
          router = 2;
          int analogMSB = Serial.read();
          int analogLSB = Serial.read();   
          int analogReading = analogLSB + (analogMSB * 256);
          
          temp = analogReading / 1023.0 * 1.23;
          temp = temp - 0.5;
          temp = temp / 0.01;
          temp = temp * 9/5 + 32;
          
          Serial.print("2: ");
          Serial.print(temp);
          Serial.println(" C");
        }
        byte discardByte=Serial.read();
      }            
    }
  }
}

Sorry for the "unacceptable" lemon grabs voice code, I'm not good with bytes :blush:

I can only display Router 2's temperature. I don't know what's happening with the data from Router 1.
So I checked it using this:

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

void loop(){
  if (Serial.available() >= 21){
    if(Serial.read() == 0x7E){      
      for(int i=1; i<19; i++){
        Serial.print(i);
        Serial.print(": ");
        
        byte discardByte=Serial.read();
        
        Serial.println(discardByte);
      }            
    }
  }
}

This is the result:

1: 0
2: 18
3: 146
4: 0
5: 125
6: 51
7: 162
8: 0
9: 64
10: 183
11: 112
12: 20
13: 144
14: 235
15: 1
16: 1
17: 0
18: 0

1: 0
2: 18
3: 146
4: 0
5: 125
6: 51
7: 162
8: 0
9: 64
10: 183
11: 112
12: 6
13: 90
14: 8
15: 1
16: 1
17: 0
18: 0

It has the same values from 1-11 and 15-18 but different from 12-14. I guess this confirms the three xbees are connected since i=12 & i=13 are supposed to be the 16-bit source network address(?)

The question now is, "How can I make sense of the 1-18 values of 'i' so I can determine which xbee is sending this particular data?"

Sorry, I think this is more of a "Programming Question". Can someone help me transfer it?

Are you using Serial to talk to the XBee or to talk to the PC? Both is the wrong answer.

The problem is that I can't run the Processing sketch. It gives "noclassdeffounderror gnu/io/serialporteventlistener " error. Since I don't know much about Processing I decided to give up on that and finish it off using Arduino.

You should post the Processing sketch. Apparently, you fat-fingered something when typing it in.

I then uploaded this code

To which Arduino?

        if(i == 11 && Serial.read() == 0x06){

What if it doesn't? You just threw that value away.

        if(i == 11 && Serial.read() == 0x14){

Oh, I see. you hope that the next one will be 0x14. NO!. Wrong! Wrong! Wrong!

The question now is, "How can I make sense of the 1-18 values of 'i' so I can determine which xbee is sending this particular data?"

The real question is why you didn't print the values in HEX, so that you could confirm that the positions you think are the sender address really ARE the sender address.

You should post the Processing sketch. Apparently, you fat-fingered something when typing it in.

Here's the code I downloaded from faludi.com - Simple_Sensor_Network

/*
 * Draws a set of thermometers for incoming XBee Sensor data
 * by Rob Faludi http://faludi.com
 */

// used for communication via xbee api
import processing.serial.*; 

// xbee api libraries available at http://code.google.com/p/xbee-api/
// Download the zip file, extract it, and copy the xbee-api jar file 
// and the log4j.jar file (located in the lib folder) inside a "code" 
// folder under this Processing sketch’s folder (save this sketch, then 
// click the Sketch menu and choose Show Sketch Folder).
import com.rapplogic.xbee.api.ApiId;
import com.rapplogic.xbee.api.PacketListener;
import com.rapplogic.xbee.api.XBee;
import com.rapplogic.xbee.api.XBeeResponse;
import com.rapplogic.xbee.api.zigbee.ZNetRxIoSampleResponse;

String version = "1.11";

// *** REPLACE WITH THE SERIAL PORT (COM PORT) FOR YOUR LOCAL XBEE ***
String mySerialPort = "COM6";

// create and initialize a new xbee object
XBee xbee = new XBee();

int error=0;

// make an array list of thermometer objects for display
ArrayList thermometers = new ArrayList();
// create a font for display
PFont font;

void setup() {
  size(800, 600); // screen size
  smooth(); // anti-aliasing for graphic display

  // You’ll need to generate a font before you can run this sketch.
  // Click the Tools menu and choose Create Font. Click Sans Serif,
  // choose a size of 10, and click OK.
  font =  loadFont("SansSerif-10.vlw");
  textFont(font); // use the font for text

    // The log4j.properties file is required by the xbee api library, and 
  // needs to be in your data folder. You can find this file in the xbee
  // api library you downloaded earlier
  PropertyConfigurator.configure(dataPath("log4j.properties")); 
  // Print a list in case the selected one doesn't work out
  println("Available serial ports:");
  println(Serial.list());
  try {
    // opens your serial port defined above, at 9600 baud
    xbee.open(mySerialPort, 9600);
  }
  catch (XBeeException e) {
    println("** Error opening XBee port: " + e + " **");
    println("Is your XBee plugged in to your computer?");
    println("Did you set your COM port in the code near line 20?");
    error=1;
  }
}

** I can't post the whole code because it's too big but you can download it using the link above--Simple_Sensor_Network.zip(Mar-10-14)

It gives an error on line 54 "xbee.open(mySerialPort, 9600);". Since I'm using windows, I changed "/dev/tty.usbserial-A1000iMG" to "COM6" in line 23. It still post noclassdeffounderror even though it says "Available Serial Ports: COM6 COM8".

To which Arduino?

I only have 1 arduino :cold_sweat:

The real question is why you didn't print the values in HEX, so that you could confirm that the positions you think are the sender address really ARE the sender address.

I printed the values in HEX and confirmed that i=9 to i=12 are the router's SL. How can I determine who's printing what if I can't use "if(i==12 && Serial.read() ==0x14"?

I can now differentiate data from router 1 and 2 but I don't know what to do if I need to read more than 1 pin from xbee.

This is my code:

float temp;
int disp;
int router;

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

void loop(){
  if (Serial.available() >= 21){
    if(Serial.read() == 0x7E){      
      for(int i=1; i<19; i++){
        byte discardByte=Serial.read(); 
        
        if(i == 12){
         if(discardByte == 0x06){
          router=1;
          disp=1;
//          Serial.println("1");        
         }
         else if(discardByte == 0x14){
           router=2;
           disp=1;
//          Serial.println("2");
         }          
        }               
      }
      
      if(disp == 1){
        int analogMSB = Serial.read();
//        Serial.println(analogMSB);
        int analogLSB = Serial.read();
//        Serial.println(analogMSB);   
        int analogReading = analogLSB + (analogMSB * 256);
//        Serial.println(analogReading);
        
        temp = analogReading / 1023.0 * 1.23;
        temp = temp - 0.5;
        temp = temp / 0.01;
        temp = temp * 9/5 + 32;
        
        Serial.print(router);
        Serial.print(": ");
        Serial.print(temp);
        Serial.println(" C");
      }
      
      disp=0;
      router=0;      
    }
  }
}

What do you think Sir PaulS?

Now that I can distinguish data coming from 2 routers, I would like to move on to reading 1 analog and 1 digital data from the routers.

Can anyone explain this?

        int analogMSB = Serial.read();
        int analogLSB = Serial.read();
        int analogReading = analogLSB + (analogMSB * 256);
        
        temp = analogReading / 1023.0 * 1.23;

Why is Serial.read() stored to two different variables(analogMSB & LSB)?
Is the temp equivalent to 0-1023 values given by an analog pin of arduino?
How will the digital data be computed?

Because if I refer to the this CHEAT SHEET I read on tunnelsup.com

the byte I receive is different

You can see from the cheat sheet, all DH of Xbee should be 0013A200 but mine becomes 007D33A200. Then my byte from 9-19 matches cheat sheets 8-18. The 18/19 indicates that I'm using A0 which is correct. But I don't know what's happening from 20-24 of my byte. Shouldn't 20-21 zero since I haven't enable a digital pin? And what does 22-24 mean?

:-\ :disappointed_relieved: :sob:

I can now differentiate data from router 1 and 2 but I don't know what to do if I need to read more than 1 pin from xbee.

If you configure the XBee to send data for more than one pin, either more packets are sent, and each packet contains data for one pin, or the same number of packets are sent, but there is more data in each packet.

Why is Serial.read() stored to two different variables(analogMSB & LSB)?

Because the value is an int, and an int is two bytes. 1023 will not fit in a byte (0 to 255).

Is the temp equivalent to 0-1023 values given by an analog pin of arduino?

Yes.

How will the digital data be computed?

I don't understand this question. How will what digital data be computed where?

You can see from the cheat sheet, all DH of Xbee should be 0013A200 but mine becomes 007D33A200.

Nonsense. The cheat sheet shows ONE example of a DH address. The actual DH address depends on the address of the XBee being used.
The digital channel mask in your data indicates that the packet contains data for one digital pin. The example shows digital data from one (different) pin.
The analog channel mask in the example indicates that there is one analog value being sent. Your analog channel mask values shows no analog data being sent.
The sample packet has 0x14 bytes of payload. Your packet has 0x12 bytes of data.
You are not interpreting the data in your packet correctly.

Thank you for the reply! It really means a lot :slight_smile:

(How will the digital data be computed?)
I don't understand this question. How will what digital data be computed where?

Sorry. What I meant was, if "temp = analogReading / 1023.0 * 1.23;" is how I get 0-1023 values, how can I compute the digital reading?

int digitalMSB = Serial.read();
int digitalLSB = Serial.read();
int digitalReading = digitalLSB + (digitalMSB * 256);
       
switch = digitalReading;

Will it be like this?

(You can see from the cheat sheet, all DH of Xbee should be 0013A200 but mine becomes 007D33A200.)
Nonsense. The cheat sheet shows ONE example of a DH address. The actual DH address depends on the address of the XBee being used.

Sorry,I'm wrong. It should be SH not DH. The cheat sheet says byte 4-11 is for 64bit source address: my SH is 0013A200 and SL is 40B77006 for Router1 but in COM8 I receive SH 007D33A200 which has extra byte. I'm confused

The digital channel mask in your data indicates that the packet contains data for one digital pin. The example shows digital data from one (different) pin. The analog channel mask in the example indicates that there is one analog value being sent. Your analog channel mask values shows no analog data being sent. The sample packet has 0x14 bytes of payload. Your packet has 0x12 bytes of data.
You are not interpreting the data in your packet correctly.

I don't understand why :frowning: I only want to read A0. Should I disable the Associated indicator and RSSI?

This is my I/O Settings:

Will it be like this?

If the data is coming from the serial port, yes.

but in COM8 I receive SH 007D33A200 which has extra byte. I'm confused

A 64 bit address is 8 bytes. You show 5 of them, and claim that there is an extra one. Looks more like three are not shown, to me.

If the data is coming from the serial port, yes.

Ok. Thank you!

A 64 bit address is 8 bytes. You show 5 of them, and claim that there is an extra one. Looks more like three are not shown, to me.

I only showed the SH, sorry. The 64bit address received (if we refer to byte 4-11) is 00 7D 33 A2 00 40 B7 70. But On the back of my router Xbee it says 00 13 A2 00 40 B7 70 06. Why is 13 turning to 7D 33?

Why is 13 turning to 7D 33?

  1. It isn't. You are not comparing the same information.
  2. Maybe you mucked with the address in X-CTU. Check what X-CTU says the address actually is.

This is the Addressing Section in XCTU for Router 1:

And this is the Addressing in Router2:

Is there anything wrong on the code?

It looks like Processing is getting the high order value incorrect in the stream it sends. But, does it really matter, since it is the low order value that is unique?

On examination of the Processing code, yes there is plenty wrong with it.

  SensorData data = new SensorData(); // create a data object
  data = getData(); // put data into the data object

Creating an instance, and then immediately assigning it a new value is silly. There is nothing wrong with

SensorData data = getData();

The Processing code only receives data, so any problems with it have nothing to do with the issues of the address being wrong in packets you receive.

What is sending those packets?

What is sending those packets?

I don't know :frowning: At this point, I'm close to shoving this project under my bed.

But no, I should not give up. However, I think I'll just pass on the processing code, there's too much code and the packets are giving me headaches.

Should we start again?

I restored my Router Settings to default and only changed the ff:

Router AT
PAN ID 511
Channel Verification 1
AD0/DIO0 2
IO Sampling Rate 3E8

Still.. it's the same.

Also changed the code to:

#include <SoftwareSerial.h>

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

void loop(){
  while(Serial.available() > 0){
    byte discardByte=Serial.read();
    Serial.println(discardByte, HEX);
  }
}

Added SoftwareSerial.h (Hoping it will change anything) but still nothing.

7E
0
12
92
0
7D
33
A2
0
40
B7
70
14
4
7
1
1
0 - digital channel mask: 0, correct
0
1 - analog channel mask: 1, correct
2 - digital sample data: 0000 0010 0000 1011, wrong!
B - Is this because of associated indicator and RSSI?
22 - analog sample dat: only 1 bit left should be 2 ::slight_smile:
7E

Should I change the Firmware?

Product Family: XBP24BZ7
Function Set: Zigbee Router AT
Firmware Version: 22A7

I don't know

You have an XBee receiving data and you have no idea where it is coming from?

How do you know that there there is problem with the incoming data, then?

You have an XBee receiving data and you have no idea where it is coming from?

I know it's coming from the two routers, but it's somehow has an extra byte for the address and missing a byte on the analog data.

How do you know that there there is problem with the incoming data, then?

I restored it to default, change the router xbee, change the arduino code of the coordinator xbee and change the supply power from usb port of computer to external power supply (dc adapter) but I still can't trace what's causing the problem.

I'm still figuring things out.... hopefully I can find a solution.

I'll restore the coordinator and find a better code.
I'll also post the whole configuration for the coordinator and 2 router. Could you help me check what's wrong?

**Well, the image got crappy :drooling_face: so I decided to type the config. PM me if you want to grab the picture.

Here are the Xbee configurations: (Note, // - means default)

Firmware information
Product family:		XBP24BZ7
Function set:		Zigbee Coordinator API
Firmware Versions:	21A7

Networking
PAN ID					511
Scan Channels				7FFF	Bitfield
Scan Duration				3	exponent
Zigbee Stack Profile			0
Node Join Time				FF	x1 sec
//Operating PAN ID			511
//Operating 16-bit PAN ID		89D6
//Operating Channel			13
//Number of Remaining Children		A

Addressing
//Serial No High			13A200
//Serial No Low				40B76FF9
//16-bit Network Address		0
Destination Address High		0
Destination Address Low			FFFF
Node Identifier				-
Max Hops				30
Broadcast Radius			0
Many-to-One Route Broadcast Time	FF	x10 sec
Device Type Identifier			30000
Node Discovery Backoff			3C	x100 ms
Node Discovery Options			3
//Max No of API Transmission Bytes	FF
PAN Conflict Threshold			3

RF Interfacing
Power Level				Highest[4]
Power Mode				Boost Mode Enabled[1]
//Power at PL4				A

Security
Encryption Enable			Disabled[0]
Encryption Options			0	Bitfield
Encryption Key				-
Network Encryption Key			-

Serial Interfacing
Baud Rate				9600[3]
Parity					No Parity[0]
Stop Bits				One stop Bit[0]
DIO7 Config				CTS flow control[1]
DIO6 Config				Disable[0]
API Enable				2	API enabled (..escaping(2)
API Output Mode				Native[0]

Sleep Modes
Cyclic Sleep Period			20	x10 ms
No of Cyclic Sleep Periods		1

I/O Settings
AD0/DIO0 Config				Commisioning Button[1]
AD1/DIO1 Config				Disabled[0]
AD2/DIO2 Config				Disabled[0]
AD3/DIO3 Config				Disabled[0]
DIO4 Config				Disabled[0]
DIO5/Assoc Config			Assoc indicator[1]
DIO10/PWM0 Config			RSSI PWM Output[1]
DIO11 Config				Disabled[0]
DIO12 Config				Disabled[0]
Pull-up Resistor Enable			1FFF
Assoc LED Blink Time			0	x10 ms
RSSI PWM Timer				28	x100 ms
Device Options				1	Bitfield

I/O Sampling
IO Sampling Rate			0	x1 ms
Digital IO Change Detection		0
Supply Voltage HIgh Threshold		0

Diagnostic Commands
//Firmware Version			21A7
//Hardware Version			1E46
//Assoc Indication			0
//RSSI of Last Packet			27
//Supply Voltage			AE0
//Temperature				20
Firmware information
Product family:		XBP24BZ7
Function set:		ZigBee Router AT
Firmware Versions:	22A7

Networking
Networking
PAN ID					511
Scan Channels				7FFF	Bitfield
Scan Duration				3	exponent
Zigbee Stack Profile			0
Node Join Time				FF	x1 sec
Network Watchdog Timeout		0
Channel Verification			Enabled[1]
Join Verification			Disabled[1]
//Operating PAN ID			511
//Operating 16-bit PAN ID		89D6
//Operating Channel			13
//Number of Remaining Children		C

Addressing
//Serial No High			13A200
//Serial No Low				40B77006
//16-bit Network Address		B35F
Destination Address High		0
Destination Address Low			0
Node Identifier				-
Max Hops				30
Broadcast Radius			0
Many-to-One Route Broadcast Time	FF	x10 sec
Device Type Identifier			30000
Node Discovery Backoff			3C	x100 ms
Node Discovery Options			3
//Max No of Transmission Bytes		54
PAN Conflict Threshold			3

ZigBee Addressing
ZigBee Source Endpoint			E8
ZigBee Destiation Endpoint		E8
ZigBee Cluster ID			11

RF Interfacing
Power Level				Highest[4]
Power Mode				Boost Mode Enabled[1]
//Power at PL4				A

Security
Encryption Enable			Disabled[0]
Encryption Options			0	Bitfield
Encryption Key				-

Serial Interfacing
Baud Rate				9600[3]
Parity					No Parity[0]
Stop Bits				One stop Bit[0]
Packetization Timeout			3	xcharacter times
DIO7 Config				CTS flow control[1]
DIO6 Config				Disable[0]

AT Command Options
AT Command Mode Timeout			64	x100 ms
Guard Times				3E8	x1 ms
Command Sequence Character		2B	Recommended:...0x7F (ASCII)

Sleep Modes
Sleep Mode				No Sleep (Router)[0]
No of Cyclic Sleep Periods		1
Sleep Options				0
Cyclic Sleep Period			20	x10 ms
Time before Sleep			1388	x1 ms
Poll Rate				0

I/O Settings
AD0/DIO0 Config				ADC[2]
AD1/DIO1 Config				Disabled[0]
AD2/DIO2 Config				Disabled[0]
AD3/DIO3 Config				Disabled[0]
DIO4 Config				Disabled[0]
DIO5/Assoc Config			Assoc indicator[1]
DIO10/PWM0 Config			RSSI PWM Output[1]
DIO11 Config				Disabled[0]
DIO12 Config				Disabled[0]
Pull-up Resistor Enable			1FFF
Assoc LED Blink Time			0	x10 ms
RSSI PWM Timer				28	x100 ms
Device Options				1	Bitfield

I/O Sampling
IO Sampling Rate			3EB	x1 ms
Digital IO Change Detection		0
Supply Voltage HIgh Threshold		0

Diagnostic Commands
//Firmware Version			22A7
//Hardware Version			1E46
//Assoc Indication			0
//RSSI of Last Packet			22
//Supply Voltage			B0A
//Temperature				21
Firmware information
Product family:		XBP24BZ7
Function set:		ZigBee Router AT
Firmware Versions:	22A7

Networking
Networking
PAN ID					511
Scan Channels				7FFF	Bitfield
Scan Duration				3	exponent
Zigbee Stack Profile			0
Node Join Time				FF	x1 sec
Network Watchdog Timeout		0
Channel Verification			Enabled[1]
Join Verification			Disabled[1]
//Operating PAN ID			511
//Operating 16-bit PAN ID		89D6
//Operating Channel			13
//Number of Remaining Children		C

Addressing
//Serial No High			13A200
//Serial No Low				40B77014
//16-bit Network Address		407
Destination Address High		13A200
Destination Address Low			40B76FF9
Node Identifier				-
Max Hops				30
Broadcast Radius			0
Many-to-One Route Broadcast Time	FF	x10 sec
Device Type Identifier			30000
Node Discovery Backoff			3C	x100 ms
Node Discovery Options			3
//Max No of Transmission Bytes		54
PAN Conflict Threshold			3

ZigBee Addressing
ZigBee Source Endpoint			E8
ZigBee Destiation Endpoint		E8
ZigBee Cluster ID			11

RF Interfacing
Power Level				Highest[4]
Power Mode				Boost Mode Enabled[1]
//Power at PL4				A

Security
Encryption Enable			Disabled[0]
Encryption Options			0	Bitfield
Encryption Key				-

Serial Interfacing
Baud Rate				9600[3]
Parity					No Parity[0]
Stop Bits				One stop Bit[0]
Packetization Timeout			3	xcharacter times
DIO7 Config				CTS flow control[1]
DIO6 Config				Disable[0]

AT Command Options
AT Command Mode Timeout			64	x100 ms
Guard Times				3E8	x1 ms
Command Sequence Character		2B	Recommended:...0x7F (ASCII)

Sleep Modes
Sleep Mode				No Sleep (Router)[0]
No of Cyclic Sleep Periods		1
Sleep Options				0
Cyclic Sleep Period			20	x10 ms
Time before Sleep			1388	x1 ms
Poll Rate				0

I/O Settings
AD0/DIO0 Config				ADC[2]
AD1/DIO1 Config				Disabled[0]
AD2/DIO2 Config				Disabled[0]
AD3/DIO3 Config				Disabled[0]
DIO4 Config				Disabled[0]
DIO5/Assoc Config			Assoc indicator[1]
DIO10/PWM0 Config			RSSI PWM Output[1]
DIO11 Config				Disabled[0]
DIO12 Config				Disabled[0]
Pull-up Resistor Enable			1FFF
Assoc LED Blink Time			0	x10 ms
RSSI PWM Timer				28	x100 ms
Device Options				1	Bitfield

I/O Sampling
IO Sampling Rate			3EB	x1 ms
Digital IO Change Detection		0
Supply Voltage HIgh Threshold		0

Diagnostic Commands
//Firmware Version			22A7
//Hardware Version			1E46
//Assoc Indication			0
//RSSI of Last Packet			23
//Supply Voltage			AE8
//Temperature				21

Good day, everyone!

Could someone who has a Series 2 Xbee try my approach and attach a print screen of the serial COM of the coordinator?

I don't know what's messing up the bytes and I would like to know if this is only happening to me.

Please? :frowning: