Getting Started
Introduction to the WISP5
The WISP 5 is the latest revision of the Wireless Identification and Sensing Platform, a project started at Intel Labs Seattle in 2006. Read the original papers about the WISP here. Main development of WISP hardware and firmware now takes place in the Sensor Systems laboratory at the University of Washington, but design files and firmware are open source, and anyone can contribute to the project!
The WISP is a battery-free platform with a software-defined implementation of a UHF RFID tag, and conforms to a subset of the EPC Class 1 Generation 2 (EPC C1G2) standard for UHF RFID tags. The WISP can communicate with commercial-off-the-shelf RFID readers, and is powered by the carrier signal emitted by the reader. The operating range of the WISP 5 in free space is at least 8 meters away from a reader emitting 30dBm (maximum power allowed by the FCC) into a 9dBic circularly polarized antenna (a typical antenna type used in RFID systems).
The WISP is built entirely from commercial-off-the-shelf components; there is no custom silicon on the WISP. This allows low cost, and also allows WISP users to fabricate their own WISPs or WISP-based platforms if desired.
The WISP consumes more power during operation than is typically available from the reader's carrier signal, and therefore must duty-cycle (toggle between sleeping and active modes). Therefore, unlike a normal RFID tag, unless the WISP is very close to the reader it will often miss reader commands, and will not always respond as expected based on the protocol specification. Luckily, the EPC C1G2 protocol is robust to transiently-powered tags such as the WISP, and still performs very well!
Required Tools
To be able to use the WISP5, you'll need the following tools:
The WISP5 itself. If you're interested in obtaining WISPs, please contact mailwisp@gmail.com to check on availability and pricing. You can also build your own WISPs, just please check availability of all components before proceeding with your build. Design files are all online at github.com/wisp/wisp5-hw.
An FCC-compliant Impinj Speedway R420 or R1000 reader. The WISP5 is not tested for use with any other RFID reader model, or with the versions of the R420 or R1000 sold in countries other than the USA. Anecdotal evidence suggests that the WISP5 does NOT work with other readers or with non-FCC (non USA) Impinj Speedway R420 and R1000 readers. Even the R220 is incompatible with the WISP5. It is NOT a simple process to make the WISP5 compatible with other readers, but several efforts are ongoing. Please ask a question in the discussion board if you're interested in other reader compatibility.
An MSP-FET430UIF debugging tool. Note that the less expensive eZ430 debugging tools do NOT work with the MSP430FR5969 microcontroller used by the WISP5, so you MUST use the MSP-FET430UIF or check that your debugging tool is compatible.
The WISP5 programming adapter, which allows you to connect the 14-pin connector used by the MSP-FET430UIF to the four-pin SBW programming header on the WISP5. Request the adapter from mailwisp@gmail.com, or spin your own adapter. Design files can be found here
Code Composer Studio. We currently use TI's Code Composer Studio (CCS) for main branch firmware development. Please check the firmware repository README file to see which version of CCS we currently recommend. We are aware of the demand to switch to a GCC toolchain such as mspgcc/mspdebug, but there is significant effort required in making the switch while maintaining CCS compatibility. Please post to the discussion board if you're interested in helping with an mspgcc port of the wisp5 firmware.
Cloning the Firmware Repository
To develop your WISP5 application, you'll need access to the WISP5 firmware. We use the git distributed version control system to manage firmware revisions and branches, and the github.com hosting service for collaboration among WISP5 developers.
You should first make a choice about how you'll manage version control for your own WISP5 firmware development effort. If you're OK with publicly visible code, you should immediately fork the wisp5 firmware repository at github.com/wisp/wisp5. This will make it very simple for you to merge in bugfixes and updates from the main repository. If you choose to do this (and we recommend that you do), your very first step will be to make the fork using your own github.com account as the target. If you choose not to do this, simply skip the forking step.
You'll now need to install a git client in order to get access to the firmware repository. We recommend the command line tools directly available from here.
Once you install the git client, open a terminal (in Linux or Mac OS) or open the “git bash” application (in Windows) and type the following commands to create a local clone (copy) of the remote repository:
For users who forked the repository in step 1, type the following replacing username with your github user name:
git clone https://github.com/username/wisp5
For users who did not fork the repository in step 1, type:
git clone https://github.com/wisp/wisp5
You should now see a folder in your current working directory called wisp5. Next you'll go into that folder and check out the appropriate branch for your purposes. The branches represent slightly different versions of the firmware which haven't yet been consolidated. In our case our “master” and “640kHz” branches represent two different sets of EPC C1G2 protocol parameters. If you want to know what each branch is all about, just open the README.md file in the root directory of the repository once you checkout a branch.
First move into the firmware repository folder by typing:
cd wisp5
If you're using an Impinj Speedway R420, please checkout the 640kHz branch of the repository:
git checkout 640kHz
If you're using an Impinj Speedway R1000, you can use either the master branch (the branch you're on by default) or the 640kHz branch.You're now ready to begin development. Open Code Composer Studio and set it's workspace directory to wisp5/CCS.
Once Code Composer is open, go to Projects → Import Existing and import the several projects in wisp5/CCS. The README.md file in the root directory of the repository will guide you from here!
Programming the WISP
After you have imported the projects in the CCS, you will see 4 different projects in the CCS.
run-once
simpleAckDemo
accelDemo
wisp-base
wisp-base project is the black box of the firmware. This project is the main core of RFID C1G2 protocol control and handling. It is necessary for all the developers to dig into this project, although we highly recommend to go ahead and make your changes in this project if you are interested.
First step is to go ahead and right click on “wisp-base” project and press “Build Project”. After the build is done without error, it is highly recommended that you program your WISP5 with “run-once” project and run this project on your WISP5 just once (as the name indicate that!). Below is how to do this step:
Connect the MSP-FET430UIF debugger to your WISP5 hardware using the programmer adapter board (as shown in the picture below) and program your WISP5.
WISP5 connected to programmer cable using adapter board.
Double click on the “run-once” project and push the icon showed in the picture below.
Debug icon in Code Composer Studio
This button will run the WISP5 off of debugger. After the debug process is done, keep an eye on the LED that is on top side of WISP5 and push the play button on the CCS. The LED should blink shortly, it may be that you were looking to the bottom side LED, so redo this step and keep your eye on the other LED. If again it did not blink there is something wrong with either your setup or your WISP5 hardware. So please let us know the problem through WISP5 discussion board and we will help you fix the problem. Please note that for every WISP5 hardware you just need to do this step once after that this is not necessary to do that ever.
After completing the previous part successfully, double click on the “simpleAckDemo” project and push the debug icon. After programming process is done you can disconnect your WISP5 from the debugger. Your WISP5 is now ready to talk to R1000 or R420 reader based on the version of the branch of the code that you checked out from the repository.
Reader Hardware and Network Setup
To get started with your WISP you will need to setup a compatible RFID reader.
Reader hardware setup
To get started with the reader it needs to be connected. Exact instructions may be found in the device's manual.
Below we show a minimal setup for the Impinj Speedway R1000:
Reader: The Impinj Speedway R1000 reader.
Antenna: An antenna suitable for the RFID frequency range. Shown a Laird S9028PCR 902-928MHz RHC antenna.
Network: A network cable may be connected to reader at the 10/100 BASE-T or Ethernet port. You could set the reader to use a static IP address or let it use a DHCP provided one. For the remainder of the tutorial assumes that you know the IP address of you reader.
Power: The reader needs a power supply, shown a Impinj 24V switching power supply, connected to the +24V DC port.
Antenna Connection: The antenna needs to be connected to the reader. In theory you could connect the antenna to each of the antenna inputs, the rest of the tutorial assumes you connect it to the ANT 1 input.
You can do a simple read test of your WISP5s using the Impinj Multireader application. See the discussion post here for more detail: https://wisp5.wikispaces.com/share/view/74066824
Basic hardware setup for an Impinj R1000 reader.
Reader software setup
We recommend using the SLLURP library which can be found at github.com/ransford/sllurp.
You should first make a choice about how you'll manage version control for your own SLLURP firmware development effort. If you're OK with publicly visible code, you should immediately fork the sllurp firmware repository at github.com/ransford/sllurp. This will make it very simple for you to merge in bugfixes and updates from the main repository. If you choose to do this (and we recommend that you do), your very first step will be to make the fork using your own Github account as the target. If you choose not to do this, simply skip this step.
As with the WISP repository, you'll now need to install a git client in order to get access to the firmware repository. We recommend the command line tools directly available from here.
Once you install the git client, open a terminal (in Linux or Mac OS) or open the “git bash” application (in Windows) and type the following commands to create a local clone (copy) of the remote repository:
For users who forked the repository in step 1, type the following replacing username with your github user name:
git clone https://github.com/username/sllurp
For users who did not fork the repository in step 1, type:
git clone https://github.com/ransford/sllurp
You should now see a folder in your current working directory called “sllurp”. Move into the firmware repository folder by typing.
cd sllurp
(optional) If you are experiencing 'module not found' errors during the next steps you will have to run the setup script by running:
python ./setup.py install
You are now ready to run the demo applications which can be found in the “bin” folder! For instance, to communicate with a WISP5 which has been programmed with the code in the 640kHz branch of the firmware repository, use the following command:
sllurp inventory -n 1 -T 7140 -M WISP5 –mode-identifier 0 [ipaddr]
Using the WISP with the Reader
We recommend you use sllurp as described in the previous section. If you don't need/want to go through the trouble of setting it up, or if you're having problems with sllurp, you can also do a simple read test of your WISP5s using the Impinj Multireader application. See the discussion post here for more detail: