Wenn ein Modell-Fahr­zeug mit sei­nem Tag über einen im Gleis einge­bauten RFID Le­ser fährt, wird die im Tag enthal­tene In­for­mation auf die Zen­trale oder auf die steuernde PC-Software über­tragen. Ur­sprünglich war der Über­tragungsweg S88, später S88 über RC-Talk, gefolgt von RailCom über RS485. Der neuer­dings ele­ganteste Weg ist über WLAN. Dazu habe ich im Blog WLAN-Rück­mel­der mehr ge­schrie­ben. In die­sem Bei­trag geht es mehr um die Tags, die In­halte und wie diese In­halte auf die Tags kom­men.


TAG UID

Als wir 2015 mit RFID für die Modellbahn an­fin­gen, wur­­de zu­nächst nur die UID gelesen. Nein, das hat mit Um­satz­­steuer nichts zu tun, sondern steht für die einmalige Ken­nung des Tags, für den Unique IDen­tifier. Das ist ein 5 oder bei neue­ren Tags ein 7 Byte Code, der fest zum Tag gehört. Bei der 7 Byte Kennung ist die Chance, dass 2 UIDs gleich sind, praktisch Null. Des­we­gen las einer der er­sten RFID Le­ser die komplette UID und schickte diese 5 oder 7 Byte über LocoNet an den PC. Am Tag selbst musste nichts ver­än­dert wer­den. Das Prozedere ist hier be­schrieben. Mehr zu den RFID Grundlagen und zu ersten An­wen­dun­gen auf der Mo­dell­bahn erschien in der Modell­bahn­zeit­schrift DiMo von der Verlags­gesellschaft Bahn.


CRC aus der UID

Nicht jeder hat LocoNet, aber die meisten Mo­dellbahner ha­ben S88. S88 ist im Prinzip ein Schie­be­­re­gister, das par­al­lel mit bis zu 512 Bits an Informationen geladen wird. Nach dem La­den werden die Bits mit einem Takt wie­der­holt um eine Stel­le in Rich­tung Zen­tra­le ge­scho­ben. Spä­tes­tens nach 512 Takt­sig­nalen ist al­les einge­lesen und wird der Zyklus Laden mit an­schließen­dem Schie­ben wie­der­holt. Nun 5 oder 7 Byte als 40 oder 56 Rück­mel­de­bits – nur für einen RFID-Le­ser – zu über­tragen, wür­de einen re­la­tiv großen Teil der S88 Kapa­zität be­an­spruchen. Nur wenige Le­se­­stel­len wären möglich ge­wesen. Die Daten­menge wur­de darum von 56 auf 16 Bit reduziert. Es wurde nicht mehr die 5 oder 7 Byte der UID, son­dern die CRC16 aus diesen 5 oder 7 Byte gesendet. Die Chance, aus zwei unter­schied­lichen Tags die­selbe CRC16 zu be­rech­nen, ist zwar gegeben, aber äu­ßerst ge­ring. Das oberste Bit 15 diente als Trigger für die Mo­dellbahn­soft­ware, bzw. für die Zen­trale. Wur­de Bit 15 lo­gisch 1, dann muss­te aus den ver­blie­ben­en 15 Bits durch Addieren der Wer­tig­keit­en (1, 2, 4, 8, 16, usw.) die ur­sprüng­li­che Lokomotiv-ID wieder be­rech­net wer­den. S88 war da­bei nicht das Pro­blem, sondern eher die Be­las­tung der Zen­trale oder der PC-Soft­ware.
Die Nutz­in­for­ma­tion wurde spä­ter auf 14 Bit reduziert und eigens dafür aus der UID der Tags eine CRC 14 berechnet. Das Bit 15 blieb Strobe Bit und mit Bit 14 konn­te die Auf­gleis­richtung übertragen werden.


RC-Link und RC-Talk Protokoll

Mit der Freigabe des RC-Talk-Protokolls durch die Firma Tams und unter Zuhilfenahme des RC-Link-Moduls (eben­falls Tams) bestand nun auch die Möglich­keit, die CRC 14 mit Richtung­s­bit direkt in einen PC zu über­tragen. Dazu musste le­dig­lich das RC-Link Modul mit in die PC-Soft­ware ein­ge­bunden werden. Die RFID Infor­­mation wurde also genauso be­han­delt wie eine RailCom Nach­richt, die eben­falls eine ID und eine Auf­gleis­richtung bein­haltet. Modell­bahner ohne PC konnten das Verfahren leider nicht verwenden und waren weiter auf S88 an­ge­wiesen.
Einen Nachteil dieser CRC14 Methode sollte man nicht ver­schwei­gen. Die CRC wird mathe­matisch ge­ne­riert und das Ergebnis hat mit der Bau­reihe oder der Katalog­nummer der Ziel­lokomotive nichts zu tun. Schöner wäre es doch, wenn man die ID so anpassen könnte, dass die Zugehörigkeit zu einer Baureihe offensichtlich ist. So könnte man für eine Baureihe 64 z. B. die ID 6402 verwenden, genauso wie man auch die DCC Adresse festlegen würde.


