RFID Türmodul
Das RFID Türmodul eignet sich aufgrund seiner Abmessung (Durchmesser 52mm) für den direkten Einbau in eine Unterputzdose. Die Unterputzdose sollte am besten an der inneren Seite der Tür angebracht werden. An der Außenseite kann z. B. eine Acrylplatte, welche die Antenne und optional eine (Duo-) LED beherbergt, befestigt werden. Das Modul kann z. B. direkt an einem Klingeltrafo 8 V~ betrieben werden, welcher auch gleich einen elektrischen Türöffner versorgen kann. Ein Relais um den elektrischen Türöffner zu steuern befindet sich mit auf der Platine. Optional kann die Platine mit einem RS485 IC bestückt werden, um z. B. eine Vernetzung oder erweiterte Steuerung zu ermöglichen. Weiterhin ist auf der Platine Platz für ein I2C EEPROM, sollte das interne EEPROM des Mega8 nicht ausreichen.
Ausstattung im Überblick
- µC ATMega8
- Brückengleichrichter und Spannungsregler 78M05 on board
- RFID Reader IC EM4095
- Wagoklemme für den Anschluss von Stromversorgung, RFID Antenne, (Duo-) LED und] Datenleitung (RS485)
- Wagoklemme für den Relaiskontakt, um z. B. einen Türöffner zu schalten (Relais on board)
- Kurzhubtaster on board, z. B. um in den Lernmodus für neue Tags zu gelangen (nur sinnvoll wenn das Modul abgesetzt von der Antenne auf der Innenseite der Tür angebracht wird)
- 2 Pins des µC (PD3, PD4) mit Stiftleiste abgreifbar, um z. B. zusammen mit dem ISP Steckverbinder ein RFM12 Funkmodul anbinden zu können
- Firmware ließt EM4100- und FDX-B Transponder
Funktionsbeschreibung
Wird ein gültiger Tag erkannt (im Eeprom hinterlegt), zieht das Relais für die konfigurierte Zeit (z.B. 2 s) an bevor es wieder abfällt, um z. B. einen elektrischen Türöffner anzusteuern. Wird der Kurzhubtaster auf der Platine länger als 2 Sekunden gedrückt, werden alle gespeicherten Tags gelöscht. Über die RS485 Schnittstelle können mehrere Module an einem Host z.B. einem Raspberry PI angeschlossen werden, und von dort aus überwacht und programmiert werden.
Die Firmware kann auf 3 verschiedene Modi eingestellt werden:
Adminmode
Mit dem Programmiertaster kann ein Admintransponder angelernt werden, mit diesem lassen sich neue Transponder hinzufügen.
Buttonmode
Mit dem Programmiertaster lässt sich an neuer Tag anlernen
Busmode
Tags lassen sich über den Bus anlernen
Schaltungsbeschreibung
Der RFID IC EM4095 gibt kontinuierlich ein 125 kHz Signal auf die Spulenantenne aus. Wird ein Tag in das Feld der Antenne gebracht, versorgt sich der auszulesende Tag darüber mit Energie. Gleichzeitig sendet der Tag seine Daten, in dem er dem Leser unterschiedlich stark Energie entzieht, so dass eine Amplitudenmodulation entsteht. Das RFID IC EM4095 gibt das demodulierte und gefilterte Signal auf einen interruptfähigen Eingang des Mega8. Bei diesem Signal handelt es sich um ein Manchester-codiertes Signal mit einer Bitrate von einem 64tel der Trägerfrequenz. Ausgehend von 125 kHz Trägerfrequenz sind das knapp 2000 bit/s. Bei jedem Wechsel des manchester-codierten Signals wird nun eine Interruptroutine im µC aufgerufen.
Softwarebeschreibung
Trotz des kleinen µC wurde als Programmiersprache C++ verwendet, da sich damit eine sehr kompakte Struktur erreichen lässt. Kernstück der Firmware bildet die Klasse "Rfid". Bei jedem Aufruf der INT0-Interruptroutine durch das Signal des RFID-ICs wird die vergangene Zeit zum vorherigen Flankenwechsel überprüft; ist die Zeit kürzer als 3/4 der Bitzeit, wird die Flanke ausgeblendet und die Routine verlassen (wegge-x-te Flanken in der Grafik). Andernfalls wird eine statische 16-bit Variable um ein Bit nach links geschoben und, falls der Pegel auf 0 liegt, mit 1 verodert. Nach jedem eingelesenen Bit wird nun dieses FIFO-Register auf das Vorhandensein eines Tagheaders (9x 1-Bits) überprüft, und gegebenfalls ein Bitzähler auf 0 gesetzt. Ist ein ganzes Byte voll, wird dieses der RFID Klasse übergeben. Nachdem 64 Bit eingelesen wurden, werden zunächst die Spalten- und Zeilenparitätsbits überprüft. Sind alle Paritätsbits korrekt werden selbige ausgeblendet, so dass 40 "Nettodatenbits" verbleiben. Diese Transponderdaten werden nun der Klasse "Tagmanager" übergeben. Dort werden aus dem EEPROM immer 5 Byte große Stücke ausgelesen und mit dem dekodierten Daten verglichen, solange bis die Daten übereinstimmen, oder das Speicherende (0xFFFFFFFFFF) erreicht wurde. Handelt es sich beim dekodierten Transponder um den ersten Speicherplatz im EEPROM, wird noch ein Administratorflag gesetzt, so dass weitere Transponder hinzugefügt werden können.
Datenaufbau EM4100 Tags
Ein Tag mit den Nettodaten 0x1234567890 ist wie folgend aufgebaut:
9 Header Bits (1) | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Datenbits + Paritätsbit | 4 Spaltenparitäten + Stopbit |
---|---|---|---|---|---|---|---|---|---|---|---|
Bit 0-8 | Bit 9-13 | Bit 14-18 | Bit 19-23 | Bit 24-28 | Bit 29-33 | Bit 34-38 | Bit 39-43 | Bit 44-48 | Bit 49-53 | Bit 54-58 | Bit 59-63 |
111111111 | 0001 1 | 0010 1 | 0011 0 | 0100 1 | 0101 0 | 0110 0 | 0111 1 | 1000 1 | 1001 0 | 0000 0 | 0001 0 |
Die Antenne
Eine passende Leseantenne für das Modul kann recht einfach selbst hergestellt werden. Man nehme z. B. 0,2 mm Kupferlackdraht, von dem ca. 100 Windungen auf einen runden Körper mit ca. 45 mm Durchmesser gewickelt wird. Die Induktivität der Spule lässt sich dann mit Hilfe eines L-Meters oder alternativ mit einem Funktionsgenerator und einem Oszilloskop herausfinden. Wer keine Antenne selber wickeln möchte kann natürlich auch auf fertige Spulen zurückgreifen (siehe Links). In jedem Fall müssen in der Schaltung C1-C4 und R9 an die Antenne angepasst werden. C3 und C4 bilden zusammen mit der Antennenspule einen Serienschwingkreis, so dass sich eine Resonanzfrequenz von ca. 125 kHz ergibt. C1 und C2 dienen als kapazitiver Spannungsteiler, um das relativ große Antennensignal auf ein für das IC verträgliches Mass zu verkleinern. R9 dient dazu um bei sehr niederohmigen Antennen die Güte künstlich zu verkleinern. Auf der Herstellerseite des RFID ICs findet sich eine Excel-Tabelle, die die Berechnung der Bauteile etwas vereinfacht. Die Antenne kann in gewissen Grenzen mit einem Kabel vom Modul abgesetzt werden, ohne dass sich die Resonanzfrequenz dramatisch ändert. In einem Versuch mit 70 cm 0,5 mm² Doppellitze zwischen Antenne und Modul ging die Resonanzfrequenz um ca. 1 kHz nach unten.
Quellcode Dateiübersicht
Datei | Beschreibung |
---|---|
bus.cpp / bus.h | Klasse "Bus", RS485 Kommunikation |
button.cpp / button.h | Klasse "Button", fragt Kurzhubtaster ab |
global.h | Hardware Defines & Makros |
global.cpp | Diverse Hilfen für C++ |
i2ceeprom.h / i2ceeprom.cpp | Klasse "I2CEEprom", spricht das externe EEPROM an |
main.cpp | Das Hauptprogramm |
makefile | Beispiel_Makefile |
rfid.h / rfid.cpp | Klasse "Rfid", prüft und dekodiert die Tagrohdaten |
tagmanager.h / tagmanager.cpp | Klasse "Tagmanager", prüft und speichert Daten im EEPROM |
task.h / task.cpp | Basisklasse für alle Tasks (Taskscheduling) |
timer.h / timer.cpp | Klasse "Timer", wird in diversen anderen Klassen verwendet |
Bauteileliste
QTY | Position | Bauteil | Wert | Reichelt Best. Nr. | IT-WNS Best. Nr. |
---|---|---|---|---|---|
1 | IC4 | 78MXXD | |||
1 | SV1 | Stiftleiste | PINHD-1X2_2.54-SMD | ||
1 | JP1 | Stiftleiste SMD | |||
1 | B1 | Brückengleichrichter | B80C800RUND | B50C1500 o. B80C800 | |
1 | C1* | SMD Kondensator 0805 | 1,5 nF | X7R-G0805 1,5N | |
1 | D1 | Diode | 1N4148 | SMD 1N 4148 | D-1N4148-0805 |
1 | C4* | SMD Kondensator 0805 | 1 nF | NPO-G0805 1,0N | |
1 | Q1 | Quarz HC49 | 7,3728 MHz | 7,3728-HC49U-S | Q-7.3728M-HC49US |
1 | R9* | SMD Widerstand 0805 | 10Ω | SMD-0805 10 | R-10-0805-1 |
1 | R1, R2, R4, R5 | SMD Widerstand 0805 | 10 k | SMD-0805 10,0K | R-10000-0805 |
2 | C7, C8 | SMD Kondensator 0805 | 10 nF | X7R-G0805 10N | |
1 | C2* | SMD Kondensator 0805 | 10 pF | NPO-G0805 10P | |
2 | C9, C10 | SMD Kondensator 0805 | 22 pF | NPO-G0805 22P | C-22P-0805 |
1 | IC5 | ST24C64 | ST 24C64 MN6 | ||
10 | C5, C6, C12, C13, C14, C15, C16, C17, C18, C19 | SMD Kondensator 0805 | 100 nF | X7R-G0805 100N | C-100-0805 |
2 | R3, R10 | SMD Widerstand 0805 | 270Ω | SMD-0805 270 | R-270-0805-1 |
1 | C11 | Elko | 330 µ | RAD 330/35 | |
1 | C3* | SMD Kondensator 0805 | 330 pF | NPO-G0805 330P | |
1 | X3 | Wago Klemme 8-polig | WAGO 733-338, WAGO 733-108 | ||
1 | X2 | Wago Klemme 2-polig | WAGO 734-132, WAGO 734-102 | ||
1 | IC2 | ATMega8-16A | ATMEGA 8-16 TQ | ATMEGA8-16AU | |
1 | T1 | NPN Transistor | BC847 | BC 847C SMD | TR-BC847B |
1 | IC1 | EM4095 RFID IC | EM4095 | ||
1 | K1 | Relais 5V 1xUM | FIN 36.11 5V | ||
1 | S2 | Kurzhubtaster | TASTER 9315 | T-Mini-6X6-4.3 | |
1 | IC3 | RS485 IC | MAX485 | MAX 485 CSA | MAX485CSA+ |
1 | LED2 | SMD LED 0805 | rot | SMD-LED 0805 RT | LED-0805-rt-2 |
C1, C2, C3, C4 und R9 sind abhängig von der verwendeten Antenne. Werte für diese Antenne:
C1 | 1,5 nF |
C2 | 10 pF |
C3 | entfällt |
C4 | 1,5 nF |
R9 | 33Ω |
IC3 (MAX485) und IC5 (I2C EEPROM) sind optional.
Als EEPROM kann auch ein 24LC32 verwendet werden...
Downloads
- Schaltplan (PDF)
- Bestückungsplan Oberseite (PDF)
- Bestückungsplan Unterseite (PDF)
- C++ Quellcode AVRGCC (RAR mit ZIP Endung!!!)
FAQ
- Wieviele Transponder können im Speicher abgelegt werden ?
In der aktuellen Firmware wird, wenn bestückt, das externe EEPROM verwendet (auf der Leiterplatte integriert). Darauf lassen sich mit einem 64 kBit EEPROM 1170 Transponder abspeichern. Wird das Eeprom nicht bestückt und so das interne Eepom des µC verwendet, ist Platz für 70 Transponder
- Wo bekomme ich passende Transponder her ?
Siehe Links
- Wieviel Strom kann das Relais schalten
Das Relais an sich kann 10 A schalten, jedoch sind Stecker und Leiterbahnen für einen Strom von ca. 3 A dimensioniert.
FUSES für den Prozessor
- Highbyte: 0xD9 (ggv. auch 0xC9)
- Lowbyte: 0XFF (ggv. auch 0xBF)
Links
- Diskussion
- Aktuelle Firmware bei GitHub
- Datenblatt und Application Notes EM4095 RFID Reader IC
- Datenblatt 125KHz, 64 bit read only TAG von EM Microeletronic
- Passender Transponder (Schlüsselanhänger) bei Reichelt oder IT-WNS
- Passender Transponder (ISO Karte) bei Reichelt oder IT-WNS
- Leiterplatte bei Seegel Systeme
- EM4095 RFID IC bei Seegel Systeme
- Passende Antenne bei Seegel Systeme