I2C over Xbee?

Hi -

I have a setup I am interested optimizing (making smaller, portable).

I currently use 3 arduino unos, 2 accelerometers (spark fun, ITG3200/ADXL345), and 3 xbee S1s.

I have one master unit: The master unit consists of a single arduino uno, an Xbee, and a computer. This Xbee receives data from the slaves (described below) and then provides it to the arduino, which is then captured on the computer.

I have two slave units:
Each slave unit has an arduino uno that provides the I2C bus for an accelerometer. The data from the accelerometer is captured by the Arudino Uno and then the Uno outputs that data (using UART) to the slave Xbee for transmission to the master Xbee.

As you can imagine, this is a mess and not really portable - each arduino has to have a 5V power supply and then I have to have a bunch of breadboards to connect pins.

I thought it may be possible to use only one master Arduino (connected to the computer) and Xbee to transmit the I2C bus to the slave Xbees (connected to the accelerometers), and thus remove the additional two Arduinos, but can’t figure that out. I’m not exactly sure what I am doing wrong.

I setup DIO2 and DIO3 of the master (coordinator enabled) as Digital Input pins and gave it the SCL and SDA lines from the Arudino. Then I setup DIO2 and DIO3 of the slave XBees as Digital Output pins and connected them to the accelerometer, but nothing seems to be transmitted between the master and the slaves. I’ve probed around with a scope but nothing shows up on the slave DIO2 and DIO3 pins.

The association indicator lights are blinking, as they should be, on all three Xbees, so that does not seem to be the issue.

A few questions:

  • Is it actually possible to send I2C lines over Xbee? Can the Xbee actual handle the bandwidth (I2C SCL generated by the Arduino is 100kHz) .

  • Are the master’s DIO2 and DIO3 digital inputs automatically sent to the slave’s DIO2 and DIO3 ports (is the mapping 1-1)? Or do I have to set additional setting other than just the input/output for each pin?

Thanks in advance!

The Xbee modules are not capable of directly transmitting I2C data.

No, the DIO line passing function does not work automatically. you need to enable it enable it. In addition, a DIO In on Pin 20 requires Pin 20 on the receiving module to be an output.

I know it is an old post but it could help myself understanding possible scheme.

Did you think use programmable version ?
like in the following example : http://www.digi.com/blog/xbee/connecting-a-capacitive-touch-keypad-to-the-programmable-xbee/