Tags beschreiben

Auf der Basis eines Arduino UNO mit einem RFID Shield (RFID-S88-Light – leider ver­grif­fen) wurde einen RFID-Writer gebaut und pro­grammiert (Abb. 3). Er ist für die Tags der Type NTAG 2 oder Mifare Ultralight gedacht. In der Abbildung oben ist ein Tag vom Typ NTAG 213 Midas 12 x 19 mm abgebildet, der sehr gut unter einem H0 Fahrzeug passt. Die Tags sind selbstklebend und werden wie Etiketten auf Papier­strei­fen geliefert. Die kleinere Variante misst ca. 7 x 20 mm, ist ebenfalls selbstklebend und mit einer Fer­rit­folie auf der Rückseite aus­ge­stat­tet. Dadurch sind diese Tags bes­ser geeignet für Montage auf me­tal­li­schen Ober­flächen. Sie werden nicht auf Träger­folie, sondern als Schüttgut geliefert.

Abb. 1 – NTAG213
Abb. 2 – NTAG 203
Abb. 3 – Dieser RFID-S88-Light Leser wird als Tag-Writer verwendet

Der Tagwriter ist auch ohne RFID-S88-Light-Shield relativ einfach aufzubauen

Die Software

Die Software wird mit dem Serial Monitor der Arduino IDE oder einem beliebigen Ter­mi­nal­pro­gramm bedient. Die Baudrate und COM Parameter werden auf 115200 Baud und 8N1 ein­ge­stellt. Der für den Arduino Uno im PC belegten COM Port wird in der Arduino Ent­wick­lungs­um­ge­bung unter „Werkzeuge“ ausgewählt (Abb. 4). Werden da mehrere Ports angeboten, kann man sich im Windows Geräte-Manager (Abb. 5) ansehen, welcher Port verschwindet und wieder erscheint, wenn man den Uno aus- und wieder einstöpselt.

Abb. 4 – Die Arduino IDE zeigt den verwendeten Port an
Abb. 5 – Im Windows Geräte-Manager
wird der Port angezeigt

Wenn man den Arduino Tag-Writer mit dem PC neu über USB ver­bin­det oder auf den Reset Taster drückt, zeigt der Serial Monitor eine Begrüßungsnachricht an:

Abb. 6 – Begrüßungsstring im Serial Monitor
 

Legen wir nun einen Tag auf das RC522 Lesemodul, zeigt der Serial Monitor die UID des Tags in hexa­de­zi­ma­ler und in dezimaler Form an. Wird der Tag für die LocoNet Applikation in Rocrail verwendet, kann man hier die dezimale Darstellung mit Copy-and-Paste in die Roc­­rail Software übernehmen. Für die be­ste­hen­den S88 Anwen­dungen, die den CRC14 Code benötigen, wird auch der angezeigt. In Abb. 7 sehen Sie, dass die aktuelle Fahrzeug-ID ‚3566‘ von der CRC14 übernommen wurde. Wir möchten jedoch die Fahr­zeug-ID, den LocCode, auf 6402 ändern.

Abb. 7 – die aktuellen Daten des Tags auf dem Leser

Dazu schreiben wir die gewünschte Fahrzeug-ID 6402 in die Ein­gabe­zeile des Serial Monitors und klicken auf Senden.

Abb. 8 – Der Code 6402 und die URL wurden übernommen

Der Tagwriter bestätigt die Eingabe 6402 und fordert dazu auf, eine URL einzutragen, die z. B. auf die Beschreibung des Originals der BR64 in Wikipedia oder auf die Beschreibung des Mo­dells beim Mo­­dell­bahn­herstel­ler verweist. Die Eingabe der URL ist optional. Wenn aber eine URL angegeben wird, dann sollte sie auch voll­stän­dig sein. Als Beispiel: „https://google.com“. Sie wird mit klicken auf Senden oder mit <ENTER> abgeschlossen. Mit einem weiteren Klick auf „Senden“ oder Drücken der <ENTER> Taste wird der Schreib­vor­gang gestartet. Nach er­folg­tem Schreiben wird der Anwender dazu aufgefordert, den Tag vom Leser/Writer zu nehmen.
Mit der App NXP Taginfo auf dem Smartphone kann man nun die Funktion der URL testen und sich den neuen Inhalt des Tag-Speichers ansehen:

Abb. 9 Der Inhalt des Tags nach dem Schreiben.

In den Blöcken 1 und 2 finden Sie die UID des Tags wieder. In Block 4 ist die Fahrzeug-ID mit 19 02 (hex) enthalten. Umgerechnet in de­zi­maler Darstellung entspricht das 6402. Weiter unten ab Block [07] ist ein Link auf diesen Beitrag enthalten. Wenn man die App NXP Taginfo nicht startet und den Tag ans Smart­phone bringt, ruft der Browser diese Seite auf.


Nachbauen des Tagwriters
Firmware für Arduino UNO als Tagwriter (in .hex umbenennen)
Schaltbild für die Verdrahtung ohne RFID-S88-Light Shield

© 2020 – 2023 Gerard Clemens – letzte Aktualisierung 29.07.2023