Xbee with ID-12: addressing in serial line replacement mode?

Hello! I apologize if this is a repost, it didn’t go through the first time.

I have several ID-12 RFID readers connected to series 1 Xbee modules transmitting tag data to a single receiver Xbee. Each ID-12’s serial out line is connected to the Xbee’s DIN line, and in transparent mode this works great: when any reader sees a tag, the receiver Xbee gets the tag ID.

Now I need to figure out which Xbee/reader is reading the tag. I know that API mode frames will send the address of the remote Xbee, but I can’t seem to figure out if it’s possible to package up serial in data that way (because the data I need comes through in the serial line replacement mode, not as one of the analog or digital pins). If I could find a way to read the data the ID-12 is outputting on one of those pins instead (some sort of software serial) that would work too.

I would prefer to do this without microcontrollers for each reader/transmitter module. Does anyone know if this is possible?

Let me know if I can provide more details.

Here’s a reference I found in the datasheet:

"By default, XBee/XBee-PRO RF Modules act as a serial line replacement (Transparent Operation) - all UART data received through the DI pin is queued up for RF transmission. When the module receives an RF packet, the data is sent out the DO pin with no additional information.

Inherent to Transparent Operation are the following behaviors:

•If module parameter registers are to be set or queried, a special operation is required for

transitioning the module into Command Mode.

•In point-to-multipoint systems, the application must send extra information so that the

receiving module(s) can distinguish between data coming from different remotes."

In the last line (the application must send extra information), I’m wondering if that means the Xbee can’t do it in that mode, so the application–meaning whatever is connected up to the Xbee? has to.

What I do is keep the ‘end devices’ in AT mode and just send the data like you have been doing. The module that is receiving the data is running in API mode. The serial data out of this unit has the full source address of the sending unit in the API frame. This unit connects to a serial port on a PC and a Python script decodes the API frame to obtain the sending unit and the data.

This sounds promising…thank you!

Can you tell me where you found the format for the frames that contain serial data? This is the data sheet I’ve been referring to: http://ftp1.digi.com/support/documentat … 0982_B.pdf

Starting on page 57 the different frame formats are described. Would it be something like the Rx (Receive) packet?

eilatann:
This sounds promising…thank you!

Can you tell me where you found the format for the frames that contain serial data? This is the data sheet I’ve been referring to: http://ftp1.digi.com/support/documentat … 0982_B.pdf

Starting on page 57 the different frame formats are described. Would it be something like the Rx (Receive) packet?

I don't think that Digi has documented the transparent serial nor the virtual wire frame formats - because they aren't intended for use with the binary API. But you might be able to reverse engineer it. I think they have two bytes prepended to the actual data, at the API receiving end.

eilatann:
This sounds promising…thank you!

Can you tell me where you found the format for the frames that contain serial data? This is the data sheet I’ve been referring to: http://ftp1.digi.com/support/documentat … 0982_B.pdf

Starting on page 57 the different frame formats are described. Would it be something like the Rx (Receive) packet?

Yes, I use the API 0x80 receive packet on page 63.

Holy crap, it works!

Thank you very much.

Right on.