ECE497 Project: XBee

Team members: Stephen Shinn, Matt Moravec, Josh Dugan.

Grading Template
I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

 00 Executive Summary 05 Installation Instructions 01 User Instructions 00 Highlights 00 Theory of Operation 00 Work Breakdown 00 Future Work 00 Conclusions 00 Demo 00 Late Comments: I'm looking forward to seeing this.

Score: 06/100

Executive Summary
The XBee project involves taking two series-one XBee modules and interfacing them with the various sensors that have been documented in our ECE497 group. Our goal is to create wiki pages which expand on the sensors to include sample wireless communication documentation and source code.

Right now the various sensors have been documented and are working. We've received the XBee modules and soldered them as required. So far we've been able to send and receive messages from an XBee connected to a Windows PC to one connected to a Bone, and vice versa. We've started development on C code which is used to send and receive commands on the Bone. When finished, we'll have a library of methods for communication.

Our next step is to move to Bone-to-Bone communication and to be able to control our sensors wirelessly from one Bone to the other.

In conclusion, we're using XBee modules to communicate from one Bone to another. A protocol is in development and will be used for controlling sensors wirelessly.

Hardware
The very first step is to solder your XBee module, see the instructions here. Once the module is assembled, you may wire-up the XBee module to the BeagleBone's serial ports. The table below describes how to hook up the module to UART2 on the Bone:

The image below shows the configuration:



Software
Our git repo for this project is available here: https://github.com/duganje/ECE497_XBEE (Use 'Git Read-Only' address). To begin, download the  (XBee.c? Give some more comments in your code.  It looks like you are setting the pin MUX.) file which houses our communication methods. You are now able to send data wirelessly using the  and   functions. Repeat this procedure on a separate BeagleBone and use the same functions to receive and reply data.

0.5" Force Sensitive Resistor
These instructions are for interfacing the 0.5" Force Sensitive Resistor with the XBee.

2-Axis Thumb Joystick
These instructions are for interfacing the 2-Axis Thumb Joystick with the XBee. This application could be useful in a wireless controller setting.

Required Items

 * 2 X BeagleBone
 * 2 X XBee Module
 * 2 X XBee Adaptor Kit
 * 1 X 2-Axis Thumb Joystick

Bone1 Wiring Instructions
On your first BeagleBone, wire pins 36 and 38 to your two analog inputs. Wire the Beagle's 1.8V VCC output, pin 32, to the VCC input of the Joystick. Finally, wire the select GPIO signal to the GPIO_7 pin or pin 42.

Wire the XBee as shown in the table below:

The pinout and visual implementation are shown below.



Magnetometer
These instructions are for interfacing the HMC5883L Magnetometer with the XBee.

The goal is to have the two BeagleBones attached to XBee radios with the one connected to the Magnetometer taking data and transmitting this data to the other Bone which will print the measured data.

The XBee radios should be connected to both Beagles as shown in the hardware section above. The Magnetometer should be connected as shown in the hardware section of the Magnetometer page. Below is a picture of the Beagle connected to the Magnetometer and the XBee.

General Usage
These instructions are a general how-to for using the XBee with any sensor.

(You need two sets of instructions, one for how to use your code for a given sensor. The other for adapting your code to another sensor.)

TO DO: How to use the send and receive functions. Include screenshots.

After cloning our repository to your favorite location, include the necessary header file,  (not created yet). In your  file or your program, first run: initializeXbee; which sets the pins we will need to communicate to the XBee. Then in your main.c call: sendIntXbee(int yourInt); with chars as a string characters you choose. On your 2nd BeagleBone, call: receiveIntXbee; which will return the integers which were sent through  on the 1st board.

Highlights
TBD: Showcase an example of a sensor controlling something wireless.

Theory of Operation
The main theory of operation is based on Linux's use of files. With an XBee connected to the Bone's UART 2 as shown above, sent and received messages are written to /dev/ttyO2 (the O is an uppercase O, not a zero). (Should be /dev/ttyO2. How do you change serial ports?) Our code uses this and reads the file to receive a message and writes to the file to send a message. Any XBee's on the same network wil receive the message and we can do anything we want with it.

Milestones

 * Monday, 10/29 - XBee hardware received. (done)
 * Thursday, 11/1 - XBee Bones are connected and commands can be sent. (done)
 * Monday, 11/5 - Initial sensor implementation.
 * Thursday, 11/8 - Package language implemented between Bones.
 * Sunday, 11/11 - YouTube demo uploaded.
 * Monday, 11/12 - All documentation complete.
 * Tuesday, 11/13 - Presentation day; PowerPoint complete.

Completed Work
(It doesn't look like you've done much so far. I'm looking forward to seeing the final project.)


 * Soldering XBee's - Matt Moravec
 * Initial communication methods - Stephen Shinn
 * Expanded communication methods - Josh Dugan

To Do

 * Sensor implementation: starting with the sensors that we interfaced earlier in the class
 * Wiki pages

Future Work
TBD

Conclusions
TBD