NFC mit Android und Arduino

Inhaltsverzeichnis
1.

NFC mit Android und Arduino

Near Field Communication für Maker

Tom Igoe

Don Coleman

Brian Jepson

Thomas Demmig

Inhaltsverzeichnis

1. Einleitung

Für wen dieses Buch gedacht ist

Literaturempfehlungen

Um was es in diesem Buch geht

Was Sie benötigen

Hardware

Software

Weitere nützliche NFC-Apps

In diesem Buch genutzte Konventionen

Danksagungen

2. NFC und RFID

Was ist RFID?

Was ist NFC?

Wie RFID arbeitet

RFID-Standards

Wie NFC funktioniert

NFC Data Exchange Format (NDEF)

Die Architektur von NFC

NFC-Tag-Typen

Wo Sie Tags erhalten

Passende Devices und Tag-Typen

Was Sie mit NFC machen können

Zusammenfassung

3. Einstieg mit PhoneGap und der PhoneGap-NFC-Bibliothek

Warum Android?

Hallo Welt! Ihre erste PhoneGap-App

Die Entwicklungsumgebung einrichten

Die Android-Plattform-Tools installieren

Node.js und npm installieren

Das Cordova CLI für PhoneGap installieren

Ein PhoneGap-Projekt erstellen

Die wichtigsten Dateien

Eine einfache Locator-App

PhoneGap trifft NFC: NFC-Leser

Das NFC-Plugin installieren

Die NFC-Leser-App schreiben

Problembehebungen

Zusammenfassung

4. Einführung in NDEF

NDEF-Struktur

Type Name Format

Payload-Typ

URIs in NDEF-Nachrichten

Payload-Kennung

Payload

Datensatz-Layout

Datensatz-Header

Wie groß kann eine NDEF-Nachricht sein?

Datensätze aufteilen

Weitere Informationen

NDEF in der Praxis

Eine Tag-Writer-Anwendung: Foursquare Check-In

Einen NDEF-Datensatz auf ein Tag schreiben

Verschiedene Datensatz-Typen schreiben

Zusammenfassung der PhoneGap-NFC NDEF-Hilfsfunktionen

Zusammenfassung

5. Auf NDEF-Nachrichten lauschen

Event-Listener des PhoneGap-NFC-Plugins

Eine NDEF-Reader-Anwendung

Auf mehrere Events lauschen

Die NDEF-Nachrichten lesen

Tags anhand des Datensatz-Typs filtern

Anhand des MIME-Types filtern

Das Tag Dispatch System von Android

Intent-Typen

Android Application Records

Zusammenfassung

6. Eine NFC-Anwendung in der Praxis

Die Benutzerinteraktion

Lernen Sie Hue kennen

Das Datenformat von Hue

Die REST-API von Hue

Die Android-Shell

Die PhoneGap Media-API

Die Benutzeroberfläche

Der Anwendungscode

Verwaltungs-Funktionen

Globale Event-Handler

Kommunikation mit dem Hub

Event-Handler für die Lampensteuerung

Event-Handler für die Musiksteuerung

NFC-Event-Handler

Background Dispatch verwenden

Zusammenfassung

7. Einführung in Arduino und NFC

Digital trifft real: Der Arduino

Der Hardware-Kern von NFC

Die Entwicklungsumgebung für den Arduino

Serielle Kommunikation

Arduino-Bibliotheken installieren

Die Arduino NDEF-Bibliothek

NDEF auf dem Arduino lesen

NDEF auf dem Arduino schreiben

Eine Mikrocontroller-NFC-Anwendung: Hotel-Schlüsselkarten

Interaktion und Datenformat

Das Arduino NDEF Writer Device

Das Arduino NDEF Reader- und Door Lock Device

Eine Browser-Oberfläche für das Arduino NDEF Writer Device

Anwendungs-Spezifikation in Node.js: package.json

Der Code für die Clientseite

Der Code auf Serverseite

Zusammenfassung

8. Peer-to-Peer-Kommunikation

Peer-to-Peer-Nachrichten mit PhoneGap übertragen

Peer-to-Peer-Nachrichten mit PhoneGap empfangen

Handover

Statischer Handover

Handover-Nachrichten mit PhoneGap übertragen

Peer-to-Peer mit dem Arduino

Karten-Emulation

Zusammenfassung

9. NFC auf Embedded Systems

Einführung in Embedded Linux Devices und Paketmanager

Netzwerk, USB und NFC

NFC auf Embedded Linux: Überblick

Vor der Installation

Werden Sie mit Ihrem Bearbeitungs-Workflow vertraut

Machen Sie sich mit Ihrem Paketmanager vertraut

Datum und Uhrzeit setzen

Ein Download-Verzeichnis erstellen

Besonderheiten beim BeagleBone

Besonderheiten beim Raspberry Pi

Node.js auf dem Raspberry Pi installieren

Die NFC-Tools installieren

Die Libusb-Compatibility-Bibliothek installieren

Libnfc installieren

Raspberry Pi

BeagleBone Black

Die Installation auf dem Raspberry Pi oder BeagleBone testen

Libfreefare installieren

Befehlszeilen-Tools von Libnfc und Libfreefare

Lesen und Schreiben von NDEF in Node.js

Web-Oberfläche für den Tag-Writer

Interaktion mit Tags und der realen Welt

BeagleBone-Version

Raspberry Pi-Version

Zusammenfassung

A. NFC-Spezifikations-Codes

Stichwortverzeichnis

Über die Autoren

Kolophon

Kapitel 1. Einleitung

Die Entstehung dieses Buches begann ganz unschuldig im März 2011 mit einer E-Mail von Brian an Tom. Brian dachte, es wäre eine gute Idee, die zweiten Auflage eines anderen Buches über Near Field Communication, Making Things Talk, an der wir damals arbeiteten, um ein paar Zeilen zu ergänzen. Es gab schon ein Kapitel zur Radio Frequency Identification (RFID) im Buch – was konnte daran so schwer sein? Zweieinhalb Jahre später hatten wir viel über NFC gelernt und mit Don Coleman, dem Autor des NFC-Plugins für PhoneGap, einen ausgezeichneten, sachkundigen Mitstreiter gefunden.

Obwohl NFC viel Potenzial bietet, wurde der Großteil der vorhandenen Texte nicht für den Gelegenheitsprogrammierer geschrieben. Bisher wurde davon ausgegangen, dass Sie auf der Suche nach Informationen zu NFC ganz unten, sozusagen auf der Platine beginnen. Sie mussten die Details der verschiedenen beteiligten RFID-Spezifikationen verstehen und Code schreiben, der den Bytestream eines NFC-Lesers Byte für Byte auswertet. Es ist zwar nützlich, auch diese Ebene zu verstehen, aber unserer Einschätzung nach fände, NFC eine größere Verbreitung, wenn sich die Programmierer darauf konzentrieren könnten, wofür sie NFC einsetzen möchten, statt sich mit den ganzen Grundlagen herumschlagen zu müssen. Die PhoneGap-Bibliothek von Don ist das beste Tool, das wir für diesem Zweck finden konnten. Hiermit können Sie NFC-Kommunikation so einsetzen, wie es sich die Designer aus dem NFC-Forum wohl vorgestellt haben: Sie beschäftigen sich mit den auszutauschenden Nachrichten und kümmern sich nicht um den Rest.

