Freerunner RFID Board
NOTE: This is work in progress and quite incomplete
The FRIDB realizes an experimental platform for RFID (13.56 MHz). It consists of an Antenna, a ST Micro M24LR64 RFID-Tag Chip with 64kbit EEPROM and I2C port and a Texas Instruments TRF7960 RFID reader chip with SPI interface.
So you can make the Freerunner either a RFID tag (e.g. to open doors) or a RFID reader (to read/write standard tags e.g. in credit card format).
The FRIDB can also connected to other Microcontrollers and SoC (e.g BeagleBoard) since it has splitted I/O and power supply.
The board comes with three parts that can/must be separated:
The antenna is a printed loop designed for a typical center frequency of 13 MHz with a capacitor of 56pF.
It can be fixed by tape instead of the battery cover or mounted externaly.
By connecting the I2C EEPROM (ST Micro M24LR64) to the antenna and to the main CPU by I2C, the unit can be used as a dual-port RFID Tag. I.e. the tag can either be read or written through RFID (even if the main device has no power) or through the CPU. A typical scenario could be to personalize the device or to receive online-purchased tickets and store them in the tag so that they can be read out through RFID - even if the battery of the device is down.
The Tag module fits into the area above the SIM/SD card reader of the Openmoko Freerunner. It is up to you to wire the board to the Freerunner main board in a way that you can still swap SD cards and/or SIM cards.
The tag is compatible to readers that support:
- ISO 15693
- ISO 18000-3 mode 1
By connecting the Reader through the SPI interface (TI TRF7960) it is possible to use the Freerunner as a RFID reader.
The Reader module fits into the area above the SIM/SD card reader of the Openmoko Freerunner. It is up to you to wire the board to the Freerunner main board in a way that you can still swap SD cards and/or SIM cards.
The Reader chip supports these standards:
- ISO 14443A (Mifare)
- ISO 14443B
- ISO 15693
- ISO 18000-3
Note: you can't use reader and tag in parallel. At least we have not tried. The protocols should be able to handle this case since there is a collision detection mechanism to separate multiple tags. What is not known is how to connect both devices to a single antenna. Maybe through a high-ohm resistor (to attenuate the TX signal from the RFID reader and two capacitors (to separate the DC components).
The project home is http://projects.goldelico.com/p/fridb/. There, you can find background information, instructions, software etc.
Schematic and board layout files are available in CadSoft EAGLE 5.x format from http://projects.goldelico.com/p/fridb/downloads/.
The locations where to connect the I2C wires in a Freerunner are shown on the photo on the right side
- ANT1, ANT2 (TP27, TP28): solder two wires to connect the antenna
- VCC (TP8): +1.8V - +3.3V, available at the AUX-Switch
- SCL, SDA (TP18, TP9): Serial clock and data, get it from testpoints at the debug connector
- GND (TP19): Ground, available from the (big) decoupling capacitor next to the accelerometer
- EN0, EN1 (TP24, TP23): select address; usually connect to GND (I2C address 0x50)
- ANT, VSS (TP26, TP25): solder two wires to connect the antenna
- VIN (TP22): +2.7 - +5.5V, main power available at the AUX-Switch
- VIO (TP21): +1.8 V - VIN, IO power available at the AUX-Switch
- SCLK (TP14): SPI clock input (mandatory)
- SOMI (TP16): SPI data from reader to CPU (mandatory)
- SIMO (TP17): SPI data from CPU to reader (mandatory)
- IRQ (TP7): positive interrupt impulse (should be connected to a GPIO)
- SS (TP14): SPI chip select (only used in SPI with SS mode)
- EN (TP15): chip enable (optional to power down chip)
- EN2 (TP4): second chip enable (optional to power down chip)
- CLK (TP3): optional 60kHz / 13 MHz clock output to drive an external MCU
- MOD (TP1): external TX modulation input
- ASK (TP2): external RX demodulator output
interface mode selection
NOTE: R4, R5, R7, R8 choose the interface mode:
- R4, R5, R8 soldered: SPI without SS mode (default)
- R4, R7, R8 soldered: SPI with SS mode - also connect TP14, TP16, TP17
- none soldered: parallel mode - also connect TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17
The best way to connect the FRIDB to your Freerunner is to solder four wires to...
Here is a PDF with an overview of the Installation.
- TRF7960: http://focus.ti.com/lit/ds/slou186f/slou186f.pdf
- M24LR64: http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00217247.pdf
some C-code for a U-Boot API is available to do some preliminary SPI communication (e.g. read/write registers). It is tested on a BeagleBoard and supports "SPI without SS" by using GPIO mode.
Here is a very raw Idea for an interface from user space:
Set power mode
echo "5" >/sys/.../rfid/power
echo "2" >/sys/.../rfid/protocol
Trigger scanning for tags
Get list of found tags
ls -l /sys/.../rfid/tags/
Get signal strenght of specific tag
Read data from tag EEPROM
n/a yet. Volunteers welcome!
What we most likely need is a Card scanner application (i.e. one that lists when tags come to vicinity). And it would be nice to read/write content (which is unfortunately not quite standardized).
And we should have a keyboard driver that pressing the AUX button "types" the ID of the current card plus a Newline. This would allow to use the card scanner like a barcode scanner.
Please write to the discussion page.