RF(H)ID

A USB RFID reader with integrated RGB dot matrix display

Marc Boon, November 2008

Abstract

rfidea with 'ik' tag

RF(H)ID is a USB RFID reader with an integrated 5x5 RGB dot matrix LED display. It runs from a build-in Li-ion battery, which is charged from the USB bus. The device can operate stand-alone, as a portable Human Interface Device, or be part of a larger installation, connected by USB to a host computer.

The main functions of RF(H)ID are reading RFID tags, and displaying simple graphics or animations on its 5x5 RGB dot matrix display. These two functions are independent, but can be connected by means of a configuration file stored in the device.

When connected to a host computer, RF(H)ID can send tag ids to the host by emulating a standard HID keyboard. Upon detection of a RFID tag, its id is send to the currently active application as a series of key strokes.
Alternatively, the device can be configured to send tag ids to a host computer using the OSC protocol, compatible with many real-time audio-visual performance tools, such as MAX/MSP/Jitter, SuperCollider, etc.

To facilitate the storing of configuration files, RF(H)ID appears as a Mass Storage Device when connected to a host computer, just like a familiar USB Flash Drive. The configuration file can be moved to the device by a drag-and-drop action in the host computer's Graphical User Interface.

Thanks to using standard HID and MSD device profiles, there is no need to install any drivers. RF(H)ID is platform independent, and works on any operating system which supports USB.

Hardware design

RF(H)ID is build around a PIC18LF2550 microcontroller from Microchip. This microcontroller has a full-speed USB interface, 32Kb of Flash memory for code, and 2Kb of RAM. Besides the microcontroller, RF(H)ID contains a MFRC530 Mifare Reader from NXP Semiconductor, a STP16CP05 16-channel LED driver from ST Micro-electronics, and a Microchip 25LC1024 1Mbit serial EEPROM for storing files.
Power is provided by a 1600mAh Li-ion battery pack (a replacement battery for a Palm-III PDA). The battery is charged from the USB bus by a Microchip MCP73831 Li-ion charger circuit.

Configuration

The configuration file is in XML format. A simple config.xml file looks like this:

<rfhid>
    <options>
        <keyboard>off</keyboard>
    </options>
    <whitelist>
        <id>6AF93BEF</id>
        <id>DAB96DA0</id>
        <id>041580F9232580</id>
    </whitelist>
</rfhid>