Xbee Series 1 vs. Series 2 vs. Digi’s new names for things March 21
Just some musings on some things I worked out:
Maxstream, now Digi, makes two versions of the Xbee radio modules. Series 1 are 1mW or 60mW modules (depending on regular or Pro) with 100m or 1600m range. Series 2 are 2mW or 50mW (120m/1600m). However, their software is quite different.
Series 1 modules are peer-to-peer, they join a PAN and ship the data around, all the firmware is the same. Series 2 modules are coordinator based mesh networking– one of the modules is the PAN coordinator, with different firmware.
Anyway — I had originally bought two Series 2 routers and one Series 2 coordinator. For some reason, the coordinator died. I finally got around to creating an interface to let me reflash the firmware on them, and now have working 2mW radios. The trick is that you actually need a lot more serial protocol than is frequently presented — I got Sparkfun’s FT232RL breakout board, which includes the DTR and RTS pins needed to interface to it. I also picked up their xbee breakout board. A little soldering, and all is well.
I’m running the X-CTU software in parallels on my mac, and for some reason the standard guard times of 1000ms just weren’t working, I brought it up to 1200ms and it was able to talk to the radios just fine. Reflashed the firmware (and a bit easier configuration to boot) and all is well.
Second bit of things is the configuration for a point-to-point config:
- Choose your own PAN (you never know when someone will be messing with an xbee in your neighborhood)
- For something like a controller, set Packetization timeout to 0 — otherwise you’ll end up with a random timeout between when you send your bytes and when they get sent. This isn’t a problem if you’re always sending data, but if you’re doing something realtime you’ll want Packet to 0.
- By default, the Series 1 radios broadcast, Series 2 Routers send to the Coordinator, and the Coordinator broadcasts.
- Unless you really need broadcast messages, just have each radio send the packet to the other radio, using the 64-bit serial number printed on the bottom of the xbee. You can set the radio to have a “common name” if you need to programatically change which radio it’s talking to (or replace a radio module without reprogramming all of them), but with only two end points, I think it’s just easier to use the 64-bit number.