Freerunner RFID Board
From Openmoko
(→Pinout) |
(fixed link to U-Boot source file) |
||
(8 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
[[Image:FRIDBTopBottom.JPG|Freerunner RFID Board|thumb]] | [[Image:FRIDBTopBottom.JPG|Freerunner RFID Board|thumb]] | ||
− | NOTE: This is work in progress and quite incomplete | + | NOTE: This page is work in progress and quite incomplete. If you want to improve, please volunteer. |
=Features= | =Features= | ||
Line 8: | Line 8: | ||
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). | 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 board comes with three parts that can/must be separated: | ||
− | |||
− | |||
− | |||
− | + | == Antenna == | |
− | + | 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. | ||
+ | |||
+ | == RFID-Tag == | ||
+ | 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. | 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 | + | The tag is compatible to readers that support: |
+ | * ISO 15693 | ||
+ | * ISO 18000-3 mode 1 | ||
− | == | + | == RFID-Reader == |
− | + | 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 | ||
+ | |||
+ | == both == | ||
+ | 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). | ||
=Documentation= | =Documentation= | ||
Line 31: | Line 51: | ||
[[Image:FRIDB-Pinout.jpg|Pinout: Bottom side, Top side|thumb]] | [[Image:FRIDB-Pinout.jpg|Pinout: Bottom side, Top side|thumb]] | ||
[[Image:I2C-testpoints.png|I2C testpoints|thumb]] | [[Image:I2C-testpoints.png|I2C testpoints|thumb]] | ||
− | * ''' | + | |
− | * ''' | + | === RFID Tag === |
− | * '''GND''': Ground, available from the (big) decoupling capacitor next to the accelerometer | + | |
− | * ''' | + | 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) | ||
+ | |||
+ | === RFID Reader === | ||
+ | |||
+ | ==== mandatory ==== | ||
+ | * '''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) | ||
+ | ====optional==== | ||
+ | * '''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) | ||
+ | ====extended==== | ||
+ | * '''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 | ||
[[Image:FRIDB-top.JPG|Top side with the M24LR64 and the TRF7960|thumb]] | [[Image:FRIDB-top.JPG|Top side with the M24LR64 and the TRF7960|thumb]] | ||
Line 54: | Line 100: | ||
===Software installation=== | ===Software installation=== | ||
− | |||
− | |||
− | |||
Line 65: | Line 108: | ||
==Software== | ==Software== | ||
===U-Boot driver=== | ===U-Boot driver=== | ||
− | some C-code for a U-Boot API is available to do some preliminary SPI communication (e.g. read/write registers). | + | some C-code for a U-Boot API is available to do some preliminary SPI communication (e.g. read/write registers). It is tested |
− | Link: http://projects.goldelico.com/p/ | + | on a BeagleBoard and supports "SPI without SS" by using GPIO mode. |
+ | |||
+ | Link: http://projects.goldelico.com/p/gta04-uboot/source/tree/gta04e/board/goldelico/beagle-expander/trf7960.c | ||
===Kernel drivers=== | ===Kernel drivers=== | ||
Upcoming. | Upcoming. | ||
+ | |||
+ | Here is a very raw Idea for an interface from user space: | ||
+ | |||
+ | Set power mode | ||
+ | echo "5" >/sys/.../rfid/power | ||
+ | |||
+ | Set protocol | ||
+ | echo "2" >/sys/.../rfid/protocol | ||
+ | |||
+ | Trigger scanning for tags | ||
+ | echo >/sys/.../rfid/scan | ||
+ | |||
+ | Get list of found tags | ||
+ | ls -l /sys/.../rfid/tags/ | ||
+ | |||
+ | Get signal strenght of specific tag | ||
+ | cat /sys/.../rfid/tags/uid/rssi | ||
+ | |||
+ | Read data from tag EEPROM | ||
+ | cat /sys/.../rfid/tags/uid/data | ||
+ | |||
===Userspace software=== | ===Userspace software=== | ||
Line 88: | Line 154: | ||
= User Reports = | = User Reports = | ||
− | Please write to the discussion page. | + | Please write to the [[Talk:Freerunner_RFID_Board|discussion page]]. |
[[Category:Neo FreeRunner reworks and mods]] | [[Category:Neo FreeRunner reworks and mods]] |
Latest revision as of 11:35, 19 May 2011
NOTE: This page is work in progress and quite incomplete. If you want to improve, please volunteer.
Contents |
[edit] Features
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:
[edit] Antenna
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.
[edit] RFID-Tag
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
[edit] RFID-Reader
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
[edit] both
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).
[edit] Documentation
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/.
[edit] Pinout
[edit] RFID Tag
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)
[edit] RFID Reader
[edit] mandatory
- 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)
[edit] optional
- 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)
[edit] extended
- 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
[edit] 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
[edit] Installation
[edit] Hardware installation
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.
[edit] Software installation
[edit] Data Sheets
- TRF7960: http://focus.ti.com/lit/ds/slou186f/slou186f.pdf
- M24LR64: http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00217247.pdf
[edit] Software
[edit] U-Boot driver
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.
[edit] Kernel drivers
Upcoming.
Here is a very raw Idea for an interface from user space:
Set power mode
echo "5" >/sys/.../rfid/power
Set protocol
echo "2" >/sys/.../rfid/protocol
Trigger scanning for tags
echo >/sys/.../rfid/scan
Get list of found tags
ls -l /sys/.../rfid/tags/
Get signal strenght of specific tag
cat /sys/.../rfid/tags/uid/rssi
Read data from tag EEPROM
cat /sys/.../rfid/tags/uid/data
[edit] Userspace software
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.
[edit] Availability
The handheld-linux.com team kindly offered to retail the FRIDB. You can find it here.
[edit] User Reports
Please write to the discussion page.