I am
in the final stages of implementing a CC2420 low power listening library for
TinyOS 2.x. I'm not intending it to be compliant with any kind of
standard; instead, I want it to be functional. This does not
require long preambles, and does not require peer-to-peer
synchronization.
Initial results on a tmote indicate 5.09 mAh/day at 2-second receive
check intervals. This will probably get
lower.
Since
it's not quite finished and I'm not sure if/when I'll contribute it, I'll
explain how I have implemented this in case you want to try it
yourself:
Summary: On the Rx end, it's a periodic channel energy check.
On the Tx end, it's a repetitively transmitting message.
1.
Edited CC2420TransmitP to provide a "CC2420Cca" interface that allows external
components to sample the status of the CCA pin when the radio is on and not
doing anything. The "getCca()" command simply verifies the state is good
to go, then sets the backoff timer to the CC2420_BACKOFF_PERIOD. The
backoff timer fires, ensuring the Rx mode has been set for enough symbol periods
for the CCA pin to be valid, and then sends back the reading in an
event.
2.
Built a CC2420DutyCycle component that duty cycles the CC2420 radio on and
off. After the radio turns on, the CCA is checked three times in a
row. If one of these checks indicates that the channel is *not* clear,
then someone is transmitting. The radio is left on indefinitely at this
level, only to be turned back off again by higher levels of this architecture
after packets are done receiving. If nobody is transmitting, turn the
radio off immediately. Total time the radio is on (in the current
version): 3.7 ms from start to finish, but most of that time is spent at a
lower power (<5mA) starting up the radio.
3.
Built a low power listening module that provides send/receive interfaces and
sits on top of the duty cycling component. When low power listening is
enabled, the duty cycling is turned on. When a message is detected and
received at this level, the message is passed up to the
application level and leaves the radio on for a brief period of time in case
other messages are coming. If this time expires, the radio turns off and
continues duty cycling. Ideally, an ack is returned as
well.
On the
transmitting end, the send event in this LPL module actually retransmits
the message over and over again up to the length of the duty cycle period, and
adjusts the backoff period to be very short so there is not much space between
messages. If an ack is heard, it quits transmitting early (an advantage
over the long preamble method!) and signals sendDone. Otherwise, sendDone
gets signaled after the duty period expires.
There
you have it, low power CC2420 duty cycling, very similar to
CC1000's BMAC.
The
new TinyOS 2.x CC1000 low power listening does energy checks on the channel as
well, instead of preamble checks, only firing up the bias of the radio and
leaving the rest of the radio off. This receive check ("RSSI Pulse Check")
scheme does not require long preambles if your message (with short
preambles) is being sent over and over again for a full receive
period. By sending repeating messages, you can also cut the
transmission length short if you receive an ack in the middle, saving
on Tx energy and decreasing transmission latency. I've tested
this.
-david
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Diego Bartolomé Arquillo
Sent: Wednesday, September 13, 2006 8:24 AM
To: [EMAIL PROTECTED]
Cc: [email protected]
Subject: RE: [Tinyos-help] low power listening in tinyos-2.x for CC2420 ?Hi Avinash,Low power listening have not sense using CC2420 because this chip is compliant with the standard IEEE 802.15.4. This standard defines a 4 bytes preamble length and LPL needs a long preamble in order to work properly. The CC1000 is not compliant with 802.15.4 and allows you to change the preamble length. When you send a packet using LPL, a long preamble is transmitted. The recipient of the packet is idle and periodically it scans the channel to look for a packet. If the preamble and the period are adapted, the recipient can receive the useful information of the packet.Best regards,DiegoHi,
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre de Avinash Sridharan
Enviado el: miércoles, 13 de septiembre de 2006 2:35
Para: tos
Asunto: [Tinyos-help] low power listening in tinyos-2.x for CC2420 ?
I am working with the tmote sky platform and running tinyos-2.x (beta 2) on it. I wanted to check with the community if there is low power listening support existing for CC2420 based platforms in tinyos-2.x. Low power listening was introduced as BMAC by Joe Polaster in tinyos-1.x for the CC1000 chips, but I could not find reference implementations of BMAC for CC2420 in tinyOS-2.x. Also if BMAC is not available for tinyOS-2.x (atleast in the near future) is it available as part of the Boomerang distribution.
Thanks,
Avinash
--
Phd Dept. of Electrical Engineering
University of Southern California
http://www-scf.usc.edu/~asridhar
_______________________________________________ Tinyos-help mailing list [email protected] https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