Ein Großteil dieses Buches orientiert sich an dieser Idee. Sie werden die Grundlagen des NFC Data Exchange Format (NDEF) kennenlernen, indem Sie Nachrichten vom Device zum Tag und zwischen Devices lesen und schreiben. Sie werden ein paar Beispielanwendungen kennenlernen – geschrieben für PhoneGap, Arduino oder Node.js – die auf Embedded Devices wie dem Raspberry Pi oder dem BeagleBone Black laufen. Sie werden etwas über die Muster erfahren, die beim Einsatz von NDEF zum Tragen kommen, und Sie erhalten auch eine Vorstellung von den Überlegungen, die bezüglich der Interaktion von NFC-Anwendungen mit der realen Welt angestellt werden.

State of the Art bedeutet allerdings auf jeder Plattform etwas anderes. Nicht alles, was in den Spezifikationen des NFC-Forums beschrieben ist, ist für den Gelegenheitsprogrammierer auf jeder Plattform nutzbar. Wir haben versucht, Ihnen in diesem Buch einen entsprechenden Überblick zu verschaffen. In den Kapiteln am Ende des Buches beschreiben wir den aktuellen Entwicklungsstand und wo es noch Verbesserungsbedarf gibt.

Wir hoffen, dass dieses Buch dem Gelegenheitsprogrammierer dabei hilft, ein Gespür für die Möglichkeiten von NFC zu entwickeln, und die professionellen Entwickler inspiriert, einfach anzuwendende Tools zu bauen, und auf diese Weise zu einer größeren Verbreitung von NFC beizutragen.

Für wen dieses Buch gedacht ist

Sie müssen kein ausgewachsener Profi-Programmierer sein, um dieses Buch nutzen zu können. Wir haben es für enthusiastische Programmier geschrieben – Leser, die schon über manches Wissen verfügen, es sich eventuell aber nicht in einem »offiziellen Rahmen« angeeignet haben. Sie werden hier nicht erfahren, wie Sie Code schreiben, der unternehmensfest ist, aber Sie erhalten eine praktische Einweisung in die Near Field Communication und das Programmieren entsprechender Anwendungen für Android, Arduino und Embedded Linux.

Wir gehen allerdings davon aus, dass Sie schon über ein wenig Programmiererfahrung verfügen. Für die meisten Beispiele in diesem Buch sind Grundlagen in JavaScript und HTML sehr hilfreich. Bei den Arduino-Projekten werden wir Sie mit ein wenig C vertraut machen, aber wenn Sie JavaScript oder Java kennen, werden Sie den Code auch so verstehen. Es handelt sich dabei um fortgeschrittenere Projekte, bei denen auch ein wenig Elektronik-Erfahrung nützlich, aber nicht zwingend notwendig ist.

»Was? Ich soll noch andere Bücher lesen, um dieses Buch verstehen zu können?« Nein, aber es gibt ein paar Bücher, die wir beim Schreiben dieses Werkes hilfreich fanden. Vielleicht sind Sie auch für Sie von Nutzen.

JavaScript-Novizen sollten unbedingt JavaScript: The Good Parts von Douglas Crockford lesen. Wenn wir es uns recht überlegen, sollten Sie es auch lesen, wenn Sie JavaScript schon in- und auswendig kennen. Es hilft Ihnen, ein besserer Programmierer zu werden. Douglas Crockford erläutert klar und sauber das theoretische Fundament der Sprache und die besten Entwurfsmuster.

Für PhoneGap und Android sind die online verfügbaren Getting Started Guides die aktuellsten Referenzen: Sie finden Sie im PhoneGap Developer Portal und auf der Android Developer Site. Eine detailliertere Einführung in Android erhalten Sie in Android 4 App-Entwicklung oder Android Programming: The Big Nerd Ranch Guide.

Eine umfassende Einführung in NFC aus Ingenieurssicht liefern die NFC Forum Specifications als eigentliche Quelle aller Informationen (wir haben einen kleinen Teil in Anhang A aufgenommen). Außerdem halten wir Professional NFC Application Development von Vedat Coskun, Kerem Ok und Busra Ozdenizci für eine gute Referenz, insbesondere für erfahrene Java-Entwickler. Wir haben bewusst einen »einfacheren« Ansatz gewählt, da es sich bei vielen unserer Leser um Freizeit-Programmierer, Hacker und solche Entwickler, die sich gerne selbstironisch als Stümper bezeichnen, handelt.

Wenn Sie sich mit Arduino noch nicht auskennen, bietet Arduino für Einsteiger von Massimo Banzi einen ausgezeichneten Einstieg. Making Things Talk von Tom Igoe ist eine Hilfe für erfahrene Programmierer, die etwas darüber erfahren möchten, wie man Arduino-Projekte mit Netzwerken verbindet. Im Arduino Kochbuch von Michael Margolis finden Sie ebenfalls ein paar praktische Rezepte für Arduino-Programme.

Für Node.js, das später im Buch ins Spiel kommen wird, bietet What is Node? von Brett McLaughlin eine nette, kleine Einführung ohne Code. The Node Beginner Book von Manuel Kiessling und Hands-On Node.js von Pedro Teixeira enthalten ebenfalls hilfreiche Anleitungen für den Einstieg mit Codebeispielen.

Gute Einführungen zum Raspberry Pi oder den BeagleBone Black (siehe Kapitel 9) finden Sie in den Tutorials von Adafruit. Die Bücher Raspberry Pi für Einsteiger von Matt Richardson und Shawn Wallace sowie BeagleBone für Einsteiger von Matt Richardson sind ebenfalls sehr gut.

Um was es in diesem Buch geht

In Kapitel 2 erhalten Sie eine Einführung in die Near Field Communication (NFC) auf Grundlage eines Vergleichs mit der Radio Frequency Identification (RFID). Einfach gesprochen ist NFC eine Übermenge von RFID. Es kann das meiste, was auch das für sehr kurze Entfernungen gedachte RFID kann, und mehr. Sie erhalten eine Vorschau auf die wichtigsten Begriffe, einen Einblick in die Architektur eines NFC-Systems und Sie erfahren, welche Tools Sie benötigen und wo Sie sie erhalten.

In Kapitel 3 werden PhoneGap und das NFC-Plugin für PhoneGap vorgestellt. Sie werden die erforderlichen Tools für die Entwicklung von PhoneGap-Applikationen für Android installieren und Ihre ersten Apps bauen und ausführen. Am Ende des Kapitels werden Sie Ihr erstes NFC-Tag mit einem Android-Gerät ausgelesen haben.

