Just sharing a simple, neat and fun RFID train project we are doing at our AGHR club that worked out really well. Basically we built a nice public display that shows who's currently running what in our club.
To accomplish this, I first bought this simple to use RFID reader breakout board (IDXreader) and this reader (RFID) from sparkfun and mounted it under the mainline track between our train setup room and layout. The way our layout is setup, every train has to go over it every time it goes around the layout (somewhere between 3-5 min per loop). You have to break off the track ties otherwise the distance to the bottom of the engine is a bit too much. The reader with the breakout board becomes a little module that spits out a 10-byte ASCii code over USB (an FTDI virtual com port type thing). It's powered off the USB (A micro connector) so you don't need to run power or anything. They make an ID3,ID12, and ID20. I tried all, but it seems the ID20 works best since the radiated power is a little higher so the range is better.
Then we put RFID tags on the bottom of some of our engines (eventually we will do all of them). Originally I glued them on the bottom of the trucks but the reader couldn't detect them. I think the electromagnetics from the motor are the problem, the reader is 125KHz so maybe the chopping circuit for the motor has a harmonic in the same range. These are the tags we're using (TAG). Once I moved them out by the coupler it all works fine, even at like 80-90 SMPH.
Third we put up a nice 43" screen (rewards of an early start on Black Friday) that's driven by a raspberry PI3. The RFID reader goes into the USB port on the pi3. We wrote a simple C program (like gcc ANSI C) that just cycles a bunch of ppt slides on the screen with info about our club and events going on and stuff.
As part of the C program, when the reader detects a train it adds a slide to the slideshow cycle that says "running now" and gives the engine name, road number, who's train it is, a nice picture, and a chunk of wikipedia-like text describing the engine. Also in the C program a counter keeps track of the last time the reader saw that train. If it exceeds 15 min the slide is then dropped from the slideshow cycle. This way the members don't need to do anything extra to have the train appear when they are running and disappear when they leave.
Anyways, it looks pretty sharp, it's very robust, and not too complicated to implement.