RFID-Reader-Modul

Bei Pollin Electronic gibt es seit kurzem einen neuen RFID-Reader Bausatz mit der Artikel-Nr. 810252 für den ich nachfolgende Firmware in C geschrieben habe. Es gab zwar von Pollin schon seit längerem einen RFID-Reader Bausatz unter der Artikel-Nr. 810059 aber der ist so wie es aussieht nicht mehr erhältlich und für diesen gab es offiziell auch nur ein Beispielprogramm in BASCOM.

Der neue RFID-Reader Bausatz weist wie nachfolgend beschrieben einige Verbesserungen zu seiner Vorgängerversion auf:

  • ein im Lieferumgang enthaltenes 2×16 LC-Display
  • automatische Anpassung der Tag-Transponder-Arbeitsfrequenz wodurch eine schnellere Lesbarkeit, eine größere Reichweite des Lesebereichs der Trans-ponderkarten erreicht und eine längere Zuleitung zur Lesespule kompensiert wird
  • Anschlussmöglichkeit eines externen RFID-Sensors
  • ein on Board befindliches Relais mit 2 Wechsler-Anschlüsse
  • Wahlmöglichkeit des steuernden Mikrocontrollers durch einen ATtiny2313 (im Lieferumfang) oder einen ATmega8 durch dessen Speicherplatz und Funktionsumfang größere Projekte realisiert werden können

Die neuen Features dieses Bausatzes fand ich interessant und habe mich sogleich daran gesetzt sowohl für den Mikrocontroller ATtiny2313 als auch für den ATmega8 eine Firmware zu schreiben die die neuen Möglichkeiten dieses Bausatzes unterstützt. Natürlich bietet der ATtiny2313 durch seine Funktionsumfang und seine Speichergröße nicht die Möglichkeiten wie sie der ATmega8 bietet, dennoch ist mit dem ATtiny2313, wie nachfolgend beschrieben, einiges möglich. Zunächst habe ich den Funktionsumfang beider Firmwaren, die am Ende dieser Seite zum downloaden bereitstehen gleich gehalten. Da wie bereits erwähnt mit einer entsprechenden Firmware in einem ATmega8 in dem RFID-Reader Bausatz noch viel mehr Möglichkeiten stecken werde ich versuchen diese hier in weiteren Versionen der Firmware zu veröffentlichen.

RFID-Reader-Modul Firmware Beschreibung:
Mit der Firmware des RFID-Reader Bausatz der Firma Pollin Electronic können ReadOnly Transponderkarten (EM4102) die mit einer Frequenz von 125 kHz arbeiten ausgelesen werden. Die Transponderkarten-Nummer wird sowohl an dem mitgelieferten Display angezeigt als auch über die serielle Schnittstelle ausgegeben. Die Ausgabe der Transponderkarten-Nummer ob mit oder ohne Hersteller-ID bzw. in dezimal oder hexadezimal kann eingestellt werden. Weiterhin unterstützt dieses Programm auch die von dem Bausatz gebotene Funktion ein Relais anzusteuern und somit beispielsweise eine Türsteuerung mit Zugangsberechtigung zu realisieren. Das Programm bietet hierfür die Möglichkeit vier Transponderkarten-Nummern im EEPROM abzuspeichern und beim Einlesen dieser Nummern das Relais anzusteuern. Mit der Taste 1 kann das 125 KHz Signal an der Lesespule ein- bzw. ausgeschalten werden und somit auch die Lesefunktion des RFID-Readers. Ob bei der Anzeige der Transponderkarten-Nummer die Hersteller-ID der Transponderkarte mit angezeigt oder ausgeblendet werden soll kann über den Taster 2 ein- bzw. ausgeschalten werden. Die Ausgabe der Transponderkarten-Nummer in dezimal oder hexadezimal kann mit dem Taster 3 umgeschaltet werden. Die Grundeinstellung des RFID-Readers ist, dass die Lesespule eingeschalten ist, die Transponderkarten-Hersteller-ID mit ausgegeben und die Transponderarten-Nummer in hexadezimal angezeigt wird. Wie oben bereits erwähnt können bis zu vier Transponderkarten-Nummern in dem internen EEPROM abgespeichert werden. Durch das gleichzeitige drücken der Taster 1 und 3 wird die zuletzt vom RFID-Reader gelesene Transponderkarten-Nummer in das EEPROM geschrieben. Die Reihenfolge in der die Transponderkarten-Nummern in dem EEPROM abgespeichert werden ist wie folgt festgelegt. Nach jedem RESET wird immer mit der Speicherung der Trans-ponderkarten-Nummer auf dem ersten Speicherplatz begonnen. Die zweite Transponderkaten-Nummer wird dann auf den zweiten Speicherplatz geschrieben und so weiter bis zum vierten Speicherplatz. Nach der Speicherung einer Transponderkarten-Nummer im vierten Speicherplatz wird bei einer weiteren Speicherung einer Transponderkarten-Nummer die Nummer die sich auf dem ersten Speicherplatz befindet durch die neue Transponderkarten-Nummer überschrieben.

 Kurzanleitung:

  • Taster 1: RFID-Reader-Spule ein- bzw. ausschalten
  • Taster 2: Transponderkarten-Hersteller-ID ein- bzw. ausblenden
  • Taster 3: Ausgabe der Transponderkarten-Nummer in dezimal bzw. hexadezimal
  • Taster 1/3: Speicherung der zuletzt gelesenen Transponderkarten-Nummer im EEPROM
  • Anschlusseinstellungen der serielle bzw. RS232-Schnittstelle: (9600 Baud, 8N1);
    Baudrate 9600, Datenbits 8, Parität keine, Stoppbit 1

 

