LLRP Commander Applications: RFID Based Sensing

September 23, 2010

I’ve been developing ultra low-cost wireless sensor nodes using the RFID tag antenna as a sensing mechanism. Essentially, that involves relating a change in a physical parameter of interest to a corresponding change in the RFID tag’s electrical properties.For an LLRP compliant reader, that entails extracting quantities like log time, EPC, Channel Index, Tag Count and Peak RSSI level. For this purpose, I’ve found the LLRP Commander and associated MATLAB extensions to be an invaluable resource in seamlessly extracting the sensor-tag data for further processing.

The LLRP Commander has a useful tabular view to parse incoming RO_ACCESS_REPORT messages and display tag data as we can see in Fig 1. For example, by looking for a specific EPC we can infer if the reader is continually observing a tag over time. Similarly, by observing gross changes in the Peak RSSI, we can discern whether a change in some physical parameter is changing RFID tag antenna performance.

Fig 1: The ROAccessReport Table View

As an example, here’s a design of an RFID temperature alarm sensor that makes use shape memory polymer actuation to trigger an alarm when the temperature exceeds 7 C. For those who are unfamiliar with the name, a Shape Memory Polymer (SMP) is a polymer which retains a deformed position when cooled below a specific temperature and which gradually actuates and returns to the un-deformed position when heated above it. The specific temperature of actuation can be controlled by varying the chemistry of the polymer. Naturally, this makes for a great temperature dependent actuation technique. Fig 2. shows the sensor prototype while Fig 3. illustrates the sensor working.

Fig 2: The temperature sensor prototype

Fig 3: The temperature sensing mechanism

As we can see from Fig.3 the sensor is initialized by cooling the sensor below 7 C and deforming the polymer in such a way that the attached detuning metal plate is behind the lower tag. Thus in this state, the lower tag responds with a lower backscatter response power than the top tag. Now if the sensor is placed in a zone above 7 C, the polymer starts to actuate and the metal plate takes up a position behind the upper tag. Thus the upper tag now responds with a worse backscatter power response. By observing a flip in relative signal strength performance (as seen in Fig.4(a)), we can infer that a critical temperature threshold has been violated.

LLRP Commander’s MATLAB integration allows us leverage MATLAB’s computational capabilities to create very illustrative figures and graphs. For example, Fig. 4(b) demonstrates how MATLAB was used to generate the temperature tag-sensor response graph by
using the tag data recorded from LLRP Commander.

Fig 4(a): Tag RSSI as a state indicator

Fig 4(b): MATLAB code accessing LLRP SQL database

Scope for Feature Addition

I think the versatility of the LLRP Commander would be boosted by including the following features:

1)      Tag Population Analysis: A sweep to detect all tags in the vicinity of the reader. The user could then select tags that matter and choose to only display content from them. Also it would be nice to associate an EPC with a tag name like “Bottom Tag” or “Metal Tag” for convenience.

2)      Filtering by Channel Index: For example, if I am interested in displaying RSSI values from a certain EPC at 902 MHz only – this would be very useful in frequency sweeps.

I’d be happy to make additional posts on how I used LLRP Commander to implement different types of sensing techniques. Thanks to Chris and Sam for implementing features like the ROAccessReports table!

You can read more about Tag Antenna Based Sensing at: http://web.mit.edu/rahul_b/www

Regards,

Rahul

Advertisements

Maximum reads per second?

December 15, 2009

For one of our experiments, we have been trying to maximize the number of reads per second from a single RFID tag using an Impinj Speedway reader. At the moment, the best we are able to do is about 1 read per second (if there are more tags in range, we’ll get more reports per second). Has anyone in the community managed to get a higher sampling rate (=higher read rates) and could share their ADD_ROSPEC message?  Our ADD_ROSPEC is posted below .

ADD_ROSPEC Message:

