Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Propeller 8 Kern Controller - C Programmierung

1 - RFID

Kontaktlose ID-Systeme werden als RFID (radio frequency identification) bezeichnet. Diese Technologie ist dem Bereich der automatischen Identifizierung und Datenerfassung zugeordnet.

Radio frequency steht für die Übertragung von Daten mittels Funkwellen; identification für die eindeutige Identifikation eines Objektes anhand von  gespeicherten Daten.

RFID bezeichnet heute die komplette Infrastruktur, die zum drahtlosen Informationsaustausch nötig ist. Dazu gehören neben dem an dem zu identifizierenden Objekt angebrachten RFID-Chip - auch RFID-Tag genannt - die Sende- und Empfangseinheit, mit welcher der RFID-Tag ausgelesen wird und die daran angeschlossenen Systeme, wie zum Beispiel Server und Dienste.

Herzstück der RFID Technologie ist der RFID Chip, der auf der Transpondertechnik aufbaut. Transponder ist ein Kunstwort. Es setzt sich zusammen aus Transmitter und Responder und soll andeuten, dass dieser Baustein in der Lage ist gleichzeitig Daten zu senden und zu empfangen.

Abbildung 1

Transponder können klein wie ein Stecknadelkopf sein, lassen sich unauffällig Auslesen und sind billig in der Herstellung. Sie enthalten eine Antenne, einen Schaltkreis zum Senden und Empfangen und einen Speicher. Die Kopplung erfolgt über ein Lesegerät, das magnetische Wechselfelder geringer Reichweite oder hochfrequente Radiowellen erzeugt.

In dieser Übung lernst du, wie ein RFID Lesegerät mit einem Propeller Controller beschaltet wird und wie man eine Tag ID ausliest und in einem Programm weiter benutzen kann.

Abbildung 2 - verschiedene Tags

2 - RFID Testaufbau

Zusätzlich zu einem 5V und GRD Anschluss benötigt das RFID Lesegerät zwei Propeller I/O Anschlüsse. P2 wird als Ausgang geschaltet; über ihn wird der Pin Enable des Lesegerätes angesprochen. P1 wird auf Eingang gesetzt um die Daten vom Kartenleser seriell einlesen zu können. Der 2,2kOhm Widerstand ist notwendig, da das Ausgangssignal des Lesegerätes einen Signalpegel von 5V Signal hat und der Propeller Controller von 3,3V.

Material
  • 1x  Prop-BoE oder Prop_AB
  • 1x  RFID Kartenlesegerät seriell von Parallax
  • 2x  RFID Tags
  • 1x  Widerstand 2,2kOhm (rot-rot-rot)
  • 4x  Steckdraht
Aufgaben
  • Baue die Schaltung nach Vorlage auf dem Steckbrett auf.
  • Übertrage das Programm RFID1.c in den Editor.
  • Starte das Programm.
  • Bringe verschiedene Tags in die Nähe des RFID Lesegerätes.
  • Notiere die Tag-IDs von zwei Tags.
  • Finde heraus, wie weit du dich mit einem Tag vom Lesegerät entfernen kannst, bis das Kartenlesegerät den Tag nicht mehr erkennt.
(Courtesy of Parallax Inc.)
Abbildung 3 - Schaltskizze und Schaltungsaufbau RFID Lesegerät (Courtesy of Parallax Inc.)

Im Terminalfenster sollten verschiedene Tag ID Nummern ausgegeben werden. Wird kein Tag innerhalb von einer Sekunde erkannt, erscheint der Text timed out, bis ein neuer Tag erkannt wird.

Mit Disable/Enable lässt sich die Ausgabe im Terminal anhalten.

Sobald eine Tag-ID vom Lesegerät erkannt wurde, drücke die Taste Disable im Terminalfenster, notiere die ID in der Tabelle und setze die Messung fort, indem du die Taste Enable drückst.

Meine Messungen

Programm RFID1.c

Programm RFID1.c

Wie arbeitet das Programm?

Zeilen 1 und 2

Die beiden Bibliotheken simpletools und rfidser werden eingebunden. Die Bibliothek rfidser enthält u.a. die Funktionen rfid_open und rfid_get, die in diesem Programm aufgerufen werden.

  • #include „simpletools.h“
    
    
    
  • #include „rfidser.h“
    
    

Zeilen 4 und 5