In Kapitel 4 erhalten Sie einen umfassenden Überblick über das NFC Data Exchange Format (NDEF). Sie erfahren, wie es aufgebaut ist, und sehen anhand eines Anwendungsbeispiels, wie die verschiedenen grundlegenden Aufgaben mit den unterschiedlichen NDEF-Datensatz-Typen umgesetzt werden. Auf diese Weise finden Sie heraus, wie jeder Datensatz-Typ die Benutzerinteraktion unter Android beeinflusst.

In Kapitel 5 wird das Empfangen von NDEF-Nachrichten unter Android erläutert. Sie erfahren, wie Sie die verschiedenen Arten von Tags und Nachrichten filtern und wie das Android Tag Dispatch System beim Entwickeln von NFC-Apps genutzt werden kann.

In Kapitel 6 werden Sie eine vollständige NFC-Applikation für Android bauen, in der eine komplette Benutzeroberfläche enthalten ist und Audio-Wiedergabe und per Web gesteuerte Lichtschalter genutzt werden – alles über NFC-Tags. Das Ziel dieses Kapitels besteht darin, zu zeigen, wie Sie das Interaktions-Design und die Datenstrukturen planen, um NFC möglichst gut einsetzen zu können.

In Kapitel 7 wird eine weitere Plattform ins Spiel gebracht: der Arduino-Mikrocontroller. Sie werden erfahren, wie Sie mit der Arduino NDEF-Bibliothek NDEF-Nachrichten lesen und schreiben. Zudem werden Sie eine weitere komplette Anwendung mit dem Arduino und Node.js entwickeln.

In Kapitel 8 werden Ihnen Peer-to-Peer-Transfers mit NFC unter Android vorgestellt. Sie werden erfahren, wie die Datensatz-Typen, die Sie mittels Peer-to-Peer austauschen, das empfangende Gerät beeinflussen, und wie NFC größere Transfers an alternative Übertragungsmedien wie Bluetooth oder WLAN übergeben kann.

In Kapitel 9 wird der aktuelle Stand der NFC-Entwicklung auf Embedded-Linux-Plattformen anhand des Raspberry Pi und des BeagleBone vorgestellt. Sie erfahren, was mit Embedded Linux möglich ist, und lernen einige Beispielanwendungen in Node.js kennen. In diesem Zusammenhang gibt es noch viele Verbesserungsmöglichkeiten bezüglich der Nutzbarkeit – bei diesem Kapitel dürfen Sie keine Angst vor dem Umgang mit Technik haben! Sie sollten außerdem mit der Befehlszeile von Linux vertraut sein, um dieses Kapitel voll auskosten zu können. Aber hier liegen auch die spannendsten Möglichkeiten von NFC, daher sind entsprechende Vorkenntnisse durchaus von Vorteil.

Was Sie benötigen

Um den Beispielen in diesem Buch folgen zu können, benötigen Sie die entsprechende Hardware und Software. Die gesamte Software ist glücklicherweise kostenlos und die teuerste Hardware besteht in einem Android-Gerät mit NFC-Unterstützung. In den folgenden Abschnitten wird beschrieben, was Sie benötigen.

Hardware

Um die Beispiele aus dem Buch nachbauen zu können, benötigen Sie folgende Hardware:

  • ein Android-Gerät mit NFC-Unterstützung

  • diverse NFC-kompatible Tags (Prüfen Sie die Kompatibilität mit Ihren Geräten. In „Passende Devices und Tag-Typen“ finden Sie eine Übersicht dazu, welche Geräte mit welchen Tag-Typen zusammenarbeiten)

Für Kapitel 6 benötigen Sie Folgendes:

  • ein Philips Hue Beleuchtungssystem

  • ein Bluetooth-Musikempfänger (zum Beispiel den Belkin Bluetooth Musik-Empfänger oder den kabellosen Bluetooth HIFI Musik Adapter mit NFC von HomeSpot)