<?xml version=”1.0″ encoding=”UTF-8″?>
<llrp:ADD_ROSPEC xmlns:llrp=”http://www.llrp.org/ltk/schema/core/encoding/xml/1.0&#8243; Version=”1″ MessageID=”4″>
<llrp:ROSpec>
<llrp:ROSpecID>1</llrp:ROSpecID>
<llrp:Priority>0</llrp:Priority>
<llrp:CurrentState>Disabled</llrp:CurrentState>
<llrp:ROBoundarySpec>
<llrp:ROSpecStartTrigger>
<llrp:ROSpecStartTriggerType>Immediate</llrp:ROSpecStartTriggerType>
</llrp:ROSpecStartTrigger>
<llrp:ROSpecStopTrigger>
<llrp:ROSpecStopTriggerType>Null</llrp:ROSpecStopTriggerType>
<llrp:DurationTriggerValue>0</llrp:DurationTriggerValue>
</llrp:ROSpecStopTrigger>
</llrp:ROBoundarySpec>
<llrp:AISpec>
<llrp:AntennaIDs>0</llrp:AntennaIDs>
<llrp:AISpecStopTrigger>
<llrp:AISpecStopTriggerType>Null</llrp:AISpecStopTriggerType>
<llrp:DurationTrigger>0</llrp:DurationTrigger>
</llrp:AISpecStopTrigger>
<llrp:InventoryParameterSpec>
<llrp:InventoryParameterSpecID>9</llrp:InventoryParameterSpecID>
<llrp:ProtocolID>EPCGlobalClass1Gen2</llrp:ProtocolID>
<llrp:AntennaConfiguration>
<llrp:AntennaID>0</llrp:AntennaID>
<llrp:RFTransmitter>
<llrp:HopTableID>1</llrp:HopTableID>
<llrp:ChannelIndex>0</llrp:ChannelIndex>
<llrp:TransmitPower>71</llrp:TransmitPower>
</llrp:RFTransmitter>
<llrp:C1G2InventoryCommand>
<llrp:TagInventoryStateAware>0</llrp:TagInventoryStateAware>
<llrp:C1G2RFControl>
<llrp:ModeIndex>0</llrp:ModeIndex>
<llrp:Tari>0</llrp:Tari>
</llrp:C1G2RFControl>
<llrp:C1G2SingulationControl>
<llrp:Session>2</llrp:Session>
<llrp:TagPopulation>8</llrp:TagPopulation>
<llrp:TagTransitTime>0</llrp:TagTransitTime>
</llrp:C1G2SingulationControl>
</llrp:C1G2InventoryCommand>
</llrp:AntennaConfiguration>
</llrp:InventoryParameterSpec>
</llrp:AISpec>
<llrp:ROReportSpec>
<llrp:ROReportTrigger>Upon_N_Tags_Or_End_Of_AISpec</llrp:ROReportTrigger>
<llrp:N>1</llrp:N>
<llrp:TagReportContentSelector>
<llrp:EnableROSpecID>0</llrp:EnableROSpecID>
<llrp:EnableSpecIndex>0</llrp:EnableSpecIndex>
<llrp:EnableInventoryParameterSpecID>0</llrp:EnableInventoryParameterSpecID>
<llrp:EnableAntennaID>1</llrp:EnableAntennaID>
<llrp:EnableChannelIndex>1</llrp:EnableChannelIndex>
<llrp:EnablePeakRSSI>1</llrp:EnablePeakRSSI>
<llrp:EnableFirstSeenTimestamp>1</llrp:EnableFirstSeenTimestamp>
<llrp:EnableLastSeenTimestamp>1</llrp:EnableLastSeenTimestamp>
<llrp:EnableTagSeenCount>1</llrp:EnableTagSeenCount>
<llrp:EnableAccessSpecID>0</llrp:EnableAccessSpecID>
<llrp:C1G2EPCMemorySelector>
<llrp:EnableCRC>1</llrp:EnableCRC>
<llrp:EnablePCBits>1</llrp:EnablePCBits>
</llrp:C1G2EPCMemorySelector>
</llrp:TagReportContentSelector>
</llrp:ROReportSpec>
</llrp:ROSpec>
</llrp:ADD_ROSPEC>


RFID Journal writes about release of Fosstrak LLRP Commander

September 1, 2009

The RFIDJournal wrote a news item on the Fosstrak LLRP Commander, the latest open source Fosstrak tool that provides an intuitive interface to configure and control RFID readers that support EPCglobal‘s Low-Level Reader Protocol (LLRP) standard.  See here for the full RFIDJournal article.