xbeeTest

Based on the Book building wireless sensor networks i tried to set up a connection between an arduino with a SHT15 temprature and humitdy sensor and an mbed.

http://c0013764.cdn1.cloudfiles.rackspacecloud.com/x2_601a5bb

Configure the xbee

http://dl.dropbox.com/u/5308/mbed_xbee_test/xbee_coordinator_at.jpg http://dl.dropbox.com/u/5308/mbed_xbee_test/xbee_route_at.jpg

Program

Mbed

Import programXBeeTest

xbee Test, Serial communication with Arduino. transmit Data from an SHT15 connected to a arduino to the mbed

Arduino

to run this program you need the libary sensiron.h.

/*
 * Example code for SHT1x or SHT7x sensors demonstrating blocking calls
 * for temperature and humidity measurement in the setup routine and
 * non-blocking calls in the main loop.  The pin 13 LED is flashed as a
 * background task while temperature and humidity measurements are made.
 */

#include <Sensirion.h>

const uint8_t dataPin =  9;              // SHT serial data
const uint8_t sclkPin =  10;              // SHT serial clock
const uint8_t ledPin  = 13;              // Arduino built-in LED
const uint32_t TRHSTEP   = 5000UL;       // Sensor query period
const uint32_t BLINKSTEP =  250UL;       // LED blink period

Sensirion sht = Sensirion(dataPin, sclkPin);

uint16_t rawData;
float temperature;
float humidity;
float dewpoint;

byte ledState = 0;
byte measActive = false;
byte measType = TEMP;

unsigned long trhMillis = 0;             // Time interval tracking
unsigned long blinkMillis = 0;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  delay(15);                             // Wait >= 11 ms before first cmd
// Demonstrate blocking calls
  sht.measTemp(&rawData);                // sht.meas(TEMP, &rawData, BLOCK)
  temperature = sht.calcTemp(rawData);
  sht.measHumi(&rawData);                // sht.meas(HUMI, &rawData, BLOCK)
  humidity = sht.calcHumi(rawData, temperature);
  dewpoint = sht.calcDewpoint(humidity, temperature);
  logData();
}

void loop() {
  unsigned long curMillis = millis();          // Get current time

  // Rapidly blink LED.  Blocking calls take too long to allow this.
  if (curMillis - blinkMillis >= BLINKSTEP) {  // Time to toggle the LED state?
    ledState ^= 1;
    digitalWrite(ledPin, ledState);
    blinkMillis = curMillis;
  }

  // Demonstrate non-blocking calls
  if (curMillis - trhMillis >= TRHSTEP) {      // Time for new measurements?
    measActive = true;
    measType = TEMP;
    sht.meas(TEMP, &rawData, NONBLOCK);        // Start temp measurement
    trhMillis = curMillis;
  }
  if (measActive && sht.measRdy()) {           // Note: no error checking
    if (measType == TEMP) {                    // Process temp or humi?
      measType = HUMI;
      temperature = sht.calcTemp(rawData);     // Convert raw sensor data
      sht.meas(HUMI, &rawData, NONBLOCK);      // Start humidity measurement
    } else {
      measActive = false;
      humidity = sht.calcHumi(rawData, temperature); // Convert raw sensor data
      dewpoint = sht.calcDewpoint(humidity, temperature);
      logData();
    }
  }
}

void logData() {
  Serial.print(temperature); Serial.print("T;");  Serial.print(humidity); 
  Serial.print("H;");  Serial.print(dewpoint);
  Serial.print("D;");  
  Serial.println(";X;");
}

Download Code

Layout

(made with fritzing)

Mbed

http://dl.dropbox.com/u/5308/mbed_xbee_test/mbed_xbee_recev.jpg

Arduino

http://dl.dropbox.com/u/5308/mbed_xbee_test/xbee_sender_Arduino_SHT15.jpg

Graphs

http://www.pachube.com/feeds/25387/datastreams/0/history.png

Parts

Sensor

  • Arduino Uno
  • xbee shield
  • xbee module
  • SHT15 Breakout

Mbed Base

  • mbed
  • Breadboard & Wires
  • xbee breakout board
  • xbee module
  • TextLCD
  • 10KOhm Trimpot

Tools

  • Sparkfun xbee explorer USB


2 comments on xbeeTest:

15 Nov 2012

do i also need xctu to configure xbee with mbed? i want to send data wirelessly from one mbed to other mbed through xbee.

12 Apr 2013

First pair the xbee through X-CTU. Check whether paired properly through terminal of X-CTU. Connect xbee to serial port of mbed's.. Done!!!!!!!

Please log in to post comments.