Für Kapitel 7 benötigen Sie Folgendes:

  • einen Arduino Uno (Er ist bei vielen Anbietern erhältlich, zum Beispiel bei Arduino, Adafruit, Seeed Studio, Watterott und anderen

  • ein NFC Shield (Sie können das PN532 NFC/RFID Controller Shield for Arduino von Adafruit, das NFC Shield oder das NFC Shield v2.0 von den Seed Studios einsetzen)

  • Wenn Sie das Adafruit Shield nutzen, sollten Sie sich von diesem Anbieter vielleicht auch ein paar lange Steckleisten besorgen.

  • ein elektrischer Türöffner (Er muss mit 12 V oder weniger laufen. Wir haben den Amico 0837L DC 12V 8W Open Frame Type Solenoid for Electric Door Lock bei Amazon gekauft. Sie sollten sich einen für Ihr Land passenden Türöffner besorgen. Adafruit verkauft ein ähnliches Produkt Lock-Style Solenoid und Seeed Studio bietet eine Reihe von Modellen an – wenn Sie also dort ein Shield bestellen, finden Sie eventuell auch einen Türöffner.)

  • einen TIP120 Darlington-Transistor

  • eine Stromversorgung für 12 V und 1000 mA (natürlich wieder für Ihr Land passend und mit 2,1 mm Innen- und 5,5 mm Außendurchmesser, wobei der Innenleiter positiv ist)

  • Schaltlitzen oder 22AWG-Kabel

  • zwei LEDs in rot und grün (Diese finden Sie bei jedem Elektronik-Händler, aber zu Referenzzwecken geben wir hier das rote LED-Pack und das grüne LED-Pack von Adafruit an.)

  • zwei 220-Ω-Widerstände für die LEDs

Für Kapitel 9 benötigen Sie Folgendes:

  • einen BeagleBone Black oder einen Raspberry Pi

  • eine Stromversorgung für Ihr Board mit 1 A oder mehr

  • ein SCL3711 Contactless USB Smart Card Reader

  • Folgende Kompnenten sind optional, aber nützlich:

    • ein USB-WLAN-Adapter für Ihr Board (Das Miniature WiFi (802.11b/g/n) Module von Adafruit funktioniert gut)

    • ein USB-A-to-A-Verlängerungskabel für Ihren NFC-Adapter

    • ein USB to TTL Cable – Debug/Console-Cable

In Tabelle 1.1 sind die elektronischen Komponenten für dieses Buch aufgeführt – mit den Teilenummern bei einigen Elektronik-Händlern, die wir regelmäßig nutzen.

Tabelle 1.1 Elektronische Komponenten, die in diesem Buch genutzt werden
TeilMakerShedJamecoDigikeySparkFunAdafruitFarnellArduinoSeeed

Widerstand 220 Ω

690700

220QBK-ND

9337792

Steckplatine

MKEL3

20723

438-1045-ND

PRT-00137

64

4692810

STR101C2M or STR102C2M

Roter Schaltdraht

MKSEEED3

36856

C2117R-100-ND

PRT-08023

1662031

Schwarzer Schaltdraht

MKSEEED3

36792

C2117B-100-ND

PRT-08022

1662027

Blauer Schaltdraht

MKSEEED3

36767

1662034

DC-Stromversorgung 12 V, 1000 mA (oder gleichwertig)

170245

TOL-00298

798

636363

Arduino Uno rev3 Mikrocontroller-Modul

MKSP11

2121105

1050-1017-ND

DEV-09950

50

1848687

A000046

ARD132D2P

Grüne LED

MKEE7

333227

COM-09592

1334976

Rote LED

MKEE7

333973

COM-09590

2062463

Blaue LED

2006764

COM-00529

1020554

Gelbe LED

MKEE7

34825

COM-09594

1939531

MIFARE RFID Tag

MKPX4

SEN-10128

NFC Shield

MKAD45

789

SLD01097P

TIP120 Darlington-Transistor

10001_ 10001_ 32993_-1

TIP120-ND

976

9294210

3,3V USB/TTL Serial Debug Cable

DEV-09717

954

BeagleBone Black

MKCCE3

2176149

BB-BBLK-000-ND

1278

2291620

ARM00100P

Raspberry Pi Model B

MKRPI2

DEV-11546

998

43W5302

Software

Um die Projekte im Buch nachvollziehen zu können, benötigen Sie die folgende Software:

  • das Android Software Development Kit (siehe „Die Entwicklungsumgebung einrichten“)

  • das Cordova CLI (Ihre Toolbox für PhoneGap (siehe „Das Cordova CLI für PhoneGap installieren“))

  • Node.js und den Node Package Manager (npm)

  • einen Texteditor (Wir mögen Sublime Text 2 als plattformübergreifenden GUI-Editor, aber Sie können jede Software nutzen, die eine reine Textdatei erzeugt.)

Für Kapitel 6 benötigen Sie Folgendes:

  • die Zepto jQuery-Bibliothek (Sie erhalten Sie über Zepto.js.)

Für Kapitel 7 sind folgende Komponenten erforderlich:

  • die Arduino IDE

  • die Seeed-Studio PN532-Bibliothek

  • die Arduino NDEF-Bibliothek (Sie erhalten Sie im GitHub-Repository von Don Coleman.)

  • die Time-Bibliothek für Arduino von Michael Margolis

Machen Sie sich keine Sorgen, dass Sie dies jetzt alles schon einrichten müssen – wir werden es Sie rechtzeitig wissen lassen, wenn Sie eine dieser Komponenten einrichten sollen.

Weitere nützliche NFC-Apps

Die folgenden Anwendungen können im Verlauf dieses Buches nützlich sein:

  • NFC TagInfo by NXP ermöglicht Ihnen das Lesen eines NFC- oder Mifare-Tags und das Auswerten des NDEF-Datensatzes.

  • NFC TagWriter by NXP bietet viele der Features, die auch bei TagInfo vorhanden sind. Zusätzlich lassen sich Tags schreiben und unformatieren, was sehr praktisch ist.

  • NFC TagInfo von den NFC Research Labs zeigt Ihnen alle Informationen über ein gegebenes Tag an. Es kann mehr als NXP TagInfo, denn Sie finden hier auch einen Memory Dump des Tags. Bei der Fehlersuche in Ihren Anwendungen ist es unbezahlbar.

Für Kapitel 4 benötigen Sie Folgendes:

  • Trigger von TagStand

  • NFC Writer (ebenfalls von TagStand)

  • TecTiles von Samsung (Dieses läuft aber nur in den USA und Kanada.)

  • App Lancher NFC Tag Writer [sic] von vvakame

  • einen Foursquare-Account (wenn Sie nicht schon einen haben) und Foursquare for Android

In diesem Buch genutzte Konventionen

Die folgenden typographischen Konventionen werden in diesem Buch genutzt:

Kursiv

Steht für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateiendungen.

Nichtproportionalschrift

Wird für Programmlistings genutzt – auch innerhalb von Fließtext für Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen oder Schlüsselwörter.

Anmerkung

Dieses Symbol kennzeichnet einen Tipp, einen Vorschlag oder eine allgemeine Anmerkung.

Warnung

Dieses Symbol zeigt einen Warnhinweis an.

Danksagungen

Uns wurde beim Schreiben dieses Buches von vielen Leuten und Organisationen geholfen. Das PhoneGap-NFC-Plugin ist Kevin Griffins Baby – er und Don haben die erste Version geschrieben und auf dem PhoneGap Day 2011 vorgestellt. Kevin Townsend von Adafruit war mit seinem umfassenden und tiefgehenden Wissen über die NXP-Software und -Hardware eine unschätzbare Hilfe. Yihui Xiong von Seeed Studio, Autor der Seeed Arduino NDEF-Bibliothek, trug maßgeblich zum Erfolg von Kapitel 7 bei. Philippe Teuwen patchte libfreefare auf sehr schnelle Art und Weise und räumte damit große Hindernisse in Kapitel 9 aus dem Weg. Derek Molloys Seiten zum BeagleBone Black waren eine nützliche Quelle. Die Bilder in diesem Buch sehen dank Jody Culkin und Fritzing.org viel besser aus. Die Korrekturleser Ben Light, Sae Huh, Gabrielle Levine, Alex Kauffmann, Fil Maj und Dominick Gruntz lieferten wertvolles Feedback.

Dieses Buch wurde außerdem nur möglich durch die geduldige Unterstützung seitens unserer Arbeitgeber und Kollegen im Interactive Telecommunications Program (ITP) der NYU, Chariot Solutions LLC, Maker Media und Arduino. Die noch größere Unterstützung durch unsere Familien und Partner war ebenfalls sehr wichtig.

Kapitel 2. NFC und RFID

Radio Frequency Identification (RFID) findet momentan eine immer größere Verbreitung im Alltag. Von Tap-and-Go-Bezahlkarten und Fahrkarten über E-ZPass-Devices, die für Mautgebühren genutzt werden, bis hin zu Tags auf und in Produkten, mit denen die Lagerbestände kontrolliert und Diebstähle verhindert werden – die meisten von uns kommen mit RFID-Tags ein paar Mal pro Woche in Kontakt und denken nie darüber nach, was sich mit dieser Technologie anstellen lässt.

In den letzten Jahren ist ein neuer Begriff im Zusammenhang mit RFID aufgetaucht: Near Field Communication (NFC). Wenn Sie Ihren technikbegeisterten Kollegen fragen, wird der vermutlich sagen: »Oh, das ist wie RFID, nur anders.« Toll, wie anders? RFID und NFC werden oft in einem Atemzug genannt, sind aber nicht das Gleiche. NFC-Leser können zwar manche RFID-Tags lesen und schreiben, NFC bietet aber mehr Möglichkeiten als RFID und damit auch mehr Einsatzbereiche. Sie können sich NFC als Erweiterung von RFID vorstellen, die auf einigen wenigen der vielen RFID-Standards aufbaut, um eine bessere Plattform zum Datenaustausch zu bieten.

Dieses Buch möchte Ihnen NFC und seine Fähigkeiten praxisbezogen vorstellen. Wenn Sie den Übungen in diesen Kapiteln folgen, werden Sie einige NFC-Anwendungen für ein Android-Gerät mit NFC-Unterstützung und für einen Arduino-Mikrocontroller erstellen. Sie werden erfahren, wo RFID und NFC Gemeinsamkeiten haben und was Sie mit NFC machen können.

Was ist RFID?

Stellen Sie sich vor, Sie sitzen abends auf Ihrer Terasse. Sie zünden ein Windlicht an und können die Nachbarskatze sehen, die gerade durch Ihren Garten stromert, weil das Licht der Kerze von ihren Augen zurückgeworfen wird. Dies entspricht passivem RFID. Das Funksignal eines passiven RFID-Lesers erreicht ein Tag, das Tag absorbiert die Energie und »reflektiert« seine Kennung zurück.

Jetzt stellen Sie sich vor, Sie zünden Ihr Windlicht an, Ihr Nachbar ist zuhause, sieht das Licht und zündet ebenfalls ein Windlicht an, so dass Sie ihn von seiner Terasse aus winken sehen können. Dies entspricht aktivem RFID. Es funktioniert über größere Abstände, weil der Empfänger seine eigene Stromversorgung besitzt und damit sein eigenes Funksignal erzeugen kann, statt mit der Energie auskommen zu müssen, die er vom Sender absorbiert.

RFID verhält sich sehr ähnlich wie diese beiden Windlichter. Sie und Ihr Nachbar kennen sich gegenseitig, aber Sie lernen nicht viel Neues übereinander. Sie tauschen keine wirklich inhaltsreichenn Nachrichten aus. RFID ist keine Kommunikations-Technik, sondern dient eher der Identifikation. RFID-Tags können kleine Datenmengen enthalten, die Sie auch über RFID-Leser lesen und schreiben können, aber die Größe ist sehr begrenzt – wir sprechen hier von ungefähr eintausend Bytes oder weniger.

Was ist NFC?

Jetzt stellen Sie sich vor, dass ein anderer Nachbar am Garten vorbeigeht. Sie sehen ihn und laden ihn zu einen kleinen Plausch auf der Terasse ein. Er setzt sich zu Ihnen, Sie betreiben ein wenig Smalltalk und arbeiten ein paar Minuten an Ihrer nachbarschaftlichen Beziehung. Das entspricht NFC.

NFC ist so entworfen, dass es auf RFID aufbaut, aber einen komplexeren Datenaustausch zwischen den Teilnehmern ermöglicht. Trotzdem können Sie mit einem NFC-Leser immer noch passive RFID-Tags lesen und deren begrenzten Speicher beschreiben. Mit NFC können Sie auch Daten in einem Standard-Format auf bestimmte Arten von RFID-Tags schreiben – unabhängig vom Tag-Typ. Außerdem ist es möglich, mit anderen NFC-Devices im Duplex-Mode (also in beiden Richtungen) zu kommunizieren. NFC-Devices können Informationen über die eigenen Fähigkeiten austauschen, Datensätze übertragen und eine umfangreiche Kommunikation über andere Kanäle aushandeln.

So ist es vielleicht möglich, Ihr NFC-fähiges Smartphone in die Nähe einer NFC-fähigen Stereoanlage zu halten. Beide Geräte können sich auf diese Weise gegenseitig identifizieren, ermitteln, dass beide WLAN unterstützen, und die Credentials für die Kommunikation darüber austauschen. Anschließend überträgt das Smartphone dann Audiodaten per WLAN an die Stereoanlage. Warum sollte das Telefon diese nicht über die NFC-Verbindung streamen? Dafür gibt es zwei Gründe: Erstens ist die NFC-Verbindung nur für kurze Entfernungen gedacht – etwa 10 cm oder weniger. Dadurch wird wenig Energie benötigt und man vermeidet Überlagerungen mit anderen Funkvarianten, die die Geräte nutzen. Zweitens ist die Übertragungsgeschwindigkeit im Vergleich zu WLAN, Bluetooth und anderen Kommunikationsprotokollen recht niedrig. NFC ist nicht dazu gedacht, umfangreiche und schnelle Übertragungen durchzuführen. Es dient für kurze Nachrichten, das Austauschen von Credentials und das Einrichten von Verbindungen. Denken Sie noch mal kurz an die Terasse zurück. Wenn Sie sich länger mit Ihrem Nachbarn unterhalten möchten, laden Sie ihn ins Haus zu einer Tasse Tee ein. Bei NFC entspricht das WLAN, Bluetooth und anderen Protokollen, die der umfassenderen Datenübertragung dienen.

Spannend an NFC ist, dass sich auf diese Weise (ausführlichere) Verbindungen und kurze Anweisungen umsetzen lassen, ohne dass man sich um Passwörter, Pairing und all die anderen komplizierten Schritte der übrigen Protokolle kümmern muss. Wenn Sie und Ihr Freund also Adressen mittels der Mobiltelefone austauschen wollen, müssen Sie die Geräte nur aneinander halten. Wenn Sie mit Ihrem Google Wallet bezahlen möchten, tippen Sie das Lesegerät wie mit einer RFID-fähigen Kreditkarte an.

Wenn Sie NFC verwenden, ermöglichen Sie dem anderen Gerät keinen Zugriff auf den gesamten Speicher – nur auf die grundlegenden Informationen für einen Datenaustausch. Sie steuern, was und an wen etwas verschickt werden kann – und was nicht.

Wie RFID arbeitet

Zu einem RFID-Datenaustausch gehören zwei Beteiligte: Ein Ziel (Target) und ein Initiator. Der Initiator, ein Tag-Leser oder Lese/Schreib-Device, beginnt den Austausch durch Erzeugen eines Funksignals. Dann lauscht er auf etwaige Reaktionen von Zielen, die das Funksignal erreicht hat. Das Ziel, ein Tag, reagiert beim Erkennen des Funksignals des Initiators. Es antwortet mit einer Unique Identifier Number (UID). RFID besitzt zwei Kommunikations-Modi: aktiv und passiv. Beim passiven RFID-Datenaustausch gibt es ein Lese/Schreibgerät und ein Tag ohne eigene Stromversorgung. Die Tags erhalten ihre Energie aus dem Funkfeld selbst. Diese ist natürlich im Allgemeinen sehr schwach, aber sie reicht aus, um ein Signal zurück an den Leser zu senden. Bei aktiver RFID-Kommunikation ist ein Ziel beteiligt, das eine eigene Stromversorgung besitzt. Dadurch kann die Antwort zurück an den Leser eine größere Distanz überwinden. E-ZPass und andere Systeme zum individuellen Erkennen im Verkehrsumfeld verwenden aktives RFID.

RFID-Tags besitzen einen kleinen Speicher – meist weniger als 1 KB. Ein Initiator-Device kann diese Daten lesen, und wenn es sich um ein Lese-/Schreib-Device handelt, auch beschreiben. Damit können Sie kleine Informationshäppchen auf der Karte unterbringen. Diese Technik wird zum Beispiel manchmal in Systemen für den öffentlichen Nahverkehr verwendet, um auf der Karte zu speichern, wie viel Geld noch vorhanden ist. Aber da RFID-Systeme im Allgemeinen mit einer Datenbank verbunden sind, ist es üblicher, einen Datensatz mit allen relevanten Informationen in einer eigenen Datenbank abzulegen und diesen über die Tag-UID zu indexieren.

RFID-Standards

Anders als die meisten glauben gibt es nicht das eine, universelle, systemübergreifende RFID-Protokoll oder genau die eine Technologie. Nein, es gibt Dutzende. RFID-Standards werden von der International Standards Organization (ISO) zusammen mit den wichtigsten Beteiligten auf dem RFID-Markt entworfen. Die ISO funktioniert dabei als Mediator, damit auch Konkurrenten in den verschiedenen Branchen interoperable Standards entwerfen können und deren Technologien irgendwann einmal kompatibel sein werden. Die verschiedenen RFID-Standards definieren die verwendeten Funkfrequenzen, die Datentransferraten, die Datenformate und so weiter. Manche dieser Standards definieren Layer eines Interoperabilitäts-Stacks, wie dies auch bei NFC der Fall ist. Andere Standards definieren eine ganz andere Klasse von Anwendungen. So wurde der Standard ISO-11784 zum Beispiel ursprünglich zum Verfolgen von Tieren entwickelt. Er arbeitet mit Frequenzen zwischen 129 und 139,4 kHz und sein Datenformat enthält Felder, mit denen die zu verfolgenden Tiere beschrieben werden können. Sie finden auch Lesegeräte, die nach dem EM4100-Protokoll arbeiten und die mit den Tags im Bereich von 125 kHz funken. Meist werden sie als Transponderkarten verwendet, die in ihrem Datenprotokoll nur sehr wenig Informationen übertragen – in der Regel nur eine UID. Die Standards von ISO-14443 wurden für Bezahlsysteme und Smartcards entwickelt. Sie arbeiten bei 13,56 MHz. Dafür enthalten sie in ihrem Datenformat zum Beispiel die Möglichkeit, Werte zu addieren oder zu subtrahieren und mit Verschlüsselung zu arbeiten. In der 14443-Familie gibt es viele verschiedene Formate, unter anderem Philips- und NXP Mifare-Tags, Sony FeliCa-Tags und NXP DESFire. Tags nach ISO-14443A sind kompatibel mit NFC, daher werden Sie diesen auf den folgenden Seiten immer wieder begegnen.

Wie NFC funktioniert

Sie können sich NFC als Erweiterung von RFID vorstellen. Zur NFC-Kommunikation gehören wie bei RFID ebenfalls ein Initiator und ein Ziel. Aber hier ist mehr möglich, als nur UIDs auszutauschen und Daten des Ziels zu lesen und/oder zu schreiben. Der interessanteste Unterschied zwischen RFID und NFC ist der, dass NFC-Ziele meist programmierbare Devices sind, zum Beispiel Smartphones. Statt also nur statische Daten aus dem Speicher zu übertragen, könnte ein NFC-Device für jeden Datenaustausch einmalig Inhalte erzeugen und zurück an den Initiator übermitteln. Wenn Sie zum Beispiel NFC für den Austausch von Kontakten zwischen zwei Telefonen nutzen, könnte das NFC-Ziel so programmiert werden, dass es nur sehr eingeschränkt Informationen übermittelt, wenn es diesem speziellen Initiator vorher noch nie begegnet ist.

NFC-Devices besitzen zwei Kommunikations-Modi. Wenn der Initiator die Energie immer per Funk liefert und das Ziel durch das Feld des Initiators mit Energie versorgt wird, handelt es sich um den passiven Kommunikations-Modus. Besitzen sowohl Initiator als auch Ziel ihre eigene Stromversorgung, dann ist es der aktive Kommunikations-Modus. Diese Modi entsprechen den normalen RFID-Kommunikationsmodi.

NFC-Devices besitzen drei Betriebs-Modi (Operation Modes). Sie können als Lese-/Schreib-Geräte arbeiten, die Daten von einem Ziel lesen und/oder auf es schreiben. Sie können Karten-Emulatoren sein und sich wie RFID-Tags verhalten, wenn sie sich im Feld eines anderen NFC- oder RFID-Devices befinden. Oder sie arbeiten im Peer-to-Peer-Modus, in dem sie Daten in beiden Richtungen austauschen.

NFC Data Exchange Format (NDEF)

Daten, die zwischen NFC-Devices und Tags ausgetauscht werden, sind mit Hilfe des NFC Data Exchange Format (NDEF) strukturiert. Diesem Begriff werden Sie häufig begegnen – NDEF ist einer der entscheidenden Vorteile von NFC gegenüber RFID. Es handelt sich um ein allgemein genutztes Datenformat, das auf allen NFC-Devices verwendet wird – unabhängig vom zugrundeliegenden Tag oder der Gerätetechnologie. Jede NDEF-Nachricht enthält einen oder mehrere NDEF-Datensätze (Records). Jeder Datensatz besitzt einen bestimmten Datensatz-Typ, eine eindeutige ID, eine Länge und die eigentlichen Daten als Payload. Es gibt ein paar verbreitete Typen von NDEF-Datensätzen. NFC-fähige Devices sollten wissen, was mit jedem dieser Typen zu tun ist:

Simple Text

Diese Datensatz-Typen enthalten einfach einen Textstring. Textnachrichten enthalten im Allgemeinen keine Anweisungen für das Ziel-Device, dafür aber Metadaten zur Sprache und zum Kodierschema (zum Beispiel UTF-8).

URIs

Diese enthalten Netzwerk-Adressen. Ein NDEF-Ziel-Device, das einen URI-Datensatz empfängt, soll diesen an eine Anwendung weiterleiten, die ihn entsprechend anzeigen kann – zum Beispiel ein Webbrowser.

Smart Posters

Diese Datensätze enthalten Daten, mit denen vielleicht ein Poster ergänzt werden soll, damit es mehr Informationen bieten kann. Das können URIs sein, aber auch andere Daten – zum Beispiel SMS-Texte über das Poster, die Sie an einen Freund schicken möchten. Ein Ziel-Device, das einen Smart Poster-Datensatz erhält, sollte abhängig vom Inhalt einen Browser, die SMS- oder E-Mail-App oder Ähnliches öffnen.

Signaturen

Diese Datensätze bieten eine Möglichkeit, vertrauenswürdige Informationen über die Herkunft von Daten in einem NDEF-Datensatz bereitzustellen.

Sie kömnnen Datensätze in einer NDEF-Nachricht kombinieren oder immer nur einen Datensatz pro Nachricht übertragen – ganz wie Sie möchten.

NDEF ist einer der wichtigen technischen Unterschiede zwischen RFID und NFC. Sowohl NFC wie auch viele der RFID-Protokolle arbeiten bei 13,56 MHz, aber RFID-Tags müssen ihre Daten nicht im NDEF-Format zurückgeben. Die verschiedenen RFID-Protokolle besitzen kein gemeinsames Datenformat.

Stellen Sie sich NDEF-Nachrichten wie Absätze und Datensätze wie Sätze vor: Ein Absatz ist eine Informationseinheit, die einen oder mehrere Sätze enthält. Ein Satz ist eine kleinere Informationseinheit, die nur genau eine »Idee« enthält. So schreiben Sie zum Beispiel vielleicht einen Absatz, dass Sie demnächst Geburtstag feiern und wo diese Feier stattfindet. Das Äquivalent als NDEF-Nachricht könnte dann ein Simple Text-Datensatz mit dem Ereignis, ein Smart Poster-Datensatz mit der Anschrift und eine URI für weitere Informationen im Web sein.

Die Architektur von NFC

Um NFC besser zu verstehen, ist es hilfreich, seine Architektur im Hinterkopf zu haben. Es gibt eine ganze Reihe von Schichten, die zu berücksichtigen sind. Die unterste Schicht ist die physikalische Schicht: Ihre CPU und die Funkhardware, die die eigentliche Kommunikation betreiben. Darüber liegen die Schicht zum Aufteilen der Daten in Pakete und die Transportschicht. Darüber wiederum folgt die Datenformat-Schicht und schließlich Ihr Anwendungscode. In Abbildung 2.1 sehen Sie die verschiedenen Schichten des NFC-Stacks.

Der Stack des NFC-Protokolls
Abbildung 2.1 Der Stack des NFC-Protokolls

In der physikalischen Schicht arbeitet NFC mit einer RFID-Funkspezifikation (ISO-14443-2), die stromsparende Funkmodule beschreibt, die bei 13,56 MHz arbeiten. Dann folgt eine Schicht, die beschreibt, wie die Datenbytes per Funk als Frames übertragen werden (ISO-14443-3). Alle Funkmodule, die Sie eventuell einsetzen, sind eigenständige Hardware-Komponenten – entweder in Ihrem Telefon oder Tablet eingebaut oder mit Ihrem Mikrocontroller oder PC verbunden. Sie kommunizieren mit dem Hauptprozessor Ihres Geräts über eines oder mehrere der Standard-Protokolle für serielle Kommunikation zwischen Devices: Universal Asynchronous Receive-Transmit (UART), Serial Peripheral Interface (SPI), Inter-Integrated Circuit Communication (I2C) oder Universal Serial Bus (USB). Wenn Sie Hardware-Fan sind, kennen Sie vermutlich die ersten drei, liegt Ihr Fokus eher auf der Software, dann ist Ihnen wohl nur USB ein Begriff.

Über dieser Schicht gibt es eine Reihe von RFID-Steuer-Protokollen, die auf zwei Spezifikationen basieren. Die ursprüngliche RFID-Steuer-Spezifikation, auf der das Lesen und Schreiben von NFC-Tags basiert, ist ISO-14443A. Die Protokolle Philips/NXP Semiconductors Mifare Classic and Mifare Ultralight und NXP DESFire sind kompatibel mit ISO-14443A. Der NFC-Peer-to-Peer-Austausch baut auf dem Steuer-Protokoll ISO-18092 auf. Sony FeliCa RFID-Karten und -Tags (vor allem in Japan verfügbar) basieren ebenfalls auf diesem Standard. Allerdings können Sie mit diesem Standard Tags lesen und beschreiben, aber trotzdem noch kein NFC nutzen.

Der erste große Unterschied zwischen NFC und RFID ist der Peer-to-Peer-Kommunikations-Modus, der mit Hilfe des Standards ISO-18092 implementiert ist. Es gibt zwei Protokolle – ein Logical Link Control Protocol (LLCP) und ein Simple NDEF Exchange Protocol (SNEP) – die die Peer-to-Peer-Kommunikation steuern. Sie finden Sie im Stack neben den Steuer-Protokollen, da sie mit dem gleichen Standard wie Teile der Steuer-Protokolle arbeiten.

Der zweite große Unterschied zwischen RFID und NFC – das NFC Data Exchange Format (NDEF) – sitzt auf diesen Steuer-Protokollen. NDEF definiert einen Datenaustausch in Nachrichten, die aus NDEF-Datensätzen zusammengesetzt sind. Es gibt viele verschiedene Datensatz-Typen, über die Sie mehr in Kapitel 4 erfahren. NDEF ermöglicht Ihrem Anwendungscode, mit Daten aus dem Lesen und Schreiben von NFC-Tags, dem Peer-to-Peer-Austausch und der Karten-Emulation gleich umgehen zu können.

Ein Großteil dieses Buches befasst sich mit dem Einsatz von NDEF-Nachrichten. Auch wenn wir die darunter liegenden Schichten trotzdem beschreiben werden, damit Sie verstehen, was da geschieht, sind wir der Meinung, dass der Vorteil von NDEF gerade darin besteht, sich über die Grundlagen keine Gedanken mehr machen zu müssen.

NFC-Tag-Typen

Es gibt vier verschiedene Arten von Tags, die durch das NFC Forum definiert sind und die alle auf den weiter vorne beschriebenen RFID-Steuerprotokollen basieren. Ein fünfter kompatibler Typ gehört streng genommen nicht zur NFC-Spezifikation. Die Typen 1, 2 und 4 basieren alle auf ISO-14443A, während Typ 3 auf ISO-18092 aufbaut. Sie können Tags von verschiedenen Herstellern erhalten und sind ihnen wahrscheinlich schon im Alltag begegnet, ohne sich dessen bewusst zu sein. Es handelt sich um folgende Typen:

Typ 1

  • basiert auf der ISO-14443A-Spezifikation

  • kann nur lesbar oder lesbar und beschreibbar sein

  • Speicher von 96 Byte bis 2 Kilobyte

  • Kommunikationsgeschwindigkeit 106 Kb

  • kein Schutz vor Datenkollisionen

  • Beispiele: Innovision Topaz, Broadcom BCM20203

Typ 2

  • Ähnlich wie Tags vom Typ 1, basiert aber auf der Spezifikation NXP/Philips Mifare Ultralight Tag (ISO-14443A).

  • kann nur lesbar oder lesbar und beschreibbar sein

  • Speicher von 96 Byte bis 2 Kilobyte

  • Kommunikationsgeschwindigkeit 106 Kb

  • Antikollisions-Schutz

  • Beispiel: NXP Mifare Ultralight

Typ 3

  • Basiert auf den Sony FeliCa Tags (ISO-18092 und JIS-X-6319-4), ohne die Verschlüsselungs- und Authentifizierungs-Unterstützung, die FeliCa bietet.

  • Von Herstellerseite aus nur lesbar oder lesbar und beschreibbar konfiguriert.

  • Variable Speichergröße, bis zu 1 MB pro Datenaustausch.

  • Zwei Kommunikationsgeschwindigkeiten: 212 oder 424 Kbps.

  • Antikollisions-Schutz

  • Beispiel: Sony FeliCa

Typ 4

  • Ähnlich wie Tags vom Typ 1, basiert aber auf der Spezifikation NXP DESFire Tag (ISO-14443A).

  • von Herstellerseite aus nur lesbar oder lesbar und beschreibbar konfiguriert

  • 2, 4 oder 8 KB Speicher

  • Variable Speichergröße, bis zu 32 KB pro Datenaustausch.

  • Drei Kommunikationsgeschwindigkeiten: 106, 212 oder 424 Kbps

  • Antikollisions-Schutz

  • Beispiele: NXP DESFire, SmartMX-JCOP

Ein fünfter, proprietärer Typ von NXP Semiconductors wird bei NFC heutzutage wohl am häufigsten eingesetzt:

Mifare Classic Tag (ISO–14443A)

  • Speicheroptionen: 192, 768 oder 3 584 Bytes

  • Kommunikationsgeschwindigkeit 106 Kbps

  • Antikollisions-Schutz

  • Beispiele: NXP Mifare Classic 1K, Mifare Classic 4K, Mifare Classic Mini

Wo Sie Tags erhalten

Mifare- und NFC-Tags lassen sich immer leichter beschaffen. Um das Buch möglichst gut nutzen zu können, sollten Sie sich einige NFC Forum-Tags und ein paar Mifare Classic-Tags besorgen.

Viele (US-amerikanische) Mobilfunk-Shops Kapitel 7Kapitel 9

NFC-KategorieSparkFunSeeed Studio

TagAge

vertreibt ebenfalls Tags, und auch bei finden Sie ein entsprechendes Angebot.

Nicht alle NFC-kompatiblen Tags funktionieren mit allen NFC-Devices. Während der Arbeit an diesem Buch haben wir viele verschiedene Devices und Tags ausprobiert und dabei einige erfolgreiche Kombinationen gefunden, aber auch einige Fehlschläge erlebt. Auch wenn Tabelle 2.1 keine vollständige Tabelle ist, erhalten Sie hier vielleicht genug Informationen, um Ihre Devices und Tags passend auswählen zu können.

Kapitel 7Kapitel 9Kapitel 9

Tabelle 2.1 Kompatibilität zwischen Devices und Tags
Typ 1Typ 3 (Sony FeliCa)Mifare Classic

Samsung Galaxy S

Ja

Ja

Ja

Ja

Ja

Google Nexus S

Ja

Ja

Ja

Ja

Ja

Google Galaxy Nexus

Ja

Ja

Ja

Ja

Ja

Google Nexus 7 Version 1

Ja

Ja

Ja

Ja

Ja

Google Nexus 7 Version 2

Ja

Ja

Ja

Ja

Nein

Google Nexus 4 (Telefon)

Ja

Ja

Ja

Ja

Nein

Google Nexus 10 (Tablet)

Ja

Ja

Ja

Ja

Nein

Samsung Galaxy S4 (Tablet)

Ja

Ja

Ja

Ja

Nein

Samsung Galaxy SIII

Ja

Ja

Ja

Ja

Ja

Adafruit NFC Shield

Nein

Teilweise

Nein

Nein

Ja

Seeed Studio NFC Shield for Arduino

Nein

Teilweise

Nein

Nein

Ja

NFC USB Dongle (libnfc)

Nein

Teilweise

Nein

Teilweise

Ja

Es gibt viele mögliche Anwendungsgebiete für NFC. Dessen Funktion zur Tag-Emulation wird bei Geldtransaktionen wie Google Wallet und in Bezahl- und Ticket-Systemen für den ÖPNV genutzt. Es gibt eine Reihe von Smartphone-Apps, mit denen Sie Konfigurationsdaten für Ihr Telefon in einem Tag speichern können, um dann den Kontext Ihres Geräts automatisch anzupassen (zum Beispiel die Ruhe-Einstellungen für ein Meeting, das Abschalten von WLAN und Konfigurieren für ein bestimmtes Netzwerk), indem Sie ein Tag antippen. Es gibt Audio-Systeme und Lautsprecher für zuhause, bei denen Sie Ihr Smartphone oder Tablet automatisch pairen können, ebenso Fernseher, bei denen Sie Ihr Device als Fernsteuerung nutzen. Krankenhaussysteme verwenden eine Patienten-Kennung per NFC, um die Patientenakte direkt aufrufen zu können. Das NFC Forum hat kürzlich eine Personal Health Device Communication (PHDC) Technical Specification veröffentlicht, um diesen Bereich zu fördern. Lagerverwaltungssysteme können durch den Einsatz von NDEF-Datensätzen verbessert werden, die den zu verschickenden Waren mitgegeben werden. Dort finden sich dann Versandtermine, das Ziel und so weiter. Beim Flottenmanagement können NFC-Tags und Lesegeräte genutzt werden, um Routeninformationen, Reisezeiten, Entfernungen, Wartungstermine und Tankstände auf Tags abzulegen oder vom Lastwagen auf ein mobiles Gerät zu übertragen.

Die Kombination aus Peer-to-Peer-Kommunikation zwischen Geräten mit einem minimalen Pairing-Aufwand und einem allgemein eingesetzten Datenformat in Geräten und Tag-Nachrichten verleihen NFC das Potenzial zu einem leistungsfähigen Tool für datenlastige Anwendungen in der Welt da draußen.

Die Near Field Communication ergänzt die RFID-Techniken um einige vielversprechende neue Funktionen. Am wichtigsten ist dabei das NFC Data Exchange Format (NDEF), mit dem ein allgemein einsetzbares Datenformat für vier verschiedene NFC-Tag-Technologien umgesetzt wird. NDEF kann für den Datenaustausch sowohl zwischen Tag und Gerät als auch zwischen verschiedenen Geräten genutzt werden. Das macht NFC zu mehr als einer reinen Identifikations-Technologie – sie kann auch für den Austausch kleinerer Datenmengen eingesetzt werden. Durch die Art und Weise der Interaktion zwischen NFC-Devices und Tags – ein einfaches Antippen – entsteht eine viel größere Spontanität zwischen Anwendern.

Aktuell gibt es ein paar Inkompatibilitäten zwischen manchen NFC-Devices und älteren Mifare Classic-Tags. Manche NFC-Funkmodule unterstützen Mifare Classic als inoffiziellen fünften Tag-Typ, andere hingegen nicht. Mit der Zeit und mehr Geräten auf dem Markt werden diese Probleme hoffentlich immer weniger Anwender betreffen. Heute ist es am sinnvollsten, zu prüfen, ob die Lesegeräte und Tags, die Sie für eine bestimmte Anwendung einsetzen möchten, wirklich miteinander kommunizieren können.