CSC400 XBee-Arduino Test

From CSclasswiki
Jump to: navigation, search

This page shows how to quickly test the connection and good operating conditions of two XBee modules.


The setup is simple:

Windows PC <---USB-cable---> Xbee (receiver) <--wireless--> XBee (Xmitter) <---> Arduino
  • Instead of a pure Windows machine, we're using a MacPro running Windows in Parallels. This is our Windows machine.
  • Windows is connected to an XBee via a USB cable.
  • Windows run the X-CTU software that interacts with the XBee. This XBee is in receiving mode.
  • An Arduino is connected to the MacPro. The Arduino is connected via 4 wires to another XBee module. This XBee module works in transmit mode.
  • The Arduino sends a character of the alphabet to the XBee every second. First 'A', then 'B', all the way to 'Z', then 'A' again, ad infinitum.

Testing XBees on the Windows PC

  • Note: The 2 XBee modules are purchased from
  • Testing steps:
    • Downloaded X-CTU software from
    • X-CTU upgraded itself once started
    • Followed the directions from the configure page at
      • Module #1:(marked with "1" in silver marker on square near antenna)
 Communication with modem. OK
 Modem type = XB24
 Modem firmware version = 10EC

 Serial Number = 13A2004078E552
      • Following steps from the configure page, reset the baud rate to 19200, and upgraded to most recent firmware.
      • Module #2:(marked with "2" in silver marker on square near antenna)
 Communication with modem. OK
 Modem type = XB24
 Modem firmware version = 10EC

 Serial Number = 13A2004078E642
      • Following steps from the configure page, reset the baud rate to 19200, and upgraded Module 2 to most recent firmware.

Testing Arduino

  • Install Arduino IDE on 2nd computer (a MacPro)
  • Launch Arduino app IDE
  • Connect Arduino board to MacPro via USB cable.
  • Use the Tools menu to set the model to Diecimila and the USB port to the appropriate port.
  • To test normal operation, open the Blink program from the examples (available via the File menu):
  Turns on an LED on for one second, then off for one second, repeatedly.
  This example code is in the public domain.

void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
  • Upload to Arduino
  • Verify that the LED blinks.

Connection of Arduino to XBee


  • Very simple connections from Arduino to XBee module with 4 wires:
Arduino <---> XBee







Digital Pin 2



Digital Pin 3




  • Use the Arduino SoftwareSerial page on the SoftwareSerial library. Great reference for figuring out how Arduino can talk to XBee via a serial port.
  • Created Arduino program in IDE:
  D. Thiebaut
  Makes Arduino send 1 character via XBee wireless to another XBee connected
  to a computer via a USB cable. 

  The circuit: 
  * RX is digital pin 2 (connect to TX of XBee)
  * TX is digital pin 3 (connect to RX of XBee)
  Based on a sketch created back in the mists of time by Tom Igoe
  itself based on Mikal Hart's example

#include <SoftwareSerial.h>

SoftwareSerial xbee(2, 3); // RX, TX
char c = 'A';
int  pingPong = 1;

void setup()  {
   Serial.println( "Arduino started sending bytes via XBee" );

   // set the data rate for the SoftwareSerial port
   xbee.begin( 19200 );

void loop()  {
  // send character via XBee to other XBee connected to Windows
  // via USB cable
  xbee.print( c );
  //--- display the character just sent on console ---
  Serial.println( c );
  //--- get the next letter in the alphabet, and reset to ---
  //--- 'A' once we have reached 'Z'. 
  c = c + 1;
  if ( c>'Z' ) 
       c = 'A';
  //--- switch LED on Arduino board every character sent---
  if ( pingPong == 0 )
    digitalWrite(13, LOW);
    digitalWrite(13, HIGH);
  pingPong = 1 - pingPong;

  //--- wait 1 sec before sending another char ---
  delay( 1000 );
  • Compiled program.
  • Uploaded program to Arduino.
  • In Windows used X-CTU software and clicked on Terminal Tab to monitor data received wirelessly from Arduino.

CSC400ArduinoXBee X-CTU window.png

  • On Arduino side, in IDE, used Tools menu and opened the console window to see Arduino print characters as they are sent:
CSC400ArduinoXBee Console window.png

It works!

  • Observe video. Notice the characters of the alphabet appearing once a second in both windows. One is the console, attached to the transmitting Arduino, the other one is the Terminal window of the X-CTU software on the Windows side, receiving the characters sent wirelessly.

Communication with a Mac running OSX

  • If you want to connect the receiving XBee to a Mac instead of a Windows PC, use Ashley Hughes solution, and read the characters sent by the XBee on the Mac Terminal.
  • Connect the XBee via the USB cable to the Mac
  • Open the Terminal application
  • Enter the following command:
ls /dev/tty.*
and note the different USB devices listed (of the form /dev/tty.usbserial-######).
  • Pick one of the devices and try this:
screen /dev/tty.usbserial-##### 19200
If you're lucky, you'll start seeing characters of the alphabet appear on the screen of the Terminal window, one a second, going through the whole alphabet.