Zwei Variablen rfidEn und rfidSout vom Typ int werden deklariert und mit den Werten 2 und 1 initialisiert. Der Enable Pin des Kartenlesegerätes wird mit P2 und der SOUT Pin mit P1 des Propeller-Controllers verbunden.

  • int rfidEn = 2;
    
    
    
  • int rfidSout = 1;
    
    

Zeile 7

Für das RFID-Lesegerät wird ein Gerätenamen Identifier rfid angelegt; der Name steht für eine Speicherstruktur, in der Informationen über die spezifische RFID-Lesegeräteverbindung abgelegt ist. Werden mehrere Lesegeräte eingesetzt, müssen sie durch entsprechend gewählte Gerätenamen Identifier mittels rfidser *AussagefähigerName voneinander unterscheidbar. sein.

  • rfidser *rfid;
    
    

Zeilen 9 - 11

Das Hauptprogramm startet mit einem Aufruf der Funktion rfid_open. Sie initialisiert das Kartenlesegerät und übergibt die anstehenden Aufgaben an einen weiteren Cog. Die in der Funktion benutzten Parameter entsprechen den I/O Pin, die am Anfang des Programmes initiiert wurden. Der Rückgabewert enthält Informationen, die in der Speicherstruktur von rfid abgelegt werden. Damit kann rfid in anderen Funktionen aufgerufen werden.

Die Funktion rfid_get(rfid, 1000) erwartet vom Gerät, dem wir den Namen rfid gegeben haben, in einem Zeitraum von 1000ms eine Rückmeldung. Wurde ein Tag erkannt, gibt die Funktion als Rückgabewert die Tag-ID an das Programm zurück, in jedem anderen Fall die Meldung „timed out“. Char *str bezeichnet einen Pointer, der auf einen Speicherplatz zeigt, in dem die von der Funktion zurückgegebenen Daten abgelegt werden.

In der Formatierungsanweisung des print-Befehls wird mit %s eine Stringausgabe angezeigt. Es wird eine Zeichenkette ausgegeben, die im Speicher mit der Startadresse str abgelegt ist. 

Was du wissen solltest!

Passive Tags

Passive Tags verfügen über keine eigene Energiequelle. Sie beziehen ihre Versorgungsspannung durch Induktion aus den Funksignalen des Lesegerätes. Sendet das Lesegerät ein Funksignal in Form eines e-m Feldes und wird der Chip durch dieses Feld geführt, wird in der Spule mittels Induktion Strom erzeugt.

Abbildung 4 - Kommunikation zwischen RFID Lesegerät und Transponder (Courtesy of Parallax Inc.)

Das Parallax RFID Lesegerät arbeitet nur mit read-only Tags der Familie EM4100 zusammen und kann keine Daten auf RFID Tags schreiben.

3 - Zugangskontrolle mit RFID Tags

Werden RFID-Tags als Bestätigung in Zugangssystemen eingesetzt, muss jedes Mal überprüft werden, ob die Tag ID dem System bekannt ist. Im folgenden Programmbeispiel werden wir das einmal praktisch umsetzen. Dazu müssen zunächst die IDs der vorhandenen Tags ausgelesen werden.

Aufgaben
  • Markiere zwei Tags mit den Buchstaben „A“ und „B“.
  • Übertrage das Programm RFID2.c in den SimpleIDE Editor und trage die Tag-IDs aus dem vorherigen Versuch in den Zeilen 18 und 20 ein.
  • Speichere das Programm ab.
  • Starte das Programm und halte ein Tag vor das Lesegerät. Es sollte die Meldung Ungültige ID oder Tag A erkannt bzw. Tag B erkannt im Terminalfenster erscheinen.
  • Wiederhole den Vorgang mit einem zweiten Tag.
Abbildung 5 - Terminalausgabe zur Tag Erkennung

Jetzt kommst du!

Das Programm erkennt jetzt unterschiedliche Tag-IDs. Es ließen sich jetzt, je nach erkannter Tag-ID, unterschiedliche Aufgaben oder Aktionen damit verknüpfen. In der rfidser Bibliothek gibt es die Funktion rfid_disable. Sie weist den RFID-Kartenleser an, keine Tag-IDs einzulesen, bis die Funktion rfid_enable aufgerufen wird. Verändere das Programm so, dass das Lesegerät bei Tag B sperrt und eine entsprechende Textausgabe im Terminal erscheint.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf