XBee: Difference between revisions
No edit summary |
No edit summary |
||
Line 33: | Line 33: | ||
= Programming Example = | = 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: | 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 | <source lang=bash> | ||
eval $(xuartctl --server --port 3 --speed 9600 2>&1); ln -s $ttyname /dev/ttyxuart3 | eval $(xuartctl --server --port 3 --speed 9600 2>&1); ln -s $ttyname /dev/ttyxuart3 | ||
Revision as of 16:47, 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;
}