Freerunner RFID Board

From Openmoko

(Difference between revisions)
Jump to: navigation, search
m
m (Pinout)
Line 43: Line 43:
 
[[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
+
* '''ANT1''', '''ANT2''' (TP27, TP28): solder two wires to connect the antenna
* '''OE''': Output enable from the frequency generator. Pull this pin high to enable the CLK output
+
* '''VCC''' (TP8): +1.8V - +3.3V, available at the AUX-Switch
* '''CLK''': Clock output from the frequency generator.
+
* '''SCL''', '''SDA''' (TP18, TP9): Serial clock and data, get it from testpoints at the debug connector
* '''LED controller 0-3''': LED current sinks. Connect LEDs in series with current limiting resistors from VCC to these pads.
+
* '''GND''' (TP19): Ground, available from the (big) decoupling capacitor next to the accelerometer
* '''12-Bit A/D 0-3''': Analog to digital converter inputs. They can operate single ended or differencial. The reference voltage is VCC.
+
* '''EN0''', '''EN1''' (TP24, TP23): select address; usually connect to GND (I2C address 0x50)
* '''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.
+
 
 +
=== 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]]

Revision as of 19:38, 7 April 2011

Freerunner RFID Board

NOTE: This is work in progress and quite incomplete

Contents

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:

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.

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.

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

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

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

RFID Tag

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

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

Data Sheets

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/fridb/source/tree/master/u-boot

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


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.

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.

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 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:

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.

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.

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

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

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

RFID Tag

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

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

Data Sheets

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/fridb/source/tree/master/u-boot

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


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.

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.