My micropower / energy harvesting Arduino variant
is almost ready! (Boards being fabricated now). I'd like to implement a very low-power radio shield to take advantage of it. I know Arduino folk seem to use XBee almost exclusively, but it's not ideal for exchanging data between two power-limited devices, since one of them must keep its radio on at all times listening for packets. A TDMA (Time-Division Multiple Access) radio scheme overcomes this by having the sender and receiver "synchronize watches" and only power up their radios to exchange data during brief pre-arranged time slots. It was originally used for covert communications (time + frequency slots hopped according to one-time pads), but the main purpose now is low power consumption, so the "hopping" mechanism can be trivial (timeslots at regular x-per-second intervals and no frequency hopping).
TDMA is surprisingly old (WWII), but I don't know any current open-source implementation of what I'm describing, or too many closed-source ones for that matter. A Google turns up a couple e.g. student projects, but they appear defunct (e.g. Wisenet
and/or don't provide specs or source (e.g. ACTIS
One of the closed-source ones I know of and have worked with in a past (non-Arduino) project is ANT
. These are pretty sweet, and deliver what they promise. They'll maintain a continuous low data rate link between two low-power devices directly (no always-listening / router / coordinator nodes in between)... average current of 10s of uA @ 1Hz data rate or so, up to 400-some Hz. The software stack is also fairly simple compared to things like Zigbee and Bluetooth, and the modules/chips can be bought (more or less) off the shelf.
Nevertheless, I have a few nitpicks with these, particularly for Arduino use:
1) The device is a SPI master*, requiring the host micro to act as the slave. Even assuming a good SPI slave library for Arduino exists (does it?), this sucks up the only hardware SPI port against use for other sensors/etc. (*There is also an RS232 option, but this requires the ANT CPU stay awake always and thus negates some of the low-power advantage.)
2) Closed-source / proprietary... not only that, but AFAICT over half of the bytes it sends over the air are non-payload bytes concerned with commercial protection features, which would be wasted for this community's purposes (e.g. an up to 8-byte "network key" for preventing unauthorized interoperation between devices).
3) No way to change the user payload size (see previous item). The 8-byte user payload is pretty restrictive for mesh networking purposes, where at least 3-5 bytes would be eaten up by protocol overhead (say 1-byte message type, 2-byte originator ID, 2-byte destination ID), even for a simple BATMAN
1) Host gets waked up and must respond to every message period, whether or not it contained a new/valid message or that message is of interest to this host. (as long as there is already an MSP430 or similar on the radio by necessity, in my dream-world, host can register to receive only new messages and/or messages it is interested in.)
2) No way to adjust sniff duty cycle when searching for peers. During peer search, ideally one could adjust between leaving the radio on continuously listening for packets (fastest pairing time) or polling individual timeslots for a packet "infrequently" / incrementally (avoid excessively loading down weak power sources). (I think ANT does have some duty cycle that's low enough to work with e.g. coincells, but it's not documented or adjustable.)
3) Mildly annoying to obtain in hobbyist quantities. The only distributor of the AP2 modules I know of has a $100 minimum order quantity, and "in stock" availibility has been spotty even then. (Sparkfun carries a design based on the old AP1s, but they are effectively obsolete and more power-hungry than the current crop).
Does anyone have recommendations of comparable low-power wireless devices/projects to look into, especially open-source ones? (If not: anyone interested in starting one? ;-))