Hi all,
A question for any ZigBee experts out there: I’m trying to transmit small (8 byte) packets at a high (100Hz) rate on a pt-pt connection. I found, the hard way, that ZigBee seems to have a superframe period of 15ms (or at least the XBee Pro modules with the latest non-beacon firmware do – BTW I haven’t for the life of me been able to find “beacon” firmware for these guys), which means that 100Hz communication doesn’t work out too well – and I get a lot of latency jitter, which is a killer for my app.
I tried disabling ACK’s in the MAC layer and tried fiddling with some other params, so far to no avail…
Any ideas on configuring these modules to enable 100Hz, fixed-latency (but not necessarily reliable) communication? If Bluetooth/standard ZigBee is TCP, i’m looking for a UDP-type wireless transport.
Am I barking up the wrong wireless tree? Do I need to be looking at other modules? Any advice would be incredible… I’ve spent a while looking at various modules/modems but exact latency/timing specs aren’t always available/clear.
Thanks!
-The Bulldozer.
If you are doing point to point or point to multipoint with all one-hop, then don’t use the ZigBee protocol. Put another way, unless you need meshing or self-forming cluster tree topologies, don’t use ZigBee.
Terminology: ZigBee is one of several Network Layer protocols used on top of IEEE 802.15.4. It’s optional. I’ve read that most products employing 802.15.4 don’t use ZigBee for reasons of overkill or the ZigBee alliance licensing whereas 802.15.4 is IEEE public domain (as is 802.3 Ethernet).
Other network layers being used with 802.15.4 include the emerging “6loPAN”, a form of routed IP, and ISA SP100a, a draft standard, and proprietary protocols like Digi/Maxstream’s new DigiMesh, and ones from Ember and Dust, Inc.
ZigBee can operate with beacons or without. Beaconing establishes a superframe with contention time slots and with assigned time slots called GTS. No one in the industry that I can find is actually using superframes nor GTS in a real product. Everyone uses CSMA.
Simpler:
With plain 802.15.4 and your own simple messaging, you can get good performance. I’ve measured (with Daintree’s tools, and also with a 'scope), a couple of mSec for a 108byte (max possible) data payload packet and the return MAC layer ACK. The transmission time of a 108 byte payload + the frame header and CRC is merely the size of all of this times 8 divided by 250Kbps (for the 2.4GHz version of '15.4).
With ZigBee-less use, you address the destination node using its short or long IEEE MAC layer address. Or you can use all 1’s (broadcast) and have every node receive the packet and look inside the data payload at what was sent to see if it was addressed by the application. But you’ll need your own simple protocol to assure receipt if you use broadcast. Remember also that MAC layer ACKs can be turned off if you dare.
Wow. Incredibly helpful reply, thanks.
Any suggestions for a particular 802.15.4 module to use (that supports the command set for your own message processing)?
Thanks again!
I’ve used 4 vendor’s modules. The Digi/Maxstream Xbee or Xbee PRO (sold here) are the best - in terms of good serial port emulation code and documentation. Runner-up, in my opinion, is Jennic.
for doing your own messaging, you can either use “Hayes modem AT” commands that Xbee and other implement, or code for a packet protocol on the serial interface. You don’t want to mess with the IEEE 802.15.4 MAC layer API itself.
XBee series 2 is a totally different product, intended only for applications where you use the ZigBee protocol (rather rarely used).
Also - choose a module based on your Country’s Effective Isotropic Radiated Power (EIRP) power regulations. France, Japan, others have severe restrictions as compared to the US. there are variations depending on antenna gain and indoor/outdoor in some locales. That’s another good thing about XBee - lots of certifications internationally.
Hm… Thanks again for your reply. I have several XBee Pro modules sitting around me but the only API commands I can seem to find in their manual are simple packetized send/receive commands.
I think that the bottom line is that the ZigBee is probably not right for my application, since I don’t need the full duplex and all of the additional processing (support for various topologies, etc) anyway. I think that I’m going to try the seemingly simpler Aerocomm/Radiotronix/Radiometrix RF modems to build my own point-multipoint, unreliable, low-fixed-latency network.
Stevech, thanks so much for your advice. If anyone reads this and has modules that they’ve had positive experience with, suggestions are always more than welcome :-).