The “Tag Finder” Problem
Locating individual assets or one instance of an asset of a particular type is a common problem in many environments such as Retail stores, tool stores or warehouses – for example, finding a particular pair of trousers with the correct leg length and waist among racks of similar garments is often a difficult and time-consuming task. This is also an area where Technology Solutions (UK) Limited’s (TSL) UHF Mobile Readers excel!
Tag finding is based upon the Received Signal Strength Indication (RSSI) information returned from the targeted tag. Using this as a proxy for proximity will work well enough but you will see that this is not perfect as many factors can affect the value e.g. reflections, proximity to metal etc… So, be aware, it is not usually possible to determine a reliable measure of absolute distance using the RSSI value.
Readers supporting the TSL ASCII 2 protocol, such as the 1128 Bluetooth® UHF RFID Reader, can use the inventory command (.iv) to retrieve the RSSI for one or more tags. This value can be used as a proxy for distance and forms the basis of an implementation of a “tag finder” operation.
Actual RSSI values vary with tag type so test with real tags to determine a suitable range for the RSSI. The values are all negative and larger values are nearer e.g. -40 dBm (nearer) -75 dBm (further away).
The following sections give advice on appropriate parameters in an ASCII 2 Inventory command to be used in the implementation of a “Tag Finder” operation.
Note: further details of the ASCII 2 protocol can be found in the TSL ASCII 2 Protocol document.
Selecting the Transponder
To find items successfully requires obtaining RSSI readings as rapidly as possible to provide the user with continuous feedback of proximity to the target asset. To achieve this rapid response the Select parameters of the Inventory command are used to limit responding tags to just those that match the target tag EPC. This match could also be a partial match to target a category of asset, for example by matching up to but not including the serial number section of an SGTIN-96 encoded EPC. In this case the user will be directed to an instance of potentially several matching assets.
The examples throughout this article will use tags with an ASCII-readable encoding – in particular we will be looking for the tag with the following EPC:
ASCII: TSL00003
Hex: 54534c3030303033
We target this tag by setting Select parameters to match the part of EPC memory bank where the EPC value is stored. The EPC Value is stored starting at offset 20h – after the CRC and PC word which are stored at the start of the bank (see C1G2 specifications for details). So the required parameters are:
-sb epc -sd 54534c3030303033 -sl 40 -so 0020
In this example the parameters match all of the target tag EPC but it is still possible that a tag may be encountered that has a longer EPC but starts with TSL00003. To eliminate these “unwanted” matches requires a test of the EPC length, as each transponder is received, to ensure it is correct.
Alternatively, the match could also be restricted to a partial match as follows:
-sb epc -sd 54534c303030 -sl 30 -so 0020
This will match any EPC starting: TSL000 – again, test the length of received EPC’s to eliminate unwanted tags.
We also need to specify a state for the tags that match this pattern so that we can then query only for this particular state. Since most tags encountered are likely to be in the default A state we choose to push matching, target tags into the B state while forcing non-matching tags into the A state. Then if nearby tags miss the select request they will (most likely) be in the non-matching state and ignored. We achieve this using the select action (-sa) parameter (see ASCII 2 User Guide for details). To achieve as many responses as possible we also choose to use session 0 via the select target parameter (-st).
-sa 4 -st s0
Querying for the Target Tag
With the parameters set to select tags into the appropriate states then we need to specify which tags are to be returned from the inventory using the Query parameters. We specify the query session as 0 and the query target as state B
-qt b -qs s0
Naturally, we want to receive the RSSI values:
-ron
Finally we ensure that all other parameters are at their defaults and that the select parameters are active using the inventory only parameter (-io)
.iv –x –io off
So the final full configuration command is as follows (line split for clarity):
.iv -x -n -ron -io off -qt b -qs s0-sa 4 -st s0
-sb epc -sd 54534c303030 -sl 30 -so 0020
Tip: notice that the take no action parameter (-n) has also been included in the above. By issuing the full command just once the reader will then have the correct inventory parameters for the chosen target tag. Now all that needs to be issued is a plain .iv command each time the target tag RSSI is needed.
User Feedback
With the reader configured to generate RSSI values for the targeted tag all that remains is to provide the user with controls to issue the .iv command repeatedly and present the incoming RSSI values in some meaningful way.
There are many possible visual and audible representations that could be used– some of which are demonstrated by the TSL RFID Tag Finder Apps available on the iOS AppStore, Google Play and Windows Store – but that part we’ll leave up to you and your creativity…