Inhalt der Download-Dateien:
Die Firmware die für die beiden Mikrocontroller ATtiny2313 und ATmega8 als ZIP-Dateien auf dieser Seite als Download zur Verfügung stehen, beinhalten nachfolgende Dateien die den Quellcode der Firmware beinhalten:

  • RFID-Reader-Modul.c       : Hauptprogramm für das RFID-Reader-Modul
  • RFID-Display.c                  : Quellcode für die Display-Funktionalität
  • RFID-Display.h                  : Header-Datei
  • RFID-U2270B.c                 : Quellcode zum Einlesen der RFID-Transponderkarten
  • RFID-U2270B.h                 : Header-Datei

Da der Flash-Speicherplatz des ATtiny2313 sehr begrenzt ist, wurde der Quellcode so geschrieben, das alle statischen Anzeigetexte die auf dem Display angezeigt werden sollen, in das integrierten EEPROM des Mikrocontrollers ausgelagert wurden. Aus diesem Grunde ist es nötig, beim programmieren des Mikrocontrollers nicht nur die Hex-Datei in den FLASH-Speicher, sondern auch die Eep-Datei in dem EEPROM-Speicher des Mikrocontrollers zu übertragen, da sonst die Anzeige des Displays nicht funktioniert. Da der ATmega8 über genügend FLASH-Speicherplatz verfügt wäre hier eine Auslagerung der statischen Anzeigetexte in das vorhandene EEPROM nicht nötig, aber aus Gründen der Überschaubarkeit und Pflege der beiden Quellcodes habe ich dieses dennoch getan.

  • RFID-Reader-Modul.hex
  • RFID-Reader-Modul.eep

Für die Programmierumgebung Programmers Notepad (WinAVR) habe ich die beiden nachfolgenden Projektdateien und das Makefile zugefügt

  • RFID-Reader-Modul.pnproj
  • RFID-Reader-Modul.pnps
  • Makefile

Um sich das Setzen der Fuse-Bits beim Programmieren des Mikrocontrollers zu sparen habe ich für die Programmier-Software PonyProg ein Skript geschrieben. Dieses Skript setzt die Fuse-Bits des verwendeten Mikrocontrollers so wie sie für die Firmware benötigt werden. Das Skript kann ganz einfach nach dem Starten von PonyProg eingelesen und gestartet werden. Da die Fuse-Bits der beiden Mikrocontroller ATtiny2313 und ATmega8 unterschiedlich gesetzt werden müssen, gibt es für jeden Mikrocontroller ein eigenes Skript.

  • RFID-Reader-Modul@ATtiny2313.e2s  bzw.  RFID-Reader-Modul@ATmega8.e2s

 

Downloads und Links: