Freerunner RFID Board

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(New page: thumb NOTE: This is work in progress and quite incomplete =Features= The FRIDB realizes an experimental platform for RFID (13.56 MHz)....)
 
(fixed link to U-Boot source file)
 
(12 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=
  
The FRIDB realizes an experimental platform for RFID (13.56 MHz). It consists of an Antenna, a ST Micro M24LR64 RFID-Tag Chip with EEPROM port and a Texas Instruments TRF7960 RFID reader chip with SPI interface.
+
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).
 
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
 
* RFID-Tag with I2C EEPROM (ST Micro M24LR64)
 
* RFID-Reader with SPI interface (TI TRF7960)
 
  
Either the Tag or the Reader module fits into the area above the SIM/SD card reader of the Openmoko Freerunner.
+
== 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 FRIDB can also connected to other Microcontrollers and SoC (e.g BeagleBoard) since it has splitted I/O and power supply.
+
The tag is compatible to readers that support:
 +
* ISO 15693
 +
* ISO 18000-3 mode 1
  
===Expansion pads===
+
== RFID-Reader ==
The supply voltage as well as the SPI / I2C bus is routed to testpads at the end of the board.
+
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 30: 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]]
* '''VCC''': +3.3V, available at the AUX-Switch
+
 
* '''VIO''': +1.8 V - +3.3V, available at the AUX-Switch
+
=== RFID Tag ===
* '''GND''': Ground, available from the (big) decoupling capacitor next to the accelerometer
+
 
* '''SCL''', '''SDA''': Serial clock and data, get it from testpoints at the debug connector
+
The locations where to connect the I2C wires in a Freerunner are shown on the photo on the right side
* '''OE''': Output enable from the frequency generator. Pull this pin high to enable the CLK output
+
 
* '''CLK''': Clock output from the frequency generator.
+
* '''ANT1''', '''ANT2''' (TP27, TP28): solder two wires to connect the antenna
* '''LED controller 0-3''': LED current sinks. Connect LEDs in series with current limiting resistors from VCC to these pads.
+
* '''VCC''' (TP8): +1.8V - +3.3V, available at the AUX-Switch
* '''12-Bit A/D 0-3''': Analog to digital converter inputs. They can operate single ended or differencial. The reference voltage is VCC.
+
* '''SCL''', '''SDA''' (TP18, TP9): Serial clock and data, get it from testpoints at the debug connector
* '''Touch electrodes 0-6''': Connect these pads to a larger conducting area to use it as touch sensor. The inputs 0-3 can also be used to drive LEDs. Refer to the datasheet for more information.
+
* '''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]]
 
[[Image:FRIDB-bottom.JPG|Bottom side |thumb]]
 
[[Image:FRIDB-bottom.JPG|Bottom side |thumb]]
 +
[[Image:FRIDB-install.JPG|Installation location |thumb]]
 +
 +
[[Image:FRIDB-antenna.JPG|potential Antenna position |thumb]]
  
 
==Installation==
 
==Installation==
Line 51: Line 101:
 
===Software installation===
 
===Software installation===
  
==Issues==
 
'''Known HW or SW Issues'''
 
  
 +
==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
  
 
==Software==
 
==Software==
 +
===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.
 +
 +
Link: http://projects.goldelico.com/p/gta04-uboot/source/tree/gta04e/board/goldelico/beagle-expander/trf7960.c
 +
 
===Kernel drivers===
 
===Kernel drivers===
 
Upcoming.
 
Upcoming.
  
====Bugs====
+
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===
  
 
n/a yet. Volunteers welcome!
 
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.
  
 
=Availability=
 
=Availability=
Line 71: 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

Freerunner RFID Board

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

File:FRIDB-Pinout.jpg
Pinout: Bottom side, Top side
I2C testpoints

[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
File:FRIDB-top.JPG
Top side with the M24LR64 and the TRF7960
Installation location
potential Antenna position

[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

[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.

Link: http://projects.goldelico.com/p/gta04-uboot/source/tree/gta04e/board/goldelico/beagle-expander/trf7960.c

[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.

Personal tools
Freerunner RFID Board

NOTE: This is work in progress and quite incomplete

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 EEPROM 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 board comes with three parts that can/must be separated:

  • Antenna
  • RFID-Tag with I2C EEPROM (ST Micro M24LR64)
  • RFID-Reader with SPI interface (TI TRF7960)

Either the Tag or 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 FRIDB can also connected to other Microcontrollers and SoC (e.g BeagleBoard) since it has splitted I/O and power supply.

Expansion pads

The supply voltage as well as the SPI / I2C bus is routed to testpads at the end of the board.

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/.

Pinout

File:FRIDB-Pinout.jpg
Pinout: Bottom side, Top side
I2C testpoints
  • VCC: +3.3V, available at the AUX-Switch
  • VIO: +1.8 V - +3.3V, available at the AUX-Switch
  • GND: Ground, available from the (big) decoupling capacitor next to the accelerometer
  • SCL, SDA: Serial clock and data, get it from testpoints at the debug connector
  • OE: Output enable from the frequency generator. Pull this pin high to enable the CLK output
  • CLK: Clock output from the frequency generator.
  • LED controller 0-3: LED current sinks. Connect LEDs in series with current limiting resistors from VCC to these pads.
  • 12-Bit A/D 0-3: Analog to digital converter inputs. They can operate single ended or differencial. The reference voltage is VCC.
  • Touch electrodes 0-6: Connect these pads to a larger conducting area to use it as touch sensor. The inputs 0-3 can also be used to drive LEDs. Refer to the datasheet for more information.
File:FRIDB-top.JPG
Top side with the M24LR64 and the TRF7960

Installation

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.

Software installation

Issues

Known HW or SW Issues


Software

Kernel drivers

Upcoming.

Bugs

Userspace software

n/a yet. Volunteers welcome!

Availability

The handheld-linux.com team kindly offered to retail the FRIDB. You can find it here.


User Reports

Please write to the discussion page.