Umbau eines USB-RFID Readers für Microcontroller-Projekte

USB RFID Reader

Da ich immer mal mit RFID rumspielen wollte, habe ich mir mal einen günstigen USB-RFID Reader für 125 kHz über eBay aus China bestellt. Die Teile gibts dort für ~6-7€ inkl. Versand.

Die RFID-Reader melden sich nach dem Einstecken an den PC als normale HID-Tastatur an und “tippen” den Code des RFID-Transponders dann einfach in das aktive Textfeld ein.
Das ist für mich natürlich eher uninteressant, darum habe ich das Ding mal zerlegt um das ganze für die Benutzung in meinen Microcontroller-Projekten  umzubauen.
Das ganze ist recht einfach zu realisieren. Mehr dazu nach dem Jump…

Um zu sehen ob überhaupt die Möglichkeit besteht irgendwie an das “Nutzsignal” zu kommen, habe ich den RFID-Reader erstmal aufgeschraubt. Und sie da, viele diskrete Bauteile und Lötpads für Stiftleisten. Das mag das Bastlerherz :D

RFID Reader geöffnetWie so oft ist das “Herzstück” zensiert, indem die Bauteilbeschriftung entfernt wurde.
Bei dem Operationsverstärker handelt es sich um einen einfachen LM358, welcher für die Verstärkung und Demodulation des RFID-Signals zuständig ist. Das daraus gewonnene Signal wird dann decodiert und in serielle Bitfolge umgesetzt, welche dann an den Mikrocontroller gesendet und via USB an den PC gesendet wird. Für mich ist natürlich nur der serielle Datenstrom ohne USB-Protokoll interessant. Dieser findet sich, wie schon vermutet, an den Pinheader Anschlüssen. Die relevanten Pins habe ich mal beschriftet

RFID Pinout

VCC ist in diesem Fall natürlich 5V, da sich auf der Platine kein Spannungsregler befindet.
Data_rdy ist ein active low Signal und signalisiert das Vorhandensein eines eingehenden Datenstroms (als ein gescannter RFID-Tag).
Data ist letztendlich das Datensignal welches in zwei Paketen mit ca. 60ms Abstand gesendet wird.

Protokoll

RFID DataWarum der zeitliche Versatz dort ist, hängt einfach damit zusammen, dass die Daten die offensichtlich in zwei Häppchen übertragen werden. Wenn man sich den Datenstrom noch auf einer kleineren Zeitauflösung ansieht, wird schnell deutlich dass es sich um ein seriellen Datenstrom mit 9600 Baud handelt. Das ganze mit einem Start-bit und einem Stop-bit. Also ganz normales 8N1.

RFID DataNachdem die Datenrate und Datenformat ermittelt wurde, habe ich das ganze mal über einen UART=>USB Converter am PC angeschlossen. Wie schon erwartet schauen die Zeichen zunächst sehr wirr aus, da es sich größtenteils um Sonderzeichen oder nicht darstellbare Zeichen handelt.

Dekodierung

Für die Analyse von seriellen Datenströmen eignet sich das kostenlose HTerm, welches in der Lage ist die empfangenen Zeichen direkt als Hex, Dez und Binär auszugeben. Dennoch sieht es auf dem ersten Blick etwas merkwürdig aus. Der RFID-Transponder der eingescannt wurde hat den Code “0006292190″. Der entsprechende Datenstrom dazu sieht so aus

RFID Sequence

Betrachtet man die empfangenen Bytes genauer so kommt man doch recht schnell auf des Rätsels Lösung. Offensichtlich beginnt jedes der zwei Datenpakete mit “0xBD” (Bytes 1 & 9). Das darauf folgende Byte gibt scheinbar an, wie viele “Nutzbytes” folgen. Beim ersten Datenpaket sind es demnach 5 Bytes, beim zweiten Datenpaket 6 Bytes. Dann kommen die Nutzbytes, welche schließlich mit “0×03″ (=ETX = End of Text) abgeschlossen sind. Beim letzten Paket scheint der Nutzdatenstrom noch mit “40″ abgeschlossen zu sein. Das Zeichen ignorieren wir jetzt einfach mal.

Nun stellt sich noch die Frage, wie man von DEZ 39,39,39,35,31,38,31,30,38,39. Beim genauen betrachten der Dezimalwerte fällt doch recht schnell auf, dass man durch die Subtraktion von 29 von jedem Byte auf die entsprechende Zahl kommt. Einzige Ausnahme ist die “0″ welche dem Wert “10″ entspricht. Daher haben wir nach der Subtraktion folgende Codefolge: 10,10,10,6,2,9,2,1,9,10. Und da “10″ gleich “0″ entspricht haben wir: 0,0,0,6,2,9,2,1,9,0. Tadaa, das ist ja der Code des Transponders.

Mikrocontroller-Anbindung

Da wir nun wissen wie das ganze Abläuft können wir nun mal einen Mikrocontroller an dem RFID-Reader anschließen. Ich habe mir dazu einfach eine Buchsenleiste nach außen gelegt und mit Heißkleber fixiert.

µC InterfaceMan kann sich nun aussuchen ob man den RFID-Reader über USB mit Strom versorgen will, oder ob man es über das Mikrocontroller Board macht, welches über die Buchsenleiste angeschlossen wird. Nur beides gleichzeitig sollte man nicht machen :D

Dieser Beitrag wurde unter Basteleien, Teardown abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*


4 × = vier

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>