XBee: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
{{Infobox | {{Infobox | ||
|title = | |title = XBEE | ||
|image = [[File:Xbee.jpg|200px]] | |image = [[File:Xbee.jpg|200px]] | ||
|titlestyle = | |titlestyle = | ||
Line 13: | Line 13: | ||
|data5 = [http://ftp1.digi.com/support/documentation/xbee_rpsma_mechanical_drawing.pdf Mechanical Drawing] | |data5 = [http://ftp1.digi.com/support/documentation/xbee_rpsma_mechanical_drawing.pdf Mechanical Drawing] | ||
|data6 = [http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/point-multipoint-rfmodules/xbee-series1-module.jsp Digi International] | |data6 = [http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/point-multipoint-rfmodules/xbee-series1-module.jsp Digi International] | ||
|data7 = [ libxbee] | |||
}} | }} | ||
= Overview = | = Overview = | ||
Many of our boards support the XBEE radios which can be used for long distance communication and mesh networking using the [ZigBee http://en.wikipedia.org/wiki/ZigBee protocols]. | |||
= Getting Started = | = Getting Started = | ||
Digi offers the best introductions to | Digi offers the best introductions to these products: | ||
[http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/point-multipoint-rfmodules/xbee-series1-module.jsp XBee Learn More] | [http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/point-multipoint-rfmodules/xbee-series1-module.jsp XBee Learn More] | ||
[http://www.digi.com/support/kbase/kbaseresultdetl.jsp?id=2188 XBee 802.15.4 Digital Input/Output Line Passing] | |||
For programming with their series the Linux community has created libraries that make this very convenient. | |||
[http:// | * [http://code.google.com/p/libxbee/ libxbee] is a C/C++ API for series 1, 2, and 5 XBEE modules in API mode. | ||
* [http://code.google.com/p/python-xbee/ python-xbee] is a python module for API and command mode | |||
* [http://code.google.com/p/xbee-api/ xbee-api] is a java API for Series 1 and 2 in API mode. | |||
= Programming Example = | = Programming Example = | ||
This source example assumes the baud rate is already set up to 9600 ( | This source example assumes the baud rate is already set up to 9600 and that you are using a series 1 XBEE module. Keep in mind that you can reprogram the baud rate that the XBEE module will use. First set up the UART before running your application: | ||
<source lang-bash> | |||
eval $(xuartctl --server --port 3 --speed 9600 2>&1); ln -s $ttyname /dev/ttyxuart3 | |||
# Now that the xuart device is created you can start your application: | |||
myapp & | |||
</source> | |||
This is an example application that will check for the "OK" return from +++. For real usage of the XBEE you will want to use one of the APIs listed above. | |||
<source lang=c> | <source lang=c> | ||
Line 36: | Line 50: | ||
#include <strings.h> | #include <strings.h> | ||
#define XBEEDEVICE "/dev/ | #define XBEEDEVICE "/dev/ttyxuart3" | ||
int main(int argc, char **argv) | int main(int argc, char **argv) |
Revision as of 16:46, 25 June 2012
Released Mar. 2010 | |
Documentation | |
---|---|
Datasheet | |
Product Manual | |
Mechanical Drawing | |
Digi International | |
[ libxbee] |
Overview
Many of our boards support the XBEE radios which can be used for long distance communication and mesh networking using the [ZigBee http://en.wikipedia.org/wiki/ZigBee protocols].
Getting Started
Digi offers the best introductions to these products:
XBee Learn More XBee 802.15.4 Digital Input/Output Line Passing
For programming with their series the Linux community has created libraries that make this very convenient.
- libxbee is a C/C++ API for series 1, 2, and 5 XBEE modules in API mode.
- python-xbee is a python module for API and command mode
- xbee-api is a java API for Series 1 and 2 in API mode.
Programming Example
This source example assumes the baud rate is already set up to 9600 and that you are using a series 1 XBEE module. Keep in mind that you can reprogram the baud rate that the XBEE module will use. First set up the UART before running your application:
eval $(xuartctl --server --port 3 --speed 9600 2>&1); ln -s $ttyname /dev/ttyxuart3
# Now that the xuart device is created you can start your application:
myapp &
This is an example application that will check for the "OK" return from +++. For real usage of the XBEE you will want to use one of the APIs listed above.
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <strings.h>
#define XBEEDEVICE "/dev/ttyxuart3"
int main(int argc, char **argv)
{
int fd, c, res;
struct termios oldtio, newtio;
char buf[255] = {0};
fd = open(XBEEDEVICE, O_RDWR | O_NOCTTY );
if(fd <0)
{
perror(XBEEDEVICE);
return -1;
}
tcgetattr(fd, &oldtio); /* save current port settings */
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
/* set input mode (non-canonical, no echo,...) */
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
newtio.c_cc[VMIN] = 2; /* blocking read until 2 chars received */
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &newtio);
// Sending +++ within 1 second sets the XBee into command mode
write(fd, "+++", 3);
res = read(fd, buf, 255);
buf[res] = 0;
if(0 == strncmp(buf, "OK", 2))
{
printf("XBee Detected\n");
}
else
{
printf("Could not find XBee\n");
}
tcsetattr(fd, TCSANOW, &oldtio);
return 